微信支付路径BUG, 支付场景基于angular的路由
起因:昨天运营部门提交了一个比较奇怪的bug,场景是在设置好的微信支付路径中支付出现了提示支付路径的问题。
经过:一番测试发现,正常首页进去没问题;微信分享出去的url没问题;直接手动开口商品详情页就bug了。
//商品详情页唤起IOS微信内核就bug
http:localhost/#/detail/12345
//微信后台设置的支付路径
http:localhost/
http:localhost/#/
http:localhost/#/orderDetails/
谷歌之后才知道IOS下微信的支付路径貌似并非你点击支付的路径,而是唤起微信浏览器的那个路径,此时内心十万只哔哔哔。
结果:目前是写了一个判断,如果是iOS下微信非支付路径登录,那么刷新一下系统,这样就可以正常支付。
// 添加factory
app.factory('IOSWechatReload',function() {
return function(){
if( browser.v.weixin
&& browser.v.ios
&& Storage.getItem('href')
&& Storage.getItem('href').split('/#/')[1]
&& Storage.getItem('href').split('/#/')[1].match(/\//)
){
location.reload()
}
}
// controller 中调用iOS微信支付bug
IOSWechatReload()
});
PS:另外貌似还可以更改路由规则,把 /#/ 升级为 /?#/ ,使支付路径直接变成 ,但是估计要改源码了。