本文背景
在看本文之前需要您要对云开发微信支付有一定了解
本文内容
云开发接入微信支付,需要两个云函数,
(1)云函数1
(2)云函数2
第二个云函数是支付成功的回调,我的问题在这里,在第一个云函数成功后,小程序端拿到云函数结果,调用 wx.requestPayemnt 发起支付,
wx.requestPayemnt 本身是有success回调的,具体便是在支付完成后,点击那个完成的按钮时触发,那么我们具体更新当前支付状态,是这个success回调里面还是在第二个云函数异步回调里面
~
具体success回调的触发场景如下图所示,需要点击下面的完成按钮
参考文档
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/wechatpay.html
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/payment/wx.requestPayment.html
以下内容摘录自官方文档
下单关键开发流程:
小程序调用云函数,在云函数中调用统一下单接口,参数中带上接收异步支付结果的云函数名和其所在云环境 ID
统一下单接口返回的成功结果对象中有 payment 字段,该字段即是小程序端发起支付的接口(wx.requestPayment)所需的所有信息
小程序端拿到云函数结果,调用 wx.requestPayemnt 发起支付
支付完成后,在统一下单接口中配置的云函数将收到支付结果通知
社区帖子
wx.requestPayment()的success回调问题?? - 微信开放社区 https://developers.weixin.qq.com/community/develop/doc/000888538742d0bd2cc96717b5b000
wx.requestPayment( ) success回调函数,需要点完成执行?? - 微信开放社区 https://developers.weixin.qq.com/community/develop/doc/00088cba07c1689c155a9b3755b800
云函数支付,统一下单,functionName:pay_cb 返回支付成功信息,怎么传回小程序 ?? - 微信开放社区 https://developers.weixin.qq.com/community/develop/doc/000088a35ec2883b807af6d4a56800
本文总结
这两种回调具体就是前端回调还是后端回调的问题,
(1)前端回调有个问题,如果用户在支付完成后,没有点完成按钮,这个时候的支付状态便不会更新;
(2)后端回调在支付回调后,一定会触发的;
从这个角度分析,在第二个云函数里面,执行更新逻辑是严谨的。
目前得出的最优方案就是前端回调可以更新支付记录,但是云函数的异步回调也是要用来作为备用的检测用的,二者结合是完美的方案