虽然我们现行的小程序版本中没有支付这块功能,但是作为移动互联网中非常重要的一个功能还是需要了解下(老版本的小程序中有微信支付相关的功能代码在serviceList.js中)。
微信支付的整体流程对于JSAPI,JSSDK,小程序中都大同小异,核心流程都是一致的。我们以小程序下的微信支付为例进行说明。
官方的业务流程时序图如下:
商户系统和微信支付系统主要交互:
1、小程序内调用登录接口,获取到用户的openid,api参见公共api【小程序登录API】
2、商户server调用支付统一下单,api参见公共api【统一下单API】
3、商户server调用再次签名,api参见公共api【再次签名】
4、商户server接收支付通知,api参见公共api【支付结果通知API】
5、商户server查询支付结果,api参见公共api【查询订单API】
上述5个步骤是来自微信官方文档
对于小程序来说这并不准确,实际流程如下:
a. 小程序登录
b. 小程序请求后台服务器下单支付
c. 后台服务器调用支付统一下单,获取prepay_id
d. 后台服务器再次签名后返回prepay_id等支付参数给小程序
e. 小程序带着prepay_id等支付参数调起微信支付
f. 小程序获取支付结果
g. 服务器获取微信支付后台给的支付结果
h. 服务器查询支付结果
上述流程中特别需要注意的是:小程序中调起微信支付产生的结果并不是最终的支付结果,服务器获取到的结果才是最终结果。
2. 参考资料
1.微信支付文档https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_3&index=1
2. 小程序发起微信支付
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/payment/wx.requestPayment.html