前言
最近项目在做支付板块 支付主要用到支付宝和微信支付
支付宝支付这里就不多说了 很简单 按照官方demo套就可以了 30分钟解决支付宝支付
这里重点说一下微信支付 和遇到的问题 并如何解决的问题过程
gif图
问题
在对接微信支付过程中 遇到了返回-1值的问题 一直返回签名或其他错误
这个问题折磨了我1天时间 真的是无从下手 没有具体的报错说明 只能从参数下手 一个一个排除法
常用参数基本都是后台返回的 不会有什么问题 而且IOS那边已经跑通了微信支付
只有我android端 err code = -1
微信支付
首先去微信开发者平台下载微信支付的demo 看下里面的支付代码
然后从后天获取数据 解析出来后 给 PayReq
这个类设置参数
参数有7个
req.appId = jsonObject.getString("appid");
req.partnerId = jsonObject.getString("partnerid");
req.prepayId = jsonObject.getString("prepayid");
req.timeStamp = jsonObject.getString("timestamp");
req.nonceStr = jsonObject.getString("noncestr");
req.packageValue = jsonObject.getString("package");
req.sign = jsonObject.getString("sign");
问题描述
遇到的问题就是 安卓 app支付 如果在没有登录微信客户端账号的情况下
点击按钮可以调起微信客户端 并可以填写账号和密码进行登录
但是点击登录后界面立马变成了空白界面 而不是微信支付界面
然后打出的log onPayFinish, errCode = -1
如果已经登录了微信客户端 点击 支付按钮 界面直接 变成了空白 解决了很久很久
导致errorcode返回-1
更新于2020-09-17 14:35
提示1:
方法一:如果你使用的测试服务器地址 也是走不通微信支付的 返回 -1;
我在使用测试服务器地址测试的时候 也是走不通微信支付 返回-1;
但换成线上域名之后,就可以微信支付成功了。
提示2:
方法二:微信开发者平台 客服回复的答案 有关于缓存的问题 这个问题我亲测确实是有的解决办法 就是换一台手机试一下。我是通过这个方法解决的。
还有以下解决思路 可以看下 是不是这个问题
解决思路
后台获取的参数都是不变的 出错的几率很小
IOS那边已经调通了 说明数据源没有问题
所以能出错的地方只有 签名和 其他错误了
我们先看下签名错误
签名分两种 debug 和 release
这种对接第三方的 哪怕是debug版本最好也使用自己的签名
keystore用自己的 然后在build. gradle里边配置好打包需要的签名
先生成一个签名文件 就是.jks文件 然后将这个签名文件复制到app的根目录下
再配置 debug 和 release 相对路径
说的好像有点乱 下面代码说明一下
build. gradle(app)配置代码
signingConfigs {
release {
keyAlias '口令'
keyPassword '私钥'
storeFile file('fulloilkeystore.jks')
storePassword '密码'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug {
signingConfig signingConfigs.release
}
}
build. gradle配置文件签名
签名文件复制到app的根目录下 方便打开app后配签名信息
最后
配置好签名文件后 打一个正式包
然后安装到手机上 32位签名工具下载地址
最后配置开发信息 就OK了
总结
微信对接 确实比支付宝麻烦一些 经历了也算学到了
有问题可以一起讨论
共勉
我要一步一步往上爬
在最高点乘着叶片往前飞
任风吹干流过的泪和汗
我要一步一步往上爬
等待阳光静静看着它的脸
小小的天有大大的梦想
我有属于我的天
任风吹干流过的泪和汗
总有一天我有属于我的天