vue项目在hash模式下,微信支付提示当前页面未注册
解决方法:
在微信支付时,当调用微信支付的时候,微信会判断当前页面和微信公众号后台设置的支付授权目录是否一致,他会把页面最后一次刷新的url作为判断依据(如果用户刷新了任何页面,这个页面就是支付页面),这个时候,单页应用的路由中‘#’后面的内容也会被传递过去,在微信的判断流程里,这个url和设置的目录是不匹配的,因为涉及到多个页面都会发起支付请求,所有设置多个带页面参数的url是不合理的,所以这里在‘#’前面添加了‘?’,让微信忽略‘?’后面的内容
let url = window.location.href;
if(!url.match(/\?/)) {
location.replace(window.location.href.split('#')[0] + '?' + window.location.hash);
}
参考
https://segmentfault.com/a/1190000019689563
https://blog.csdn.net/qq_33026699/article/details/103178868