收藏
回答

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

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

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

4 个回答

  • momo
    momo
    2022-10-27

    现在只要支付完成,直接返回不点确定按钮也会执行回调

    2022-10-27
    有用
    回复
  • 清茶浊酒。
    清茶浊酒。
    2019-08-19

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

    2019-08-19
    有用
    回复 3
    • fazhonghu
      fazhonghu
      2020-02-27
      这并不是个问题
      支付完,是否成功支付了,不应该由小程序去告诉服务器
      楼主在fail来处理也是在强行乱来
      官方推荐的方法是可以看下(支付结果通知)https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_7&;index=8
      2020-02-27
      回复
    • 971112
      971112
      2021-06-08回复fazhonghu
      这个查询支付结果的接口 我放在哪里 放在success的回调里?
      2021-06-08
      回复
    • 土爷
      土爷
      2022-06-30回复fazhonghu
      这就是个大问题。你想一下支付成功后如果我需要清空客户端的cookie,只要用户不点完成,我们就没法执行?当然也有解决方案,那就是后台用websocket来通知客户端清空,但这多麻烦?
      2022-06-30
      回复
  • moonsam®
    moonsam®
    2018-10-15




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

    2018-10-15
    有用
    回复 2
    • KuikuiLi-
      KuikuiLi-
      2021-03-17
      2021年了,我也有这个问题,这个问题解决了吗?可以传授一下吗?
      2021-03-17
      回复
    • 土爷
      土爷
      2022-06-30回复KuikuiLi-
      可以设置一个回调网页地址,支付成功之后,微信会自动推送支付情况给你的地址,但是前端这个非常麻烦,客户不点完成就没有把把完成前端的回调
      2022-06-30
      回复
  • 皇甫旭
    皇甫旭
    2018-10-15

    解决了吗,怎么解决的啊

    2018-10-15
    有用
    回复 6
    • 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
      回复
    • 郭玉峰 15811200580
      郭玉峰 15811200580
      2018-11-22回复moonsam®

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

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

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

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


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

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

      2018-12-11
      回复
    查看更多(1)
登录 后发表内容