angular再作微信支付的時候,參數神馬的都好配置,可是怎麼都沒法到填寫支付密碼的窗口,微信還報了個錯ios
url未註冊,而且微信說的當前頁面的url並不是是支付頁面的urljson
這個問題再微信頁面上刷新一下就行了,可是不能讓用戶去刷新吧!?瀏覽器
好吧,看下配置的url,是沒錯的微信
若是支付的頁面是http://域名/文件A/頁面a微信開發
那麼註冊的頁面就應該是http://域名/文件A/,總之是支付頁面的上一級就對了微信支付
ok,那麼註冊對了,是什麼致使了微信當前url和實際url不一致呢?url
上網查到了,spa
angular是屬於spa應用也就是單頁面,頁面跳轉是經過路由來操做的,微信瀏覽器內核沒法識別,可是微信開發者是正常的。blog
解決方法:跳轉路由的時候不用angular內置的跳轉$scope.$state.go而是使用window.location.href,網頁連接不正確的問題就解決了token
原來如此!
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