首先,我反复确认了三次以上,配置的签名没有问题,打包后的签名没有问题, request.checkArgs()返回true,然后——
同一个包,在测试机上有的手机能调出支付界面,有的不能,然而在调起支付失败的手机上,登录我的微信就可以调出,登录我同事的就不行。
最后发现的问题是:微信会对之前的调用生成缓存,如果你之前安的本来是debug(未签名)的包,那时候点击微信支付失败了,微信缓存下了这个状态,当你重新安装release(已签名)的包再调用时,会依然返回-1调起失败。这个问题我试过的是这样,甚至在我先安了release调起成功之后,卸载App,安装debug版,这时候的第一次点击也是可以唤起支付界面的。
so,解决办法是:
1.重启下手机或者清理下微信的缓存
如果不行,先表摔手机——>
2.清空微信数据
要还是不行——>
3.卸载重装微信
一般这样是OK了
当然了,得看具体情况,如果你试了我说这些依然不OK,那么你可以摔手机,但是不能骂人
顺便记录一下,微信支付成功后,回调界面关闭时会有一个闪屏(有的手机是没有的),这是因为WXPayEntryActivity本身是一个空白界面,finish时会有闪屏的效果,
解决这个问题只需要将WXPayEntryActivity变成透明:
android:theme="@android:style/Theme.Translucent"
这样视觉上就感受不到它的finish效果。
微信登录与微信分享同回调WXEntryAcitivity,区别是BaseResp.getType()返回值不同
BaseResp.getType() == 1;则为微信登陆,
BaseResp.getType() == 2;则为微信分享(之前好像是0)