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

  • 相关阅读:
    Git 学习笔记(W,I,P)
    DirectX API 编程起步 #01 项目设置
    #1004 Let the Balloon Rise
    #1003 Max Sum
    人生的第一个博客(●'◡'●)ノ♥--开博典礼
    2053——switch game
    在Activity间传递数据的四种方法及返回结果
    安卓学习第38课——ProgressDialog
    安卓学习第37课——DatePickerDialog、TimePickerDialog
    安卓学习第36课——PopupWindow
  • 原文地址:https://www.cnblogs.com/zhengwk/p/11947381.html
Copyright © 2011-2022 走看看