相关文档
相关文档
APP支付业务流程:
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_3
![](https://img-blog.csdnimg.cn/20200331121643720.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xEUjExMDk=,size_16,color_FFFFFF,t_70)
问题来了
微信APP支付,初次,在【步骤3】的时候,因为API秘钥的(文档含糊不清)问题,导致“签名错误”的业务流程,好不容易,处理,可到了【步骤4】,商户APP调起微信支付,安卓忽然告诉我说,他那边报“code=-1”的错误,呃嗯?什么鬼?开始查看文档,看是不是哪里有问题。
![](https://img-blog.csdnimg.cn/20200331121734447.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xEUjExMDk=,size_16,color_FFFFFF,t_70)
我们发现,微信支付的文档,又开始让你开启“全民猜猜猜”的模式,注意这里的圈红,和圈蓝的地方,“可能”,“其他异常”,永远都不说透,就是让你猜,猜到让你疯,让你死,貌似成了微信乃至腾讯文档的一贯作风,严重怀疑微信支付文档和腾讯云文档,是一个人写的,要么,就是一个负责人,我看到很多人都吐糟,乃至问候他祖宗!有的人,可能会说,至于么,当你被老板在后面催的都快上墙的时候,你就会理解十万个草泥马是多么壮观而宏大场景了。
解决问题
那么,问题究竟出在了哪里呢?
只能网上找了,因为,APP端是用【步骤3】返回的一堆数据去调起“微信支付”的。于是,找到相应的【步骤2】的文档:
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1
![](https://img-blog.csdnimg.cn/20200331121859771.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xEUjExMDk=,size_16,color_FFFFFF,t_70)
注意,上图圈蓝的部分,紧接着,再看一下,下图:
![](https://img-blog.csdnimg.cn/20200331121934479.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xEUjExMDk=,size_16,color_FFFFFF,t_70)
两个问题,“字段名称”和“对应的值”。也就是说,字段名称首先你不能写错了,其实,对应的值更不能错,错了,就会给你报“code=-1”的错误!
所以,我们在代码处理的时候,一定要注意上述两个问题,因此,在返回数据的时候:
![](https://img-blog.csdnimg.cn/20200331122023870.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xEUjExMDk=,size_16,color_FFFFFF,t_70)
字段名必须是“noncestr”,对应的值,必须是微信端返回来的“nonce_str”,而不是,你重新来个随机字符串。
其实,我们仔细观察,就能发现,返回给APP的数据中,能动的,就“noncestr ”跟 “timestamp”,这两个字段,一个是标识用,一个是验证时效的。
最后,排除掉时间戳,你就只剩下“noncestr ”,处理成微信端返回的“nonce_str”的值,最后,试了一下,就可以了!