微信支付错误问题汇总 access_control:not_allow access_denied

微信,当今互联网炙手可热的产物,已经席卷全球(当然是夸张的说法 )相信很多朋友都在研究,在自己的app应用上加入这个微信支付功能。我现在说说网上比较长久的问题。
遇到问题基本上是肯定的,微信那群人,你别指望他们帮你解决,kf电话基本打不通的,打通他们也回答不了你技术问题,微信给了一个群,但是官方的解释很少,基本上都是群友互相分析我这里为了大家少走弯路,简单总结如下:


1:微信支付测试的前提是你必须成功开通申请,并且三项资料要审核通过,你可以查询到微信会给你注册申请的邮箱里发一些认证后的支付凭证代码。
2:通过3项目基本资料审核后,你可以到“我的服务-》服务中心-》商户功能-》然后介绍那里有个微信商户服务中心。最下面有下载地址。下载相关的开发代码
3:关于测试,最重要的一步,如果你之前是使用微信提供的测试号进行调试微信支付,那么恭喜你,百分比被骗,会一直提示你“access_control:not_allow”,当你参考微信api文档的时候,会说这是由于没有设置白名单造成的,你在开通微信的服务号里看,其实你是设置过白名单测试帐号的,为什么一直不行呢,原因在于你使用的测试号里没有填写白名单,但测试号里是不能填写白名单的,所以你必须在你的正式服务号里测试。我的建议是设置一个关键词回复,比如输入微信测试,那么你的服务号返回一个图文消息,带链接的,而链接就是你的微信支付url,注意url必须在指定的授权目录下,关于授权目录,比如你的授权目录是
http://www.xx.com/pay/那么所有支付相关的文件,比如php jsp的文件都要在这里下方,不能是子目录了。例如写http://www.xx.com/pay/weixinpay.jsp否则会提示access_denied的错误提示
4:记住微信给你的商务参数要写对,别写错了,否则会出现类似“服务正在升级”之类的提示错误,非常不友好,会误导你,你会发现他一直会说升级中,你永远都没法做下去,微信的api接口最大的问题就是提示信息很不完整,不准确,很难调试。

5:还有一个问题,当你请求微信支付接口的时候,提示你“支付请求参数错误”,有人认为是加密的签名sign错了,其实这个不是,如果是这个提示,请检查你的参数,不过这里值得注意的是微信支付的一个支付金额参数total_fee,文档里写的非常简单,说是文本类型,单位为分?不知情的人还以为类似如12.98这样的数字就是精确到分,如果你这样设置金额参数,恭喜你中奖了,会提示参数错误,正确的写发是1298,这样就是微信认可的12.98  (元)的支付请求,请注意,我之前就是写错这个参数,浪费很多时间。
微信的文档质量真的有待提高。开发前需要配置好相关参数。



define(APPID , "wxf8b4f85f3a794e77");  //appid
define(APPKEY ,"2Wozy2aksie1puXUBpWD8oZxiD1DfQuEaiC7KcRATv1Ino3mdopKaPGQQ7TtkNySuAmCaDCrw4xhPY5qKTBl7Fzm0RgR3c0WaVYIXZARsxzHV2x7iwPPzOz94dnwPWSn"); //paysign key
define(SIGNTYPE, "sha1"); //method
define(PARTNERKEY,"8934e7d15453e97507ef794cf7b0519d");//通加密串
define(APPSERCERT, "09cb46090e586c724d52f7ec9e60c9f8");



这些参数都是微信支付开通后微信会邮件里通知你的,请把对应好的参数填写证券,微信一共会发2封邮件给你。参数分别在2封邮件里。

附件里是微信支付的开发文档里面有demo。

 

你可能感兴趣的:(微信支付常见错误解决方案)