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