微信支付在移动端调起失败是怎么回事?

技术雨辰 阅读 21

我在做移动端H5项目,接入微信支付时总是调不起来。后端已经返回了正确的prepay_id和签名,前端也按文档拼了参数,但调用WeixinJSBridge.invoke(‘getBrandWCPayRequest’)没反应,也不报错。

试过在微信开发者工具里调试,也真机测试了iOS和安卓,都是一点支付按钮就卡住。是不是参数格式有问题?或者我漏了什么配置?

WeixinJSBridge.invoke('getBrandWCPayRequest', {
  "appId": res.appId,
  "timeStamp": res.timeStamp.toString(),
  "nonceStr": res.nonceStr,
  "package": res.package,
  "signType": res.signType,
  "paySign": res.paySign
}, function(res) {
  if (res.err_msg === "get_brand_wcpay_request:ok") {
    // 支付成功
  }
});
我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
Designer°梓玥
你这个问题大概率是没等微信内置浏览器初始化完就调用了,或者支付目录没配对。先把调用包在 WeixinJSBridgeReady 事件里,再去商户平台确认一下支付授权目录必须精确到当前页面所在的上一级目录。

function onBridgeReady(){
WeixinJSBridge.invoke('getBrandWCPayRequest', {
"appId": res.appId,
"timeStamp": res.timeStamp.toString(),
"nonceStr": res.nonceStr,
"package": res.package,
"signType": res.signType,
"paySign": res.paySign
}, function(res){
if(res.err_msg === "get_brand_wcpay_request:ok" ){
// 支付成功逻辑
}
});
}

if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
}else{
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
}
}else{
onBridgeReady();
}
点赞
2026-03-04 13:05