zoukankan      html  css  js  c++  java
  • 微信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的回调函数,这个跟微信支付的异步回调有关系。

  • 相关阅读:
    [暑假集训Day4T1]羊圈
    [暑假集训Day3T3]平板涂色
    [暑假集训Day3T2]骑士问题
    [暑假集训Day3T1]小木棍
    [暑假集训Day2T3]团建活动
    [暑假集训Day2T2]走廊泼水节
    [暑假集训Day2T1]种树
    [暑假集训Day1T3]新的开始
    [暑假集训Day1T2]北极通讯网络
    [暑假集训Day1T1]黑暗城堡
  • 原文地址:https://www.cnblogs.com/zhengwk/p/11947381.html
Copyright © 2011-2022 走看看