wx.requestPayment({
'timeStamp': timestamp,
'nonceStr': nonceStr,
'package': package,
'signType': 'MD5',
'paySign': paySign,
'success': function (res) {
//更新数据的支付状态
api.updatewxPay({
data: {shopid},
success:(res) =>{
util.showSuccess('支付成功')
wx.switchTab({
url: '../index/index',
success: function (e) {
var page = getCurrentPages().pop();
if (page == undefined || page == null) return;
page.onLoad();
}
})
}
})
},
'fail': function (res) {
console.log("payfail",res);
}
})
调试的时候,在手机上支付可以成功,但是支付完成之后,钱确实是收到了,如果不点击页面的 “完成” ,那么根本不会到达 success,(比如支付完成了,不点击 完成那个按钮,而是直接退出了小程序),那么这样就存在钱已经支付了,但是,无法更新数据的支付状态。
现在只要支付完成,直接返回不点确定按钮也会执行回调
这么严重的问题,这么久了都不见微信官方给个解决方案
支付完,是否成功支付了,不应该由小程序去告诉服务器
楼主在fail来处理也是在强行乱来
官方推荐的方法是可以看下(支付结果通知)https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_7&index=8
就像这种,我如果不点完成,而是直接退出了微信。钱还是支付成功了,但是,程序获取不到 SUCCESS 或者 compete 了。。。怎么解决。
解决了吗,怎么解决的啊
没有啊。可能唯一的做法,就是在 fail 里面也做记录,把每一条数据都记录下来,然后晚上再去做一个同步?
我以为小程序支付不用回调了,现在看 还得再后端回调
现在解决了。直接在fail里面做一个支付查询 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_2
这种问题正确的处理方式是用 notify_url 来处理吧
支付完成 小程序有回调,支付完 微信服务器也会向notify_url来推送一个结果
每次回调的时候 去判断一下这个订单是否支付成功,未成功,修改状态,成功了就不修改了
保证后台数据库的订单状态是对的就行了
用户直接关闭微信,你不可能调用到fail