收藏
回答

H5使用JSAPI调起支付,在外部浏览器无法跳转到微信app,无法调起支付,怎么解决

示例代码:

<template>
  <div>
    <button @click="go">跳转</button>
  </div>
</template>
<script>
import { jsSDK } from '@/libs/wxjs.js'
export default {
  methods: {
    go () {
      let r = {
        'appId': 'xx',
        'nonceStr': 'xx',
        'package': 'xx',
        'paySign': 'xx',
        'signType': 'MD5',
        'timeStamp': 'xx'
      }
      let opthions = {
        appId: r.appId,
        timeStamp: r.timeStamp,
        nonceStr: r.nonceStr,
        package: r.package,
        signType: r.signType,
        paySign: r.paySign
      }
      jsSDK(opthions)
    }
  }
}
</script>


export function jsSDK (params) {
  if (typeof WeixinJSBridge === 'undefined') {
    if (document.addEventListener) {
      document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false)
    } else if (document.attachEvent) {
      document.attachEvent('WeixinJSBridgeReady', onBridgeReady)
      document.attachEvent('onWeixinJSBridgeReady', onBridgeReady)
    }
  } else {
    onBridgeReady(params)
  }
}
function onBridgeReady (params) {
  WeixinJSBridge.invoke(
    'getBrandWCPayRequest', {
      'appId': params.appId, // 公众号ID,由商户传入
      'timeStamp': params.timeStamp, // 时间戳,自1970年以来的秒数
      'nonceStr': params.nonceStr, // 随机串
      'package': params.package,
      'signType': params.signType, // 微信签名方式:
      'paySign': params.paySign // 微信签名
    },
    function (res) {
      if (res.err_msg === 'get_brand_wcpay_request:ok') {
        console.log('---')
      } else {
        console.log('---')
      }
    })
}


这样在微信app内部可以正常跳转,但是用safari或者其他浏览器,点击【跳转】按钮, 没有反应

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

2 个回答

  • Memory (私信不回复)
    Memory (私信不回复)
    2023-07-03

    H5需要使用H5支付而不是JSAPI支付,JSAPI支付仅适用于微信浏览器内

    2023-07-03
    有用 1
    回复
  • Joe
    Joe
    2023-08-02

    后面怎么处理了

    2023-08-02
    有用
    回复
登录 后发表内容