微信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”



已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页