在开发中,支付功能越来越普遍。相应的开发中遇到问题的人也越来越多。在此记录一下微信支付中出现的无法调起支付,调起后errrorCode一直返回-1,签名错误等问题的解决办法。
1.签名
最常见的错误。具体查看app签名请用官方提供的signApk,保持app签名、包名与平台配置的一致即可,就不再赘述了。在此想提一下的是对于使用AndroidStudio开发者来说, 可以在gradle中配置秘钥信息,这样就可以省去了每次打包再安装测试的时间。具体如下。
//该节点写在android节点下。
signingConfigs{
debug {
keyAlias '别名'
keyPassword '别名密码'
storePassword 'keyStore密码'
storeFile file('keyStore路径')
}
release{
keyAlias '别名'
keyPassword '别名密码'
storePassword 'keyStore密码'
storeFile file('keyStore路径')
}
}
2.清单文件配置
貌似微信的文档里边并没有注明这个。如果没有正确配置会导致无法调起支付。
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="appId"/>
</intent-filter>
</activity>
3、调用微信统一下单API、以及返回数据给前端时候的sign问题。
这个也是重点,因为微信的文档实在是很坑人。
- 调用统一下单时候的商户key,让人摸不着头脑的一个值。实际上这个是要登陆到商户平台去设置的,仔细看看文档也能找的到。具体步骤是 微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置
- 调用统一下单API后,按照微信文档中的业务流程,下一步该是:
统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。
参与签名的字段名为appId,partnerId,prepayId,nonceStr,timeStamp,package。注意:package的值格式为Sign=WXPay
重点来了 个人认为这是文档中最大的坑。请注意上文中的key字段命名,没错,驼峰命名很规范。但是呢,实际上在做sign操作的时候,参与签名的这些key都
必须全是小写的 必须全是小写的 必须全是小写的
目前记起来的大概是这些,希望能帮到大家。
水平有限,若有错误请指正!