收藏
回答

究竟requestpayment的回调函数是不是有bug,如果不点完成,真的不走success回调吗

究竟requestpayment的回调函数是不是有bug,如果不点完成,真的不走success回调吗

回答关注问题邀请回答
收藏

2 个回答

  • 易
    2020-09-29

    这个不是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,
          },
          successres => {
            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(),因为开发工具无法感知手机的”完成“按钮的操作。




    2020-09-29
    有用
    回复
  • 微信支付技术助手8
    微信支付技术助手8
    2020-04-07

    要点击按钮后才会执行success,其实这一步主要也是用于支付成功跳转和特殊提示

    2020-04-07
    有用
    回复 1
    • 优雅的绅士
      优雅的绅士
      2023-03-06
      为啥点了完成也没有执行回调呢
      2023-03-06
      回复
登录 后发表内容
问题标签