收藏
回答

部分Android设备 WeixinJSBridge.invoke 无法唤起支付

支付页面代码:

function jsApiCall(){
            WeixinJSBridge.invoke(
                'getBrandWCPayRequest', {
                       "appId" : "{$appId}",
                       "timeStamp":"{$timeStamp}",
                       "nonceStr" : "{$nonceStr}",
                       "package" : "{$package}",
                       "signType" : "{$signType}",
                       "paySign" : "{$paySign}"
                   },
                function(res){
                    if(res.err_msg == "get_brand_wcpay_request:ok"){
                        location.href="{$sbackurl}";
                    }else{
                        location.href="{$ebackurl}";
                    }
                }
            );
        }
        function callpay(){
            if (typeof WeixinJSBridge == "undefined"){
                ifdocument.addEventListener ){
                    document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
                }else if (document.attachEvent){
                    document.attachEvent('WeixinJSBridgeReady', jsApiCall); 
                    document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
                }
//此处的alert(WeixinJJSBridge) 仍然为 undefined
            }else{
                jsApiCall();
            }
        }


页面调用 callpay,无法唤起微信支付。

补充一个细节:

当前一个页面键盘处于弹起状态的时候,进入此支付页面,无法唤起;

当前一个页面手动收起键盘,进入支付页面,可以正常唤起微信支付。

回答关注问题邀请回答
收藏

3 个回答

  • JYY
    JYY
    2023-08-21

     function onBridgeReady() {

            WeixinJSBridge.invoke('getBrandWCPayRequest', {

                "AppID": "wx2421b1c4370ec43b",     //公众号ID,由商户传入    

                "timeStamp": "1395712654",     //时间戳,自1970年以来的秒数    

                "nonceStr": "e61463f8efa94090b1f366cccfbbb444",      //随机串    

                "package": "prepay_id=up_wx21201855730335ac86f8c43d1889123400",

                "signType": "RSA",     //微信签名方式:    

                "paySign": "oR9d8PuhnIc+YZ8cBHFCwfgpaK9gd7vaRvkYD7rthRAZ\/X+QBhcCYL21N7cHCTUxbQ+EAt6Uy+lwSN22f5YZvI45MLko8Pfso0jm46v5hqcVwrk6uddkGuT+Cdvu4WBqDzaDjnNa5UK3GfE1Wfl2gHxIIY5lLdUgWFts17D4WuolLLkiFZV+JSHMvH7eaLdT9N5GBovBwu5yYKUR7skR8Fu+LozcSqQixnlEZUfyE55feLOQTUYzLmR9pNtPbPsu6WVhbNHMS3Ss2+AehHvz+n64GDmXxbX++IOBvm2olHu3PsOUGRwhudhVf7UcGcunXt8cqNjKNqZLhLw4jq\/xDg==" //微信签名

            },

                function (res) {

                    if (res.err_msg == "get_brand_wcpay_request:ok") {

                        // 使用以上方式判断前端返回,微信团队郑重提示:

                        //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。

                    }

                });

        }

        if (typeof WeixinJSBridge == "undefined") {

            if (document.addEventListener) {

                document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);

            } else if (document.attachEvent) {

                document.attachEvent('WeixinJSBridgeReady', onBridgeReady);

                document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);

            }

        } else {

            onBridgeReady();

        }


    2023-08-21
    有用
    回复
  • 泽
    2021-01-04

    你这个问题解决了嘛?

    2021-01-04
    有用
    回复
  • 微信支付技术助手7
    微信支付技术助手7
    2020-06-15

    核对一下签名参数与上行参数做一下对比

    然后请参考

    1、 统一下单返回是否正常后面步骤都用到了这接口的appid,mchid,prepayid看参数是否匹配

    2、 第二次签名过程是否正确(步骤商户一定要严格按文档https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_12&index=2的参数列表来做签名,提醒商户用签名工具做校验)

    u 此处涉及一个细节:接口没有sign_type参数如果统一下单用的HMAC-SHA256签名,本步骤也必须按HMAC-SHA256


    u 本次签名的参数列表跟文档完全匹配:大小写要一致,参数值要与统一下单接口的保持一致,特别注意参数partnerid,取值mchid(开平SDK历史原因,无法改名

    u 本步骤生成sign与统一下单不是同一个,经常有商户直接传同统一下单接口sign过来

    3、 检查客户端调用sendReqPayReq)对象赋值的正确性有一情况是商户会通过异步获取到后台数据,比如data对象是通过异步请求得到的对象:request.appId = data.appid;实际appid属性值空.

    4、 检查配置

    a) Android要求开放平台后台配置正确的应用签名和包名

    b) IOS则不需要在开平配置,而是要求商户开发环境红配置正确URL Schemes为对应APPID


    2020-06-15
    有用
    回复 1
登录 后发表内容
问题标签