混合型APP集成微信支付,及填坑

公司开发的某app需要集成微信支付功能,在集成过程中也是遇到了很多坑,特此记录下这些填坑的过程(仅记录android版)

1. 环境:

混合app框架:cordova 8.0.0

cordova create 项目名 包名(需要和微信开放平台填写的一致) app名

微信支付cordova插件:cordova-plugin-wechat  2.1.0

cordova-plugin-wechat插件版本很多,我安装的是稍微老一点的版本,最新的三个版本deprecated了

cordova plugin add [email protected] --variable wechatappid=替换成你的appid

2. 前期准备:

  • 第一步:微信开放平台注册账号,申请开发者认证(竟然还要收费300RMB),获得appid
  • 第二步:创建应用,需要注意的地方,android平台“应用包名”要和apk的包名一致,“应用签名”可通过微信提供的工具获取(需要keystore签名的apk),ios平台Bundle ID也要和应用程序Bundle identify值保持一致
  • 第三步:申请应用审核通过后,即可申请开通微信支付了,支付开通后会获得商户号,这里需要自己设置秘钥key(微信商户平台自行设置)
  • 至此,就可以开始你的微信支付集成了

3. 填坑之路

坑1:manifest.xml文件提示找不到.wxapi.WXEntryActivity和.wxapi.WXPayEntryActivity

         cordova8.0.0打包后的android平台目录结构发生了改变,导致添加wechat插件后,wxapi这个目录不在platforms/android/app目录下,而是在platforms/android/src目录下,直接将wxapi整个拷贝到app的java目录应用包名下

坑2:一定要用正式签名的release版本apk,debug版本apk调不起微信支付,我这里是采用的android studio自带的签名工具生成keystore文件并签名apk的

坑3:签名不对导致调不起微信支付,项目中统一下单是在后台服务器进行的,签名也是在后台进行的,这里进行签名的时候,一定要根据微信的“调起支付接口”的请求参数(6个参数变量名也要和接口文档一致),签名方式要与统一下单一样。签名不正确是调不起微信支付的,会一直返回-1。

坑4:android能成功调起微信支付,但ios一直提示“支付验证签名失败”,再确定相关参数配置无误之后,发现api文档提示,时间戳的位数是10位,ios系统只支持10位数的时间转换,因此后台需要转换成10位数的时间戳,这也是没有注意文档细节导致的问题。

校验签名是否正确可采用微信提供的工具校验https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=20_1

4.总结

虽然集成微信支付成功后咋一看是很简单,感觉一个小时就搞定了,但作为一个小白,微信支付集成也是调试了好几天填了不少坑才完成,最开始没注意到微信开放平台应用包名要和cordova创建的包名一致,也没主要到要用正式签名的apk获取应用签名,这个坑也花了点时间填;其次一定要用release版本的apk;最后签名一定要和官网提供的工具生成的签名一致,时间戳采用10位。记录下,附一个demo截图:

猜你喜欢

转载自blog.csdn.net/zxj0904010228/article/details/82797693
今日推荐