微信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的回调函数,这个跟微信支付的异步回调有关系。