前言
之前系統內做過要給微信支付程式,只不過鑑於業務應用場景,大部分都是使用業務內的金幣兌換產品,沒有實際用到支付功能。後來運營小哥哥說他的手機不能喚起支付。於是乎我查詢了一下資料,發現了這麼個問題。
問題原因
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(); }
總結
微信公眾號支付或多或少因為環境問題會導致其他問題,做測試還是要做全面啊~~~