您的位置:首页 > 移动开发 > 微信开发

微信支付测试返回:access_control:not_allow或system:access_denied

2015-01-21 09:55 453 查看
比如我的测试js支付的页面是 http://10.10.x.y/test/wxpay 。首先要将“商户功能”->支付测试 下的“支付测试目录”改成 http://10.10.x.y/test/。
然后注意这句话“测试域名只能在公众号会话内测试才有效”。

因此,要完成测试,你需要关注这个公众账号,让公众账号回复你这个链接“ http://10.10.x.y/test/wxpay”。
这时候,你的微信应该会收到这个公众账号的信息(就是这个链接),然后再点击这个链接,就不会报access_control:not_allow这个错了。

===============================================================================

昨天客户向我提到,微信支付在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跳转,跳转到支付页面。

改代码,放上去,而后测试,于是天终于晴了!

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

转自:http://www.cnblogs.com/yipu/p/3760148.html
http://blog.sina.com.cn/s/blog_63f3e0060102v4xh.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐