angular再做微信支付的時候,參數神馬的都好配置,但是怎么都無法到填寫支付密碼的窗口,微信還報了個錯
url未注冊,並且微信說的當前頁面的url並非是支付頁面的url
這個問題再微信頁面上刷新一下就好了,但是不能讓用戶去刷新吧!?
好吧,看下配置的url,是沒錯的
如果支付的頁面是http://域名/文件A/頁面a
那么注冊的頁面就應該是http://域名/文件A/,總之是支付頁面的上一級就對了
ok,那么注冊對了,是什么導致了微信當前url和實際url不一致呢?
上網查到了,
angular是屬於spa應用也就是單頁面,頁面跳轉是通過路由來操作的,微信瀏覽器內核無法識別,但是微信開發者是正常的。
解決方法:跳轉路由的時候不用angular內置的跳轉$scope.$state.go而是使用window.location.href,網頁鏈接不正確的問題就解決了
原來如此!
window.location.href會在跳轉的時候加上刷新功能,好吧,這樣返回鍵就失效了,還要重寫返回的事件,不過事實能不能解決主要問題。
bingo!安卓OK了,ios還是報之前的錯,看了一下原來跳轉了沒刷新,看來angular+ios+微信=fuck
之后又嘗試了后台重定向跳轉,用$window.location.href,用頁面加參數的方法跳轉,都失敗了
下面才是正文!
最終問題出在項目的路由上,報錯里的url是mine/:token/:url(token和url是頁面傳值的參數)
好吧,微信把angular帶參數的路由視為路徑了,而正確的url應該到mine就ok
解決方法:將路由配置
改為
token和url放在 mine?token=&url= 這樣就認識url中的參數了,通過angular方法var search = $location.search();
拿到json數據{token:'',url:''},這樣就解決了上述問題,頁面也沒有刷新,用a標簽跳轉就ok

