前言:虽然小程序做过很多,但是一直觉得微信支付功能很是神秘,现在终于有机会接触心里还是有点小激动的,经过一番折腾发现支付也不过如此,在此记录下支付功能的实现过程

小程序的官方文档介绍到发起微信支付即调用API wx.requestPayment(Object object)

wx.requestPayment({
timeStamp: '',
nonceStr: '',
package: '',
signType: 'MD5',
paySign: '',
success(res) { },
fail(res) { }
})

看到这是不是一脸懵逼,这些参数从何而来?

那么先来看一下官方给出的业务流程时序图,小程序支付交互如下图:

根据实现过程,我将它划分成如下六个模块进行讲解,

1、下单:

这里是用户与页面交互,例如点击付款按钮,触发支付交互

2、向后端发出支付请求

通过接口请求给后端系统提供参数:商品ID,总价totalPrice

3、后端系统与微信服务进行交互,换取参数

后端系统得到微信返回的相关数据后,经过解密处理返回前端需要的相关参数,即wx.requestPayment()需要的相关参数

4、发起微信支付

5、微信服务返回支付的结果

根据微信返回的结果(成功或失败),前端做出对应的提示

6、微信服务把支付结果通知给后端系统

这里就是后端的事情了,和前端不相干

最后附上代码思路如下

  /**
*
* @param {string|number} id 订单ID
* @param {string|number} totalPrice 订单总价
*/
pay(id,totalPrice){
wx.request({
url: 'https://xxxxxxxxx',
data: {
orderId: id,
orderPrice:totalPrice
},
success:res => {
wx.requestPayment({
timeStamp: res.data.timeStamp,
nonceStr: res.data.paySign,
package: res.data.paySign,
signType: 'MD5',
paySign: res.data.paySign,
success(res) {
console.log('支付成功')
},
fail(res) {
console.log('支付失败')
}
}) },
fail:err => {
console.log('接口请求出错')
}
})
}

最新文章

  1. hdu 4006 The kth great number(优先队列)
  2. HDU2222
  3. imx6 KEY_ROW4 power output high fail
  4. left join测试验证之一
  5. uva 101 POJ 1208 The Blocks Problem 木块问题 vector模拟
  6. 当年的笔记_apache配置虚拟主机
  7. Java - 正则表达式常用操作
  8. Qt自定义菜单项
  9. 就要从SDG离职了
  10. JS中==和===的区别
  11. [java bug记录] java.util.zip.ZipException: invalid code lengths set
  12. vue开发体验
  13. hdu1573-X问题
  14. Unslider Web前端框架之图片轮播
  15. android RecycleView Adapter简单封装
  16. Codeforces 781E Andryusha and Nervous Barriers 线段树 单调栈
  17. Java创建WebService
  18. 服务器重启可能会导致SQL Server中部分数据库变为single user mode
  19. SQL Server自动备份 备份到本地或者远程服务器
  20. 20135323符运锦----第三周:构建一个简单的Linux系统MenuOS

热门文章

  1. vimiumC的下载、配置与节点个性化
  2. numpy添加新的维度
  3. redis学习(二)
  4. kafka之config/server.properties配置参数说明
  5. 使用CyclicBarrier+线程池,按总页数分批次开多线程执行逻辑
  6. JS之理解继承
  7. Intellij IDEA关闭 Build窗口提示
  8. getopt_long函数解析命令行参数
  9. 常用的 Python 标准库都有哪些?
  10. 通过编写串口助手工具学习MFC过程——(四)添加ComboBox组合框