关于微信支付,以及返回-1的问题(千万不要慌不要慌!)

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都行,如果不行的话两个版本都不行;还有关于缓存的问题,个人觉得支付的成功与失败和缓存也没有多少关系,至少现在还没有遇到

当你确定上边三处都没有问题的话,就要等你的后台了,因为客户端能做的就有这么多了,最后祝完美解决问题,千万不要焦虑,那样只会适得其反。

 

你可能感兴趣的:(android开发,BUG收集)