微信支付爬坑传

背景

现在随着支付方式的便捷,各种各样的APP都需要集成支付功能,国内主要的支付方式主要就是 微信支付支付宝

支付宝 集成比较方便,而且没什么坑,官方文档也比较完善这里暂且不谈。主要谈谈 微信支付 ,这个东西还是比较麻烦很少有一次性成功的,大多数都是在调起微信支付的时候返回 -1,然后去百度一大堆。

问题来源

Android端大多数情况是签名的问题,网上也能百度的,但这里还是记录一下。

  • 1.检查APPID是否正确
    APPID

  • 2.支付能力申请开通

  • 包名和应用签名

这里主要讲一下签名的问题,如果你用AS,你可以用AS生成,
Build -> Generate Signed APK -> Create new 填好参数即可生成。
打开cmd命令行工具进入.android 目录下输入 keytool -list -v -keystore 你的签名文件目录

然后输入你设置的密码就可以看到签名信息了

切记!微信填入的要去除冒号,字母全部小写

然后不能用调试的应用来测试微信支付,不然又是一个-1,调试默认用的是的debug.keystore ,要么你打个带签名的release包出来,但是这样很麻烦,不便于调试,所有,我们在调试的使用用我们自己的签名即可。

在build.gradle 文件 android{}下添加

signingConfigs {
        release {
            //将你的签名文件放在app目录下
            storeFile file("keystore.jks")
            storePassword "123456"
            keyAlias "mucool"
            keyPassword "123456"

            // 满足下面两个条件时需要此配置
            // 1. Gradle版本 >= 2.14.1
            // 2. Android Gradle Plugin 版本 >= 2.2.0
            // 作用是只使用旧版签名,禁用V2版签名模式
            v2SigningEnabled false
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.release
            debuggable true
            jniDebuggable false
            minifyEnabled false
            zipAlignEnabled false
            proguardFile 'proguard-rules.pro'
        }
        release {
            signingConfig signingConfigs.release
            debuggable false
            jniDebuggable false
            minifyEnabled true
            zipAlignEnabled true
            proguardFile 'proguard-rules.pro'
        }
    }
}

大功告成!!!

然鹅,有时候还是会返回-1,这就很尴尬啦!而且IOS还能跑通,这就更尴尬啦!

这个时候你就需要检查一下调起微信支付的参数是否正确啦!

PayReq req = new PayReq();
req.appId = App.PLUS_APP_ID;
req.partnerId = response.payResult().partnerId();
req.prepayId = response.payResult().prepayId();
req.packageValue = response.payResult().packageName();
req.nonceStr = response.payResult().nonceStr();
req.timeStamp = response.payResult().timeStamp();
req.sign = response.payResult().sign();
App.plusApi.sendReq(req);

uniapp 中一定要注意appid,要小写,不然后果就是IOS能调起,而Android调起返回-1。

配合后台检查后台填写的参数是否,大小写,商户ID,任何一个错都会返回-1.

最后总结一下,微信支付是真的坑,错误码太少,基本上碰到的都只有-1,根本不清楚是什么参数错误导致,所以比较难排查,但是一定要胆大心细,相对支付宝就很简单,错误码完善,移动端工作少。在工作中一定要耐得住寂寞才行,不要浮躁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值