如今前端不少框架的前端路由都帶#號,主要爲了作到無刷新跳轉頁面。javascript
在微信公衆號作微信支付時,配置的支付路徑好比是http://www.eee.com/#/order,在調微信支付的方法時錯誤信息是‘URL未註冊’。html
個人解決方案是,寫一個專門作爲微信支付的頁面,ajax請求後臺返回須要調取微信支付的數據(簽名等信息),而後把這些信息暫存起來(能夠用h5的緩存,記得支付完清掉,若是用node,能夠用node的緩存,以本身的實際項目方便)。跳轉到支付的頁面前端
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body></body>
<script type="text/javascript">
document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() {
var request = {};
if (sessionStorage && sessionStorage.wechatPayRequest) {
request = JSON.parse(sessionStorage.wechatPayRequest);
}
WeixinJSBridge.invoke("getBrandWCPayRequest", {
appId : request.appId,
timeStamp : request.timeStamp,
nonceStr : request.nonceStr,
"package" : request.packageInfo,
signType : request.signType,
paySign : request.paySign
}, function(res) {
sessionStorage.wechatPayRequest = ''
if ("get_brand_wcpay_request:ok" == res.err_msg) {
// 支付成功
}else {
// 支付失敗
}
});
})
</script>
</html>java
一個空的頁面便可,此處package是關鍵字,因此須要後臺返回一個新的字段代替package。node
而後處理支付成功和支付失敗的回調ajax
再把這個頁面在當前域名下配一個路徑,好比當前項目域名是http://www.eeeee.com,就把頁面域名指定爲http://www.eeeee.com/pay/wechat緩存
而後在微信公衆號的後臺把支付路徑配置爲http://www.eeeee.com/pay/微信
這個方法有個缺點,就是調取支付要跳轉頁面,用戶體驗很差,支付完成還要再跳轉到相應的頁面。session