调用微信SDK,ios支付正常,安卓怎么都不发吊起支付,有时候显示正在登陆中,有时候报错缺少appid参数

问题版本

  1. fetchJsConfig () {
  2. OrderAction.fetchWxSDK()
  3. .then(data => {
  4. let params = {}
  5. params.debug = false
  6. params.appId = data.data.jsapi.appId
  7. params.timestamp = data.data.jsapi.timestamp
  8. params.nonceStr = data.data.jsapi.nonceStr
  9. params.signature = data.data.jsapi.signature
  10. params.jsApiList = ['chooseWXPay']
  11. params.url = data.data.jsapi.url
  12. wx.config(params)
  13. })
  14. .catch(err => console.log(err))
  15. },
  16. wxChooseWXPay (wxObj) {
  17. console.log('支付参数', wxObj)
  18. wxObj = JSON.parse(wxObj)
  19. wxObj.url = window.location.href
  20. Helper.jsSDK(wxObj)
  21. // wx.chooseWXPay({
  22. // nonceStr: wxObj.nonceStr, // 支付签名随机串,不长于 32 位
  23. // package: wxObj.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
  24. // paySign: wxObj.paySign, // 支付签名
  25. // signType: wxObj.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
  26. // timestamp: wxObj.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
  27. // success: function (res) {
  28. // that.$router.push('/pay/success')
  29. // },
  30. // cancel: function (res) {
  31. // that.$router.push('/pay/fail')
  32. // }
  33. // })
  34. }

调用微信沙箱环境简化函数封装(自己用,ios,安卓支付正常)

简化,官方封装修改

  1. export function jsSDK (params) {
  2. if (typeof window.WeixinJSBridge === 'undefined') {
  3. if (document.addEventListener) {
  4. document.addEventListener('WeixinJSBridgeReady', function () { onBridgeReady(params) }, false)
  5. } else if (document.attachEvent) {
  6. document.attachEvent('WeixinJSBridgeReady', function () { onBridgeReady(params) })
  7. document.attachEvent('onWeixinJSBridgeReady', function () { onBridgeReady(params) })
  8. }
  9. } else {
  10. onBridgeReady(params)
  11. }
  12. }
  13. function onBridgeReady (params) {
  14. window.WeixinJSBridge.invoke(
  15. 'getBrandWCPayRequest', {
  16. 'appId': params.appId, // 公众号名称,由商户传入
  17. 'timeStamp': params.timeStamp, // 时间戳,自1970年以来的秒数
  18. 'nonceStr': params.nonceStr, // 随机串
  19. 'package': params.package,
  20. 'signType': params.signType, // 微信签名方式:
  21. 'paySign': params.paySign // 微信签名
  22. },
  23. function (res) {
  24. if (res.err_msg === 'get_brand_wcpay_request:ok') {
  25. // 使用以上方式判断前端返回,微信团队郑重提示:
  26. // res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
  27. location.href = 'https://test.develop.privhub.com/pay/success'
  28. } else {
  29. location.href = 'https://test.develop.privhub.com/pay/fail'
  30. }
  31. }
  32. )
  33. }