PHP之 微信APP支付之APP端“code=-1”报错的坑

相关文档

相关文档
APP支付业务流程:
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_3

问题来了

微信APP支付,初次,在【步骤3】的时候,因为API秘钥的(文档含糊不清)问题,导致“签名错误”的业务流程,好不容易,处理,可到了【步骤4】,商户APP调起微信支付,安卓忽然告诉我说,他那边报“code=-1”的错误,呃嗯?什么鬼?开始查看文档,看是不是哪里有问题。

我们发现,微信支付的文档,又开始让你开启“全民猜猜猜”的模式,注意这里的圈红,和圈蓝的地方,“可能”,“其他异常”,永远都不说透,就是让你猜,猜到让你疯,让你死,貌似成了微信乃至腾讯文档的一贯作风,严重怀疑微信支付文档和腾讯云文档,是一个人写的,要么,就是一个负责人,我看到很多人都吐糟,乃至问候他祖宗!有的人,可能会说,至于么,当你被老板在后面催的都快上墙的时候,你就会理解十万个草泥马是多么壮观而宏大场景了。

解决问题

那么,问题究竟出在了哪里呢?

只能网上找了,因为,APP端是用【步骤3】返回的一堆数据去调起“微信支付”的。于是,找到相应的【步骤2】的文档:

https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1

注意,上图圈蓝的部分,紧接着,再看一下,下图:

两个问题,“字段名称”和“对应的值”。也就是说,字段名称首先你不能写错了,其实,对应的值更不能错,错了,就会给你报“code=-1”的错误!

所以,我们在代码处理的时候,一定要注意上述两个问题,因此,在返回数据的时候:

字段名必须是“noncestr”,对应的值,必须是微信端返回来的“nonce_str”,而不是,你重新来个随机字符串。

其实,我们仔细观察,就能发现,返回给APP的数据中,能动的,就“noncestr ”跟 “timestamp”,这两个字段,一个是标识用,一个是验证时效的。

最后,排除掉时间戳,你就只剩下“noncestr ”,处理成微信端返回的“nonce_str”的值,最后,试了一下,就可以了!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章