公司產品使用支付寶移動網頁接口支付,當三方商戶傳入跳轉地址,在支付寶頁面支付成功后跳轉到該地址,如果沒傳將會自動關閉頁面。
測試的時候在ios客戶端上面可以,但是在Android客戶端上偶爾行偶爾不行。
以前代碼:
$(function(){ if('$[code]'=="00") { if('${merUrl}'!="") { window.location.href='${merUrl}'; }else{ AlipayJSBridge.call('closeWebview'); } }else{ $("#error_msg").html("支付失敗"); $("#error").show(); } }); 通過查找支付寶網頁支付的相關的js api文檔,文檔中描述當頁面加載完后會創建 AlipayJSBridge對象,同時會觸發AlipayJSBridgeReady事件。
從這句話中找到了網頁在android的支付寶客戶端偶爾關閉得了偶爾不行的原因:
可能關閉不了的原因是當執行 AlipayJSBridge.call('closeWebview')操作時,AlipayJSBridge還沒有創建,所以無法執行。因此我們需要對AlipayJSBridgeReady事件進行監聽。
解決代碼:
document.addEventListener('AlipayJSBridgeReady', function () { if('$[code]'=="00") { if('${merUrl}'!="") { window.location.href='${merUrl}'; }else{ AlipayJSBridge.call('closeWebview'); } }else{ $("#error_msg").html("支付失敗"); $("#error").show(); } }, false); 以上代碼完美解決了問題,通過測試在android、ios支付寶移動客戶端上都能完美自動關閉頁面。
新聞熱點
疑難解答