Androidアリペイクライアントhtml 5ページが自動的に閉じられない問題の解決方法

1504 ワード

会社の制品は支付宝モバイルのホームページのインタフェースを使って支払いをして、三方の商戸がジャンプの住所に入って、支付宝のページの支払いに成功した后にこの住所にジャンプして、もし伝わらないならば自动的にページを闭じます.
テストするときはiosクライアントの上でできますが、Androidクライアントではたまにできません.
以前のコード:

$(function(){ 
 if('$[code]'=="00") 
 { 
   if('${merUrl}'!="") 
   { 
   window.location.href='${merUrl}'; 
   }else{ 
    AlipayJSBridge.call('closeWebview'); 
  } 
 }else{ 
   $("#error_msg").html("    "); 
   $("#error").show(); 
 } 
 }); 

アリペイのWeb決済に関するjs apiドキュメントを検索すると、ページのロードが完了するとAlipayJsBridgeオブジェクトが作成され、AlipayJsBridgeReadyイベントがトリガーされると説明されます.
この言葉から、androidの支付宝クライアントがたまに閉鎖され、たまにだめになった理由が見つかりました.
閉じられないのは、AlipayJsBridgeが実行されたからかもしれません.call('closeWebview')操作の場合、AlipayJSPBridgeはまだ作成されていないので実行できません.そのため、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支付宝モバイルクライアントでテストすることでページを完全に自動的に閉じることができます.