这篇文章纯属记录,在一个问题上的爬坑辛酸(>~<)
微信支付开发文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5
微信支付开发步骤:
遇到问题:
步骤1、2、3都没问题,卡在了步骤四,App调起微信支付时,出错了,一直返回-1,一直返回-1,一直返回-1!!!
真的好气哦,用了一天来解决这个问题!
其实主要是微信的开发文档并不友好,甚至有点恶心!(>!<)
为什么这么说,看看他给的文档就知道了,-1,-1,-1!!!
签名问题?
先看看我的上任大佬,遇到这个问题总结的博客吧,https://www.jianshu.com/p/ca7707943423
多半是签名问题,但是后台服务器返回的签名进行过二次签名啊,而且我也尝试过不用后台返回的签名,自己签名,但是依然报那个该死的-1错误。
于是和后台不停的调试,对字段,看空格,大小写···,但是调用微信支付的代码量真的不多,无论Android前端还是后台,就不知道错在哪儿了!!!
看微信Demo?https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1
但是说实话,我还是很抱怨微信提供的文档,连个Demo都这么恶心,AS打开不停的报错,解决一个还来一个,索性不看你了呗
重点来了-》来填坑吧
我们知道要接入微信支付,需要微信支付开发文档,还有微信开放平台-管理中心,既然使用前者找不出问题,就看看后者吧!
好吧,问题就出在这了,你个小妖精,终于被我抓住了。
在管理中心需要配置app的包名和签名,包名肯定没问题,应用签名那就用APK helper看看呗,不看不知道一看吓一跳,签名竟然不一样,额,额,额,
原来啊,上任大佬走之前改了app的签名文件,忘了在管理中心更新应用签名!!!
解决问题
你以为改了应用签名就可以了吗?no,no,no,程序员总是乐观主义者,为啥还是返回-1呢,我相信还是有很多同学都遇到这个问题了,然后找找啊,原来问题出在这
~豁然开朗~
虽然你后台应用签名修改过了,并且修改后的应用签名可以立即生效,但是之前app调用微信的时候使用的签名已经保存在微信中了,客户端会缓存之前的签名!!!
最后,去将微信的数据缓存给清除或者就是将微信客户端重新安装,就可以成功接入微信支付啦,啦啦,啦啦啦~
自我总结:
微信支付,从三方面查找问题,
- android代码中的签名、appid等;
- 服务器后台访问微信以及传给android客户端的数据字段,还有二次签名等;
- 微信开放平台-管理中心的包名和应用签名。
总的看来,签名出错几率比较大。为啥好多人容易出错,因为不只是应用内的代码,还涉及其他人员和平台的辅助。