收藏
回答

部分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,无法唤起微信支付。

补充一个细节:

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

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

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

1 个回答

  • 微信支付技术助手
    微信支付技术助手
    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


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