Unity-Android集成微信支付出现返回-1问题
前段时间出去玩了一段时间,回公司得知一个惊天消息——微信支付出问题了!!!这个问题比较奇怪,说是部分机型可以支付成功,部分机型如小米、三星无法调起支付,返回-1。
众所周知返回-1的话代表了各种各样的错误(坑),所以只好从头开始排查,首先排查 WXPayEntryActivity.java 这个文件是否放在了 .wxapi包 下,及 manifest里的注册是否为.wxapi.WXPayEntryActivity ,确定无误后检查后台返回的参数是否有误
至此如果都正确,可以开始着手检查在后台里的参数设置是否正确
这里需要注意的是应用签名和应用包名,因为出问题的包不是由我打包的,我怀疑问题在于应用签名对不上,最后发现果然如此。打包的同事使用了另一个keystore文件进行打包,导致应用签名与后台填写的不一致,于是重新生成了签名更新后台设置,问题解决。
至于为什么部分机型可以正常支付,而部分机型无法调起,我参照有些coder遇到的问题“微信支付只能成功调起一次”
因为成功支付的机型为公司测试机,而不成功的机型是用户机,猜测因为公司测试机里曾经调试过微信支付,有正确的包名和签名的缓存,微信在调起时直接读取缓存值,验证正确后直接调起,而当缓存值出错时微信才会再次去读取新的包名和签名重新验证,因此出现了部分机型可支付的问题。也因为这个原因, 修改完签名后再次调试,第一次返回的还是-1,但再次点击就可以成功调起,此后也没有再返回-1。 个人猜测,如有错误欢迎指出讨论。
微信支付的坑实在是太多了,还有OC编写的iOS的IAP也有很多藏起来的坑,一直想把Unity内调用Java集成的微信、支付宝支付,使用OC集成的iOS内购详细过程写上来,但是一直犯懒。。这段时间一定要写好,给自己做个记录,也给大家作为一个参考。