微信app支付返回-1错误的情况解决方法

做过微信支付的都知道这是一个坑。。。


总结了一下最近两次微信支付中碰到的问题:


<span style="font-size:14px;">switch (resp.errCode) {
                case -4:// 认证被否决
                    ToastUtils.showToast(this, R.string.authorize_refuse);
                    finish();
                    break;
                case 0:// 正常返回
                    if (PayActivity.order_comefrom_orderdetail) {
                        finish();
                        for (int i = 0; i < BaseApplication.mActivitys.size(); i++) {
                            if (BaseApplication.mActivitys.get(i) instanceof PayActivity) {
                                BaseApplication.mActivitys.get(i).finish();
                            }
                        }

                        return;
                    }
                    commonDialog = DialogUtils.CommonDialog(this, handler, R.string.pay_result, -1, R.string.to_home, -1);
                    break;
                case -1:// 一般错误
                    ToastUtils.showToast(this, R.string.general_error+resp.errStr);
                    finish();
                    break;
                case -3:// 发送失败
                    ToastUtils.showToast(this, R.string.send_failed_retry);
                    finish();
                    break;
                case -5:// 不支持的错误
                    ToastUtils.showToast(this, R.string.unsupport_error);
                    finish();
                    break;
                case -2:// 用户取消
                    ToastUtils.showToast(this, R.string.pay_cancel);
                    finish();
                    break;
            }</span>



碰到最多的、最头痛的应该就是这个“-1”的错误了(想再喷一下微信,就不能分的细一点?)。


以下总结一般哪些情况会是-1:

  • 签名:
签名问题主要是app打包时,需要以正式的签名进行打包,不然是调起不了微信的,签名问题,可以到这里查看如果将签名信息填写到微信服务器上https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5。

  • 缓存?   
   这个主要是看网上很多人说的有可能需要清除微信的缓存才可以调起,如果各种方法都试过了,你可以试着清一下。反正我试了没用。

  • appid
   这点一般都不会出错,可能是你瞎了填错了,或者微信后台的appid被别人换了,去这里检查一下就好https://open.weixin.qq.com/


  • 服务器订单签名
 这一点也很容易出错,我两次出问题都是卡在这里,其实对照着https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1里面写,一般不会出错,只是有一点要:

 package:这个字段,一定要传,签名的时候后台一定要加进去,为什么坑呢,因为微信文档里写着,“”暂填写固定值Sign=WXPay”,坑了很多人,很多人不写就会出错。还有就是用android 中gson解析的时候package与java关键字冲突(不知道微信是怎么想的。。),要手动解析,或者你就不管它,手动赋值“Sign=WXPay”



  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值