【Android】微信支付错误码 -1

本文介绍如何在Android应用中集成微信支付,并解决支付过程中遇到的问题。包括引入SDK、注册应用、发起支付及处理返回值等步骤。特别针对错误代码-1进行了详细分析,提供了排查和解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微信支付的实现非常简单,核心代码就十几行,但是一旦出问题,就很难找到问题所在

简单介绍一下:

  1. 引入包
		implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
  1. 在appliction中注册
		IWXAPI api  = WXAPIFactory.createWXAPI(this, null,false);
        api.registerApp("你的appid");
  1. 发起支付
		 // 数据是服务端生成的
		 IWXAPI api  = WXAPIFactory.createWXAPI(context, entity.getResp_data().getAppid(),false);
		 PayReq request = new PayReq();
         request.appId = entity.getResp_data().getAppid();
         request.partnerId = entity.getResp_data().getPartnerid();
         request.prepayId= entity.getResp_data().getPrepayid();
         request.packageValue = "Sign=WXPay";//entity.getResp_data().getDatapackage();
         request.nonceStr= entity.getResp_data().getNoncestr();
         request.timeStamp= entity.getResp_data().getTimestamp();
         request.sign= entity.getResp_data().getSign();
         api.sendReq(request);
  1. 接收返回值
	@Override
    public void onResp(BaseResp resp) {
		/*
		  0 支付成功
		 -1 发生错误 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
		 -2 用户取消 发生场景:用户不支付了,点击取消,返回APP。
		 */

        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
            // 根据返回码
            int code = resp.errCode;
            switch (code) {
                case 0:
                    // 去本地确认支付结果
                    EventBus.getDefault().post("0");
                    finish();
                    break;
                case -1:
                    Toasts.showShort(App.getAppContext(),"支付异常");
                    finish();
                    break;
                case -2:
                    Toasts.showShort(App.getAppContext(),"支付已取消");
                    finish();
                    break;
                default:
                    Toasts.showShort(App.getAppContext(),"支付失败");
                    finish();
                    break;
            }
        }
    }

什么目录结构之类的就不在赘述了,主要说一下最坑的错误代码: -1

因为支付是服务端统一下单的,数据都是组装好的,如果不是的话,再检查一下签名加密之类的。
理论上来说,我这边直接po过去,就调起微信,开始支付。也成功了,后来就没管了。
等打包的时候,在后台改了md5,但,开始报错了,-1。
各种检查,各种怀疑人生,还是-1 。
闲得蛋疼,把微信账号退了,再次开启支付。
首先是调起了微信,要求登录,好,登录一个新的微信账号,要求添加银行卡等支付前置,添加好了,支付成功了!

数据没问题的情况下,可以考虑清空微信的缓存。

个人猜测,微信调起支付的注册验证是优先本地的,即:
我在之前使用debug包在微信内注册一次,正常使用,当换为签名包时,MD5变更,验证失败,返回-1。清空缓存后,没在本地查找到注册,重新注册,通过。

有相同问题的可以尝试一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值