加载中…
正文 字体大小:

Android微信支付的奇葩问题system:access_denied

(2014-10-10 11:56:42)
标签:

微信

支付

android

access_denied

分类: 移动开发
昨天客户向我提到,微信支付在IOS上成功,但在Android上会报system:access_denied错误。
反复检查代码,没有问题。而且因为IOS上成功支付,让我百思不得其解,为什么Android上不成功。
后来看到一篇文章http://www.okhjp.com/post/9/wechat-pay-system-access-denied/,反应的问题和我一样,但是没有提到解决方法。
各种调试、各种办法,没有解决。
Android总结如下情况:
从微信公众号界面,直接访问支付页面,成功支付。
从微信公众号界面,跳转到A域名页面,再跳转到B域名页面,再跳转到支付授权目录所在的C域名,不成功,报access_denied错误。
同样的情况,IOS正常。

access_denied错误,通常是微信发现来源请求不是支付授权目录造成的,因此问题应该就是来源目录请求的问题。而微信支付本身是JS方式的Ajax请求,因此它判断来路页面就是支付页面URL,而这个URL就应该是微信浏览器的URL。但是我在支付页面中通过JS调试alter(window.location.href)是正常的,真是晕了!

于是向各路大神求救,最终遇到MT同学,给了一个指点,先在此谢过!
因为之前我最后一步跳转是通过服务端redirect到支付页面,因此微信浏览器可能会无法获得跳转的页面(因为浏览器没有获得HTTP200返回,不知道页面已经跳转,因此URL还是保留老的【至于为什么JS能获得window.location.href是最新的URL,这个要问微信浏览器了!IOS应该是正常得到了!】),而此时向微信支付请求信息时,就会有上面的错误。
于是按照MT同学的建议,在最后一个页面跳转时采用页面层的JS跳转,跳转到支付页面。
改代码,放上去,而后测试,于是天终于晴了!

无奈是微信现在火,只能跟上,但对微信的技术支持实在是......!再次鄙夷微信技术支持,自己的亲身体验,支持服务实在太差,电话打不通,要不没人接,邮件没响应,总之真是不爽到了极点。

0

阅读 评论 收藏 转载 喜欢 打印举报
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有