国内最大的两家移动支付就数 支付宝微信支付了. 一般我们 app 接入支付就必备这两个. 然而相比我们一小时接入支付宝的效率而言, 微信支付却有可能让你花费一个下午都调不出结果.

而其中最大的坑就是调用支付时返回了的 -1 状态码.

现在教大家怎么爬出这个深坑. 请按照以下步骤核查一遍.

  1. 在微信开放平台上检查 app 的 包名 以及 签名 有没有问题.
  2. 打包测试时使用微信开放平台上填写的 签名keystore 生成 apk. 或者直接在 build.gradle 中做如下设置.
//配置keystore签名
signingConfigs {
    release {
        storeFile file("keystore/mykeystore.jks")
        storePassword "密码"
        keyAlias "别名"
        keyPassword "key密码"
    }
}


buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release
    }

    debug {
        signingConfig signingConfigs.release
    }
}

如果还是返回 -1 那么这个问题基本上可以确定不是你服务端的锅. 那么如何来百分百确定呢? 当然是我们自己去向微信请求 统一下单 的 api 了! 我封装了一个app请求微信统一下单类 , 小伙伴们可以放在 app 里直接调用, 注释也很详细了. 使用该类可直接在app内部生成预付款ID并成功调用微信支付. 如果你成功了的话,那么说明你的代码以及接入方式没有问题, 直接摔锅给后台! 衷心希望能帮到大家.

注意这个类只是用来本地测试用(打脸后台) 真正要上线时还是要把生成逻辑放在客户端, 私钥放在工程里是很危险的!切记!