小程序
小游戏
企业微信
微信支付
扫描小程序码分享
究竟requestpayment的回调函数是不是有bug,如果不点完成,真的不走success回调吗
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
这个不是bug,requestpayment的success回调()仅用用显示提示信息和页面跳转,真正的支付成功回调是在回调函数中完成的,以下是支付的实操代码:
//拉起微信支付 let payData = { "functionName": payConf.payCallBack, //支付成功调用的回调函数,主逻辑在这里 "envId": payConf.envId, "subMchId": payConf.mchid, nonceStr, "body": app.globalData.siteName, "outTradeNo": order._id, "totalFee": order.total_fee, "spbillCreateIp": "127.0.0.1", //这个就这样写,可以通过 "tradeType": "JSAPI", } console.log('payData:', payData) wx.cloud.callFunction({ name: 'wxPay', data: { payData, }, success: res => { const payment = res.result.payment console.log('payment:', payment) wx.requestPayment({ ...payment, success(res) { //支付成功后,开发工具中并不会执行success(),因为开发工具无法感知手机的“完成”按钮操作!! //在手机上测试完全正确! console.error('支付成功', res) setTimeout(function () { wx.redirectTo({ url: app.globalData.urlPayok + '?act=1', }) }, 200) }, fail(err) { //用户关闭支付窗口,不用跳转页面 console.error('支付失败', err) }, }) }, fail: (err) => { console.error('拉起微信支付失败', err) wx.navigateTo({ url: app.globalData.urlPayok + '?act=3', }) } })
还有一点测试时需要注意的是:
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
要点击按钮后才会执行success,其实这一步主要也是用于支付成功跳转和特殊提示
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
这个不是bug,requestpayment的success回调()仅用用显示提示信息和页面跳转,真正的支付成功回调是在回调函数中完成的,以下是支付的实操代码:
//拉起微信支付 let payData = { "functionName": payConf.payCallBack, //支付成功调用的回调函数,主逻辑在这里 "envId": payConf.envId, "subMchId": payConf.mchid, nonceStr, "body": app.globalData.siteName, "outTradeNo": order._id, "totalFee": order.total_fee, "spbillCreateIp": "127.0.0.1", //这个就这样写,可以通过 "tradeType": "JSAPI", } console.log('payData:', payData) wx.cloud.callFunction({ name: 'wxPay', data: { payData, }, success: res => { const payment = res.result.payment console.log('payment:', payment) wx.requestPayment({ ...payment, success(res) { //支付成功后,开发工具中并不会执行success(),因为开发工具无法感知手机的“完成”按钮操作!! //在手机上测试完全正确! console.error('支付成功', res) setTimeout(function () { wx.redirectTo({ url: app.globalData.urlPayok + '?act=1', }) }, 200) }, fail(err) { //用户关闭支付窗口,不用跳转页面 console.error('支付失败', err) }, }) }, fail: (err) => { console.error('拉起微信支付失败', err) wx.navigateTo({ url: app.globalData.urlPayok + '?act=3', }) } })
还有一点测试时需要注意的是:
支付成功后,开发工具中并不会执行success(),因为开发工具无法感知手机的”完成“按钮的操作。
要点击按钮后才会执行success,其实这一步主要也是用于支付成功跳转和特殊提示