functiononBridgeReady(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId""wx2421b1c4370ec43b", //公众号名称,由商户传入 "timeStamp""1395712654", //时间戳,自1970年以来的秒数 "nonceStr""e61463f8efa94090b1f366cccfbbb444", //随机串 "package""prepay_id=u802345jgfjsdfgsdg888",
"signType""MD5", //微信签名方式: "paySign""70EA570631E4BB79628FBCA90534C63FF7FADD89"//微信签名
},
functionres{
if(res.err_msg == "get_brand_wcpay_request:ok" ){
window.location.href="${project_name}/pay/parking/renew?startTime="+startTime+"&should="+should+"&plate="+plate+"&time="+time;
}
});
}
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
}elseif (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
}
}else{
onBridgeReady();
}
function(res){} 这个回调函数在取消支付或支付失败的时候会进入,但是支付成功后没有进入到这个callback函数界面。
我们有两种模式:1.商户直连普通模式支付 2.服务商模式代特约子商户发起二维码支付
问题描述如下:
.后台直连微信商户,支付成功后走callback函数,我们可以直接window.location.href 实现跳转
2.后台走服务商模式(即服务商带特约子商户发起JSAPI支付)前台支付成功后不走callback函数,res 没有弹出,我们实现不了跳转(直接跳到这个payapp.weixin.qq.com 这个网址)
已解决,成功的回调会执行,但是alert不会执行,如果非要alert可以写在setTimeout里面
if(res.err_msg == "get_brand_wcpay_request:ok" ){
setTimeout(_=>{
alert('可以alert');
},0)
}
这里一定要写成箭头函数,这个回调才起作用,我之前在安卓手机上有的时候起作用有的时候不起作用,ios上一直不起作用。直到我看到一位小伙伴说要用匿名函数,我才想到改写为箭头函数。
<%-- Button 换成 a --%> <a onclick="callpay()"> 立即支付 </a> <%-- <asp:Button ID="submit" runat="server" Text="立即支付" OnClientClick="callpay()" style="width:210px; height:50px; border-radius: 15px;background-color:#00CD00; border:0px #FE6714 solid; cursor: pointer; color:white; font-size:16px;" />--%>
解决了,在这里说下怎么解决哦,给其他人提供下思路;
我的也出现了,成功、取消、失败都不走res
请问怎么解决的呢- -
同问, 怎么解决的,学习一下!
解决了,谢谢各位
window.WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
appId: params.appId,
timeStamp: params.timeStamp,
nonceStr: params.nonceStr,
package: params.package,
signType: 'MD5',
paySign: params.paySign
},
(res) => {
if (res.err_msg === 'get_brand_wcpay_request:ok') {
location.href = `${location.protocol}//${location.host}/pay/paysuccess?bill_no=${params.billNo}`
} else if (res.err_msg === 'get_brand_wcpay_request:fail') {
alert('支付失败!')
} else {
alert('支付失败!')
}
})
建议仔细检查本地代码,设置一下断点看看具体的跳转情况。
但是成功没回调,支付成功直接一个页面提示,点击完成直接跳转到一个页面