过去有两次微信支付失败的场景(http://www.cnblogs.com/sevenun/p/6445743.html)(http://www.cnblogs.com/sevenun/p/6088093.html)
但是现在我居然又遇到了第三种支付失败的场景。
为了推广,我们让一个粉丝比我们多的公众号帮我们宣传,通过微信图文链接到我们的网站去,但是因为是从其他公众号链接到我们的支付页面,所以这是微信不允许的,必须要从我们公众号进去我们的页面才能进行支付。
但是安卓手机并不会显示错误,就只会一闪而过,正是因为一位苹果用户的告知,我们才知道有“不能跨号支付”的错误,所以知道原因后,我们就在支付失败后跳转到提示页面,让用户关注我们公众号并从我们公众号进入页面。
function onBridgeReady(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId" : $appId, //公众号名称,由商户传入
"timeStamp" : $timeStamp, //时间戳,自1970年以来的秒数
"nonceStr" : $nonceStr, //随机串
"package" : $packageValue,
"signType" : $signType, //微信签名方式:
"paySign" : $paySign //微信签名
},
function(res){
if(res.err_msg == "get_brand_wcpay_request:ok" ) {
window.location.href = $sendUrl;
} // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。
else if(res.err_msg == "get_brand_wcpay_request:fail") {
// 关闭订单
$.ajax({
type : 'post',
url : '<c:url value="/close_order" />',
data : {orderId : $orderId},
dataType : 'json',
success : function(data) {
if (data == '1') {
//alert('关闭订单成功');
} else {
// alert('关闭订单失败')
}
}
});
// 跳转到提示页面,让用户关注公众号
window.location.href = '<c:url value="/pay_failed" />';
} else {
// 用户取消支付则关闭订单
$.ajax({
type : 'post',
url : '<c:url value="/close_order" />',
data : {orderId : $orderId},
dataType : 'json',
success : function(data) {
if (data == '1') {
//alert('关闭订单成功');
} else {
// alert('关闭订单失败')
}
}
});
}
}
);
}