小程序 微信支付记录

271 阅读2分钟

微信支付的流程主要分为两大块,统一下单支付,当前端点击支付时,首先会调用后端接口,进行预下单,也就是将当前需要支付的商品信息告诉微信,然后微信生成一个预下单的订单,返回给我们的后端,后端会对返回的结果进行签名,将签名后的信息返回给前端。

然后前端就可以调用 微信支付的接口wx.requestPayment,将后端返回的参数填充到微信支付的方法中。

我们使用的是 v2的文档,v3对于普通商户来说目前是不支持退款操作的(不过明年好像就支持了)

统一下单

这里的下单是指后端调用接口在 微信支付服务后台生成预支付交易单, 然后将预支付交易单进行处理,最终返回到前端的就是 wx.requestPayment 中所需的参数了。

统一下单官方链接

支付

当后端预下单成功后,将返回的参数注入到 wx.requestPayment 当中,发起微信支付。 参数如下:

这里需要注意一下:package 这个字段,需要拼接上prepay_id=, 而且后端签名时 也需要加上

遇到的坑

  • 在调试的过程中发生了多次支付时签名验证失败,这是由于后台的签名不正确,后面通过 这篇文章解决
  • wx.requestPayment 中的参数都是由后端传递回来的,因为后端签名时使用的到这些字段,如果前端传递的与后端不一致 将会导致 签名验证失败,比如 nonceStr 这个字段,后端签名时就使用到了,如果前端传递的值与后端签名时不一致 就会导致签名失败