![1538e3379eb7afe5a8becc47d03ecf02.png](https://i-blog.csdnimg.cn/blog_migrate/f52eecfa785f4b2095fee221117d4592.jpeg)
今天有个朋友问我小程序微信支付的事儿,因为以前没做过,所以就抽时间了解一下文档,看看能不能帮上这位朋友。发现小程序支付和jsapi还有jssdk的支付非常类似(文档也这么说了)。
![2958e2f171320ef98220d56264d15584.png](https://i-blog.csdnimg.cn/blog_migrate/2a57925b922638a8f442d0a4558745ad.jpeg)
所以呢,就写了一份简单的说明给朋友发过去,内容如下:
- 获取订单信息:例如价格(total_fee),订单号(out_trade_no)这些字段,发送给服务器。
2. 服务器根据所有必要字段生成签名:字段包括appid,openid,total_fee,out_trade_no这些等等,如下所示:
{
appid: config.appId,
sub_appid: config.sub_appid,
body: body,
mch_id: config.mchId,
sub_mch_id: config.sub_mch_id,
nonce_str: Math.random().toString(36).substr(2, 15),
notify_url: notify_url,
openid: openid,
out_trade_no: out_trade_no,
spbill_create_ip: spbill_create_ip,
total_fee: total_fee,
trade_type: 'JSAPI'
}
3. 网上有各种语言的签名算法,成功获取签名之后,继续。
4. 再把2中的字段和3中生成的签名放在一起,转换成xml格式,发送给统一下单接口。
5. 统一下单接口:https://api.mch.weixin.qq.com/pay/unifiedorder
6. 统一下单接口会响应一个xml格式的数据,其中包括一个prepay_id字段,这个是调取支付需要的字段。
7. 然后再用prepay_id等字段,再用签名算法生成一个签名,字段如下所示:
{
appId: config.appId,
timeStamp: new Date().getTime(),
nonceStr: Math.random().toString(36).substr(2, 15),
package: `prepay_id=${prepay_id}`,
signType: 'MD5',
}
8. 然后把数据7中的字段和签名发送给小程序(前端)。
9. 小程序调用支付接口:所有必要字段在第8步已经获取到了
wx.requestPayment(
{
'timeStamp': '',
'nonceStr': '',
'package': '',
'signType': 'MD5',
'paySign': '',
'success':function(res){},
'fail':function(res){},
'complete':function(res){}
})
写着写着东西就多了,所以就发到知乎上,看看能不能帮到更多的朋友。
有问题也可以留言一起沟通。