收藏
回答

支付成功后,必须重启才能正常进行下一次支付?提示缺乏total fee,而且整个代码换掉问题还有

实在想不通了,我本来使用的这个统一下单接口 https://api.mch.weixin.qq.com/pay/unifiedorder 和其相应的代码。

昨天忽然发现,小程序支付成功一次之后,再支付就会报错“缺乏total fee”。如果取消支付,反复下单是没问题的,但只要支付成功一次之后,就不行了。看返回值可知,第一次支付过后,再下单无法获得prepayid了,所以调起支付这步会出错。必须重启小程序才能重新下单。

但经过反复排查,不认为是代码问题,因为同样的逻辑,在我另外的小程序上没有任何问题。

抱着这样迷茫的状态,我今天干脆将支付方法改了。使用官网上目前的v3版本 https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi 这个作为支付方法。

结果,还没等我把最后一步“支付通知”写完,在搞定了下单和调起支付之后,这个问题居然复现了。

我补充说明一下:不存在out_trade_no的重复问题,可以排除这方面的错误可能。


而且,我昨天下午短暂的发现,这个bug消失了,可以正常连续支付了。但是过了阵子又不行了,所以,会不会是我的这个特定的小程序遇到的问题。


另外,我今天还发现一个问题,不知道大家碰到过没有。我今天在第一步下单时,返回prepayid等json数据时发现,小程序(主要是编辑器,手机端不确定)把该段数据有时候读作json,有时候读作string。变化往复,没找到规律。

怀疑是不是受到了paySign值里多变的字符的影响?也不应该呀。哎,反正目前主要是想解决标题里讲到的这第一个问题。请帮帮我吧,不知道大家遇到过这种情况吗?

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

2 个回答

  • 河南同城信息圈~互动信息圈
    河南同城信息圈~互动信息圈
    06-20

    闹笑话了,原来问题在我自己,我最近的一个改动,在支付后会更新缓存,把关键的一个缓存值给改丢了。

    之所以还出现过所谓“下午短暂恢复”的假象,估计是当时测试的运行端暂时没被错误覆盖。

    果然遇到问题还是容易归咎于自身的事外,还是得多多冷静的思考和排查。

    06-20
    有用
    回复
  • Memory
    Memory
    06-19

    要先查一下日志,在你调起支付失败时,下单是否成功

    06-19
    有用
    回复 1
    • 河南同城信息圈~互动信息圈
      河南同城信息圈~互动信息圈
      06-20
      你说对了,朋友!!今天早上,刚刚把层层传输返回值记录发现,是我最近的一个改动,产生的这个bug。我支付后更新了缓存,把一个值给改丢了,感谢。
      06-20
      回复
登录 后发表内容