微信公眾號支付IOS系統能夠喚起,安卓系統不能喚起的問題解決

丶Pz發表於2018-05-14

前言

  之前系統內做過要給微信支付程式,只不過鑑於業務應用場景,大部分都是使用業務內的金幣兌換產品,沒有實際用到支付功能。後來運營小哥哥說他的手機不能喚起支付。於是乎我查詢了一下資料,發現了這麼個問題。

問題原因

  WeixinJSBridge 沒有完全載入完畢,導致 WeixinJSBridge.invoke('getBrandWCPayRequest') 不能夠正常觸發。但是IOS裡可能是載入比較快或者其他原因,沒有問題,安卓手機就比較隨機,十次中有一次能夠喚起支付密碼框。

問題解決

  

 function onBridgeReady() {
                            WeixinJSBridge.invoke('getBrandWCPayRequest',
                                {
                                    "appId": addRes.app_id, //公眾號名稱,由商戶傳入
                                    "timeStamp": addRes.time_stamp, //時間戳,自1970年以來的秒數
                                    "nonceStr": addRes.nonce, //隨機串
                                    "package": addRes.package,
                                    "signType": addRes.sign_type, //微信簽名方式:
                                    "paySign": addRes.sign //微信簽名
                                }, function (res) {
                                    // 使用以上方式判斷前端返回,微信團隊鄭重提示:res.err_msg將在使用者支付成功後返回ok,但並不保證它絕對可靠。
                                });
                        }
                        //這裡是關鍵,如果JSBridge是undefined那麼需要等待載入完畢在喚起支付,否則喚起失敗
                        if (typeof WeixinJSBridge == "undefined") {
                            if (document.addEventListener) {
                                document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
                            }
                        } else {
                            onBridgeReady();
                        }

  

總結

  微信公眾號支付或多或少因為環境問題會導致其他問題,做測試還是要做全面啊~~~

相關文章