相信大家在集成微信支付的时候,大多都会遇到支付失败,返回错误码-1的情况。今天在这里整理了一下会遇到这种情况的几点原因:
1:首先就是微信文档里面所提到的签名错误问题,我们在申请微信支付的时候需要在微信开发平台创建应用并且填写应用的包名和签名,包名就是在AndroidManifest.xml清单文件里的package值,这个一般不会填错。错得较多的就是这个签名了,因为测试版的keystore跟正式版的keystore不一样,微信后台填的签名一定要和你在测试的app的签名一致,假如说你在管理平台填写的是正式版的签名,那么在测试的时候一定要用正式版的keystore对app进行签名打包才能正确发起支付。当然开发期你也可以把测试版的签名填写在微信平台,这样方便测试,只是要记得app正式发布的时候要去改回来,而改这些信息也需要一定时间审核。
2:如果确定上述问题不存在了,但还是支付失败,先看appid配置是否正确(这个一般照着文档操作,不会有什么问题),如果正确了那就得检查发起支付的参数是否正确了。一般这些参数都是由后台生成返回给客户端去解析,客户端直接拿这些参数发起支付,所以得检查一下后台代码在生成参数的时候是否有问题。我上次遇到的坑就是后台在生成sign签名的时候把package字段的值的格式搞错了,正确的格式应该为Sign=WXPay,还有就是参与签名的字段都须为小写。改了以后就成功发起支付了!
总结:其实集成微信支付并不难,关键在于心细,只要够仔细,别人可能得花一天才能解决的问题,你一两个钟就搞定了!