url帶#號,微信支付那些坑


現在前端很多框架的前端路由都帶#號,主要為了做到無刷新跳轉頁面。

在微信公眾號做微信支付時,配置的支付路徑比如是http://www.eee.com/#/order,在調微信支付的方法時錯誤信息是‘URL未注冊’。

我的解決方案是,寫一個專門做為微信支付的頁面,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>

一個空的頁面即可,此處package是關鍵字,所以需要后台返回一個新的字段代替package。

然后處理支付成功和支付失敗的回調

再把這個頁面在當前域名下配一個路徑,比如當前項目域名是http://www.eeeee.com,就把頁面域名指定為http://www.eeeee.com/pay/wechat

然后在微信公眾號的后台把支付路徑配置為http://www.eeeee.com/pay/

這個方法有個缺點,就是調取支付要跳轉頁面,用戶體驗不好,支付完成還要再跳轉到相應的頁面。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM