收藏
回答

wx.openBusinessView中fail回调时出现fail cancel,是什么原因?

使用wx.openBusinessView拉起支付分小程序时,日志中每天发现一百多条 错误;这个错误我在测试环境没能重现。

{"errCode":-3,"errMsg":"openBusinessView:fail cancel"}


根据后端描述/日志,这种情况收到了微信返回确认支付分的回调消息!!?

请问,这个错误的具体场景是什么?如何复现?最重要的是,可能出现报此错误的情况下收到微信的「用户确认」回调吗?

wx.openBusinessView({
  businessType: 'wxpayScoreUse',
  extraData,
  success: (res: any) => {
    // res = { errMsg: "openBusinessView:ok",errCode:0, extraData: { appId:'',query_id:'' } }
    const { query_id } = res.extraData || {}
    if (query_id) { // 有query_id说明是授权成功
      resolve(res)
      return
    }
    uni.showToast({
      title: '已取消',
      icon: 'error',
      duration: 2000,
    })
    reject(res)
  },
  fail: (err: any) => { 
// 这里收到错误 {"errCode":-3,"errMsg":"openBusinessView:fail cancel"}
  if (err.errMsg === 'openBusinessView:fail another navigation is in progress') {  
      uni.showModal({  
        title: '提示',  
        content: '正在授权中,请勿重复提交!',
        showCancel: false,
        success: () => {
          const url = '/pages/index/index'
          if ((uni as any).restartMiniProgram) {
            (uni as any).restartMiniProgram({ path: url })
          } else {
            (uni as any).exitMiniProgram()
          }
          reject(err)
        }
      })
      return
    }
    reject(err)
  }
})


最后一次编辑于  03-15
回答关注问题邀请回答
收藏

1 个回答

  • Memory
    Memory
    03-14

    “有query_id说明是授权成功”,真6啊,判断支付分订单创建成功是以查询和通知为准的,你这依赖前端?

    03-14
    有用
    回复 5
    • 阿白
      阿白
      03-14
      这个是粗略判断为【授权没失败】,最终结果还是以 服务端收到微信回调消息为准的
      03-14
      回复
    • 阿白
      阿白
      03-14
      fail回调里的这种类型失败有遇到过吗,文档翻了圈也没找到解释,服务端又说这种情况微信又回调了确认的消息,所以比较懵
      03-14
      回复
    • Memory
      Memory
      03-14回复阿白
      正常情况,前端没有办法100%保证正确,所以你不能依赖这里判断
      03-14
      回复
    • 阿白
      阿白
      03-14回复Memory
      确实,这里也只是在反向排除掉确定失败的情况;判断还是走回调的
      03-14
      回复
    • Memory
      Memory
      03-14回复阿白
      前端有很多种情况都会导致前端报失败实际成功的情况
      03-14
      回复
登录 后发表内容