小程序支付,用户在付费成功后,没有点击“完成”,就没有支付成功回调触发,只能通过notify_url来接收异步回调通知,处理流程,当然这是正常的处理流程。
以下是另类的处理流程:
1、不处理notify_url;
2、在wx.requestPayment之前,将流程进度缓存,比如wx.setStorageSync('out_trade_no',out_trade_no);
3、那么,如果用户点击了“完成”或者取消支付,则必然会触发wx.requestPayment的回调success或者fail,则清除缓存,wx.removeStorageSync('out_trade_no');
4、如果用户没有点击“完成”,则用户下次打开小程序,一定是冷启动即重启小程序,因为如果是热启动,将还是停留在支付界面,用户可以继续点击“完成”,继续业务流程;
5、因为是冷启动,所以在pages/index/index的onLoad里常驻一个进程,检查是否有支付未完成缓存,如果有,则按照out_trade_no查询订单支付状态,再继续支付流程。
以上只是另类做法,仅供参考。
虽然不符合支付的标准流程,但是可以不需要专门的进程来负责notify_url。
看着有点像APP里的检测漏单。