收藏
回答

requestPayment 必须点击完成,才能执行success

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug requestPayment 客户端 6.5.3 2.3.0

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,(比如支付完成了,不点击 完成那个按钮,而是直接退出了小程序),那么这样就存在钱已经支付了,但是,无法更新数据的支付状态。

最后一次编辑于  2018-10-14
回答关注问题邀请回答
收藏

3 个回答

  • 清茶浊酒。
    清茶浊酒。
    08-19

    这么严重的问题,这么久了都不见微信官方给个解决方案

    08-19
    赞同
    回复
  • moonsam®
    moonsam®
    2018-10-15




    就像这种,我如果不点完成,而是直接退出了微信。钱还是支付成功了,但是,程序获取不到 SUCCESS 或者 compete 了。。。怎么解决。

    2018-10-15
    赞同
    回复
  • 皇甫旭
    皇甫旭
    2018-10-15

    解决了吗,怎么解决的啊

    2018-10-15
    赞同
    回复 5
    • moonsam®
      moonsam®
      2018-10-15

      没有啊。可能唯一的做法,就是在 fail 里面也做记录,把每一条数据都记录下来,然后晚上再去做一个同步?

      2018-10-15
      回复
    • 皇甫旭
      皇甫旭
      2018-10-15回复moonsam®

      我以为小程序支付不用回调了,现在看 还得再后端回调

      2018-10-15
      回复
    • moonsam®
      moonsam®
      2018-10-15回复皇甫旭

      现在解决了。直接在fail里面做一个支付查询    https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_2

      2018-10-15
      回复
    • 郭玉峰
      郭玉峰
      2018-11-22回复moonsam®

      这种问题正确的处理方式是用 notify_url 来处理吧

      支付完成 小程序有回调,支付完 微信服务器也会向notify_url来推送一个结果

      每次回调的时候 去判断一下这个订单是否支付成功,未成功,修改状态,成功了就不修改了

      保证后台数据库的订单状态是对的就行了


      2018-11-22
      回复
    • 杭成龙-neohang
      杭成龙-neohang
      2018-12-11回复moonsam®

      用户直接关闭微信,你不可能调用到fail

      2018-12-11
      回复