支付页面代码:
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"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
}else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', jsApiCall);
document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
}
//此处的alert(WeixinJJSBridge) 仍然为 undefined
}else{
jsApiCall();
}
}
页面调用 callpay,无法唤起微信支付。
补充一个细节:
当前一个页面键盘处于弹起状态的时候,进入此支付页面,无法唤起;
当前一个页面手动收起键盘,进入支付页面,可以正常唤起微信支付。
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();
}
你这个问题解决了嘛?
核对一下签名参数与上行参数做一下对比
然后请参考
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