1.关于微信支付返回-1的问题
从微信的官方文档来看,支付返回-1的都是ERR_COMM,也就是普通的,常见的错误。普通我倒是没觉得,常见我倒是常常见。
所有人都知道微信支付返回-1无非就是那几个常见的错误,什么sing错误,APP_ID错误什么什么的,但是很多情况都会返回-1,现在我们来一步一步的做排除。
2.一步一步的排除
2.1关于PayReq的配置
msgApi = WXAPIFactory.createWXAPI(RechargeActivity.this, APP_ID,false); msgApi.registerApp(APP_ID); PayReq request = new PayReq(); request.appId = json.getString("appid"); request.partnerId = json.getString("partnerid"); request.prepayId = json.getString("prepayid"); request.packageValue=json.getString("package"); request.nonceStr = json.getString("noncestr"); request.timeStamp = json.getString("timestamp"); request.sign = json.getString("paySign"); msgApi.sendReq(request);
appid:平台生成的
partnerId,nonceStr,timeStamp:后台给的
prepayId,sign:后台签名给返回的
packageValue:现在都写成固定值,而且也是微信官方推荐的"Sing=WXPay"
一般情况下req配置这几个就可以完成支付了,这个参数的值都是后台给返回的,可以让后台返回一个字符串自己解析进行赋值
2.2关于WXPayEntryActivity
当wxApi.sendReq(req);以后,会吊起这个类(这个类懒得话可以直接从官方demo中拷贝过来),这个类里的其他代买不要动,只需要动两个地方就可以了
第一:配置好自己的APP_ID
第二:
@Override public void onResp(BaseResp resp) { switch (resp.errCode){ case 0: //成功 break; case -1: //失败 break; case -2: //用户取消 break; }重写onResp方法,在里面坐一些支付结果的处理
2.3关于包名的签名
在微信开发平台的位置上,一定要讲包名和包名的签名写对了,签名就用微信官方的签名工具生成,一定要确保包名与你工程的包名一模一样
最后,其实debug和release版都可以测试微信支付,我个人觉得返回-1和debug和release版本的问题没有多少关系,至少我在处理返回-1的问题上只要能支付成功,debug和release都行,如果不行的话两个版本都不行;还有关于缓存的问题,个人觉得支付的成功与失败和缓存也没有多少关系,至少现在还没有遇到
当你确定上边三处都没有问题的话,就要等你的后台了,因为客户端能做的就有这么多了,最后祝完美解决问题,千万不要焦虑,那样只会适得其反。