微信JSAPI支付接口,支付完成后關閉當前窗口


一、把demo里的這一段:

success: function (res) {
// 支付成功后的回調函數
if (res.err_msg == "get_brand_wcpay_request:ok") {
alert("微信支付成功!");
} else if (res.err_msg == "get_brand_wcpay_request:cancel") {
alert("用戶取消支付!");
} else {
WeixinJSBridge.log(res.err_msg);
alert(res.err_code + res.err_desc + res.err_msg);
// alert(res.err_msg);
// alert("支付失敗!");
}

}

改成:

success: function (res) {
// 支付成功后的回調函數
if (res.errMsg == "chooseWXPay:ok") {

WeixinJSBridge.call('closeWindow');
} else if (res.errMsg == "chooseWXPay:cancel") {

WeixinJSBridge.call('closeWindow');
} else {
WeixinJSBridge.log(res.errMsg);
}
}

注意兩點:

(1)需要調用WeixinJSBridge.call('closeWindow');才能關閉當前窗口,而不是window.close()

(2)res.err_msg要改成res.errMsg

二、把demo里的這一段:

               function callpay()
               {
                   
                   if (typeof (WeixinJSBridge) == "undefined")
                   {
                       if (document.addEventListener)
                       {
                           alert('添加監聽1')
                           document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
                       }
                       else if (document.attachEvent)
                       {
                           alert('添加監聽2')
                           document.attachEvent('WeixinJSBridgeReady', jsApiCall);
                           document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
                       }
                   }
                   else
                   {
                       jsApiCall();
                   }
               }

改成:

function callpay()
               {
                   if (typeof (WeixinJSBridge) == "undefined")
                   {
                       if (document.addEventListener)
                       {
                           alert('添加監聽1')
                           document.addEventListener('WeixinJSBridgeReady', function () {
                               jsApiCall();
                           }, false);

                       }
                       else if (document.attachEvent)
                       {
                           alert('添加監聽2')
                           document.attachEvent('WeixinJSBridgeReady', function () {
                               jsApiCall();
                           });
                           document.attachEvent('onWeixinJSBridgeReady', function () {
                               jsApiCall();
                           });
                       }
                   }
                   else
                   {
                       jsApiCall();
                   } 
               }

最主要就是把jsApiCall()用function包裹起來,要不然執行不到jsApiCall的回調函數,這個跟微信支付的異步回調有關系。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM