收藏
回答

app微信支付失败,[payment微信:-2]User canceled,如何解决?

一开始用的V3,后面换成V2,都是这样,每次测试支付前微信也清除缓存了,大小写也和官网文档一致


前端代码

uni.requestPayment({

provider: "wxpay",

signType: "MD5",

orderInfo: {

appid: data.appid,

partnerid: data.partnerid,

prepayid: data.prepayid,

package: data.package,

noncestr: data.noncestr,

timestamp: data.timestamp,

sign: data.sign, // 签名,这里用的 MD5 签名

},


=============================================================================

后续解决了,是后端返回的时间戳的格式问题不符合要求,后面改了这个就可以了,大家可以再好好排查一下

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

3 个回答

  • Memory
    Memory
    2023-05-30

    你自己不兼容一下对应错误状态处理么

    2023-05-30
    有用 1
    回复 5
  • 小黄鸭
    小黄鸭
    2023-05-30

    根据错误提示,支付失败的原因是用户取消了支付。如果想要改进这个问题,可以考虑添加支付失败的回调函数,以便在用户取消支付时给出相应的提示和处理。

    示例代码:

    uni.requestPayment({
      provider: "wxpay",
      signType: "MD5",
      orderInfo: {
        appid: data.appid,
        partnerid: data.partnerid,
        prepayid: data.prepayid,
        package: data.package,
        noncestr: data.noncestr,
        timestamp: data.timestamp,
        sign: data.sign,
      },
      success: function (res) {
        // 支付成功的处理
      },
      fail: function (res) {
        // 支付失败或取消的处理
        if (res.errMsg == 'requestPayment:fail cancel') {
          // 用户取消支付的处理
          uni.showToast({
            title: '已取消支付',
            icon: 'none'
          })
        } else {
          // 支付失败的处理
          uni.showToast({
            title: '支付失败,请重试',
            icon: 'none'
          })
        }
      }
    })
    
    2023-05-30
    有用
    回复 1
    • 意初
      意初
      2023-06-02
      不是这个原因呢,是参数数据不对,可能是sign或者timestamp或者prepayid,但排查不出来具体是哪个参数有误
      2023-06-02
      回复
  • 一点儿
    一点儿
    2023-05-30
    easywechat
    $config = $utils->buildMiniAppConfig($prepayId, $appId, $signType);
    


    2023-05-30
    有用
    回复
登录 后发表内容