微信支付 (當前頁面URL未註冊) 解決方案(angularjs)

微信支付的時候,提示 當前頁面URL未註冊 ,目前在ios系統中發現,安卓則沒有。
通過在網上查找資料和驗證發現,在ios系統中,當調用微信支付的時候,微信會判斷當前頁面和微信公衆號後臺設置的支付受權目錄是否一致,他會把頁面最後一次刷新的url做爲判斷依據(若是用戶刷新了任何頁面,這個頁面就是支付頁面),這個時候,單頁應用的路由中‘#’後面的內容也會被傳遞過去,在微信的判斷流程裏,這個url和設置的目錄是不匹配的,由於涉及到多個頁面都會發起支付請求,全部設置多個帶頁面參數的url是不合理的,因此這裏在‘#’前面添加了‘?’,讓微信忽略‘?’後面的內容。ios

例如我設置的支付目錄以下

http://www.test.com/app/

個人發起支付的界面以下

http://www.test.com/app/#/pay1

http://www.test.com/app/#/pay2

http://www.test.com/app/#/pay3

當我在'#'前面添加'?',這個時候微信會把'?'後面的內容當作參數而angular能夠識別'?#',這樣既能夠避免出現出現提示當前頁面url未註冊的錯誤
在視圖加載後,修改url(這樣不會觸發頁面從新加載,其餘框架也可作相似處理)微信

$rootScope.$on('$viewContentLoaded',function(event) {
    if (window.location.href.indexOf('?#') < 0) {
     window.location.href = window.location.href.replace('#', '?#')
     }
});
相關文章
相關標籤/搜索