• 微信支付:H5吊起支付API,不显示“确认支付、输入密码”界面


    使用公众号进行支付,官方开发帮助文档:

    https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1

    其业务流程如下:

    微信内网页支付时序图

    按照业务流程进行开发,依据官方的例子(下载地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1),不能弹出选择支付方式及输入密码,页面js代码如下:

                  //调用微信JS api 支付
                   function jsApiCall()
                   {
                       WeixinJSBridge.invoke(
                       'getBrandWCPayRequest',
                       <%=wxJsApiParam%>,//josn串
                        function (res)
                        {
                            WeixinJSBridge.log(res.err_msg);
                            alert(res.err_code + res.err_desc + res.err_msg);
                         }
                        );
                   }
    
                   function callpay()
                   {
                       if (typeof WeixinJSBridge == "undefined")
                       {
                           if (document.addEventListener)
                           {
                               document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
                           }
                           else if (document.attachEvent)
                           {
                               document.attachEvent('WeixinJSBridgeReady', jsApiCall);
                               document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
                           }
                       }
                       else
                       {
                           jsApiCall();
                       }
    js调用是通过服务端button按钮实现,如:
    <asp:Button ID="submit" runat="server" Text="立即支付" OnClientClick="callpay()" style="210px; height:50px; border-radius: 15px;background-color:#00CD00; border:0px #FE6714 solid; cursor: pointer;  color:white;  font-size:16px;" />
    原因分析:
    点击submit按钮,页面直接回传了,页面状态已改变,WeixinJSBridge.invoke未能实现异步调用。
    解决办法:
    方案一:把submit服务端button更换为html客户端button
    方案二:修改js代码,防止服务端button回传,增加如下语句window.event.returnValue = false; 
            function jsApiCall()
            {
                try {
                    WeixinJSBridge.invoke(
                        'getBrandWCPayRequest',
                        <%= WxJsApiParam %> ,
                        function(res) {
                            WeixinJSBridge.log(res.err_msg);
                            alert(res.err_code + res.err_desc + res.err_msg);
                        }
                    );
                } catch (e) {
                    alert(e);
                }
            }
    
            function callpay()
            {
                try {
                    if (typeof WeixinJSBridge == "undefined") {
                        if (document.addEventListener) {
                            document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
                        } else if (document.attachEvent) {
                            document.attachEvent('WeixinJSBridgeReady', jsApiCall);
                            document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
                        }
                    } else {
                        jsApiCall();
                    }
                } catch (e) {
                    alert(e);
                }
                window.event.returnValue = false;
                return false;
            }

    效果展示:

    IMG_7043IMG_7044IMG_7045IMG_7046

  • 相关阅读:
    算法导论第三版第二章第三节习题答案
    算法导论第三版第二章第二节习题答案
    Android各版本 内外卡真实路径
    Go语言 爬虫2编码转换
    gotour的安装
    算法导论第三版第二章思考题答案
    Go语言的日志记录功能
    算法导论 中 lg 的底数是2的原因相关文章
    Go语言 爬虫1网络请求
    SharePoint 2013 母版页修改后,无法添加应用程序
  • 原文地址:https://www.cnblogs.com/zsy/p/5336651.html
Copyright © 2020-2023  润新知