最近几天有大量用户反馈,支付后就打不开页面了,一直排查不出问题。我观察服务器日志,发现返回返回长度都是一致的,也没有任何错误记录在日志里面。
直到今天我直接手机也出现这个问题,手机支付后就无法打开页面了,然后我发现在 windows 还是可以打开,
首先我怀疑是用户身份的问题,然后我试着清空服务器 session,还是打不开,
然后我试着清空微信缓存,发现仍然无法打开手机网站,这时候我发现我们域名下任何一个二级域名都不行打不开,
然后我试着退出微信,重新登录,网站可以打开了。
由于主要做校园打印,前天大概有2%用户存在这个问题,这两天超过15%,每天几百几千个用户反馈,我都快炸啦。
我怀疑微信在支付时屏蔽了我们的域名(甚至在手机微信里面访问管理后台的静态页面都不能访问,Windows微信没有这个问题),清空缓存也无法打开,必须退出微信,重新登录。
一直在用的微信 jsapi 接口也不能用了,以前前端都依赖 get_brand_wcpay_request:ok
这个做判定是否支付成功,现在是这里永远不会返回 ok :
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6
function onBridgeReady(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId":"", //公众号名称,由商户传入
"timeStamp":"", //时间戳,自 1970 年以来的秒数
"nonceStr":"", //随机串
"package":"",
"signType":"", //微信签名方式:
"paySign":"" //微信签名
},
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();
}
不是我们页面打不开了,而是微信里面所有页面都打不开了。
包含微信自己的页面。
然后这个错误只有退出微信才能解决 。