收藏
回答

微信商家转账,JSAPI掉起用户确认收款前端报错

报错system:access_denied,是签名配置不对吗,还是哪里的配置有问题,在微信客户端的浏览器中打开的

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

2 个回答

  • 支付社区运营
    支付社区运营
    02-04

    不支持内嵌webview,你好请问是小程序内直接拉起确认页面的吗https://pay.weixin.qq.com/doc/v3/merchant/4012716430

    02-04
    有用
    回复
  • Memory (私信不回复)
    Memory (私信不回复)
    02-03

    这报错是没有权限

    02-03
    有用
    回复 4
    • ---
      ---
      02-03
      哪里没有权限,我发起转账已经成功了,state为等待用户确认,我这里为啥调用不起来,有没有排查流程呀。这个JSSDK-api:
      requestMerchantTransfer
      02-03
      回复
    • Memory (私信不回复)
      Memory (私信不回复)
      02-03回复---
      贴代码
      02-03
      回复
    • ---
      ---
      02-03
      window.wx.config({
            debug: WX_DEBUG,
            appId,
            timestamp: signData.timestamp,
            nonceStr: signData.noncestr,
            signature: signData.signature,
            jsApiList: ['requestMerchantTransfer']
          })


          window.wx.ready(() => {
            clearTimeout(timeout)
            if (settled) return
            console.log('[微信转账] 8. wx.ready 已触发,开始 checkJsApi')
            const checkApiTimeout = setTimeout(() => {
              if (settled) return
              settled = true
              console.error('[微信转账] checkJsApi 5 秒内未回调,当前非微信内置浏览器时会出现此情况')
              reject(new Error('未检测到微信环境,请用手机微信打开此页面再试'))
            }, 5000)
            const doneReject = (err) => {
              clearTimeout(checkApiTimeout)
              once(reject)(err)
            }
            window.wx.checkJsApi({
              jsApiList: ['requestMerchantTransfer'],
              success(res) {
                const supported = res.checkResult && res.checkResult.requestMerchantTransfer
                console.log('[微信转账] 9. checkJsApi success', { checkResult: res.checkResult, requestMerchantTransfer: supported })
                if (supported) {
                  clearTimeout(checkApiTimeout)
                  if (typeof window.WeixinJSBridge === 'undefined') {
                    console.error('[微信转账] WeixinJSBridge 不存在,当前环境非微信内置浏览器')
                    doneReject(new Error('请在微信内打开此页面完成转账'))
                    return
                  }
                  console.log('[微信转账] 10. 调起 WeixinJSBridge.requestMerchantTransfer')
                  // window.WeixinJSBridge.invoke(
                  // 'requestMerchantTransfer',
                  // {
                  // mchId,
                  // appId,
                  // package: packageInfo
                  // },
                  // (wxRes) => {
                  // console.log('[微信转账] 11. requestMerchantTransfer 回调', wxRes)
                  // if (wxRes && wxRes.err_msg === 'requestMerchantTransfer:ok') {
                  // once(resolve)()
                  // } else {
                  // once(reject)(new Error((wxRes && wxRes.err_msg) || '转账调起失败'))
                  // }
                  // }
                  // )
                  wx.invoke('requestMerchantTransfer', {
                      mchId: mchId,
                      appId: appId,
                      package: packageInfo
                  }, function(res) {
                      console.log('[微信转账] requestMerchantTransfer 回调', res);
                      if (res.err_msg === 'requestMerchantTransfer:ok') {
                          // 成功调起确认页面
                          resolve();
                      } else {
                          // 调起失败:res.err_msg 可能是 'fail' 或 'cancel'
                          reject(new Error(res.err_msg || '转账调起失败'));
                      }
                  });
                } else {
                  console.warn('[微信转账] requestMerchantTransfer 不可用(仅支持微信内置浏览器)')
                  doneReject(new Error('当前微信版本过低或未在微信内打开,请用手机微信打开此页面'))
                }
              },
              fail: (err) => {
                console.error('[微信转账] checkJsApi fail', err)
                doneReject(err || new Error('checkJsApi 失败'))
              }
            })
          })


          window.wx.error((err) => {
            clearTimeout(timeout)
            console.error('[微信转账] wx.error 触发(config 失败)', err)
            once(reject)(err || new Error('wx.config 失败'))
          })
        })
      }
      02-03
      回复
    • ---
      ---
      02-03
      麻烦帮忙看一下
      02-03
      回复
登录 后发表内容