【避坑指南】在安卓APP接入微信支付

  1. 微信支付涉及到两个平台,一个是微信开放平台,另一个是微信支付商户平台,需要在微信开放平台上创建应用,然后关联微信支付商户平台的商户号
  2. 微信支付只用到AppID和API密钥(微信商户平台(pay.weixin.qq.com)–>账户中心–>账户设置–>API安全–>设置API密钥),没有用到AppSecret
  3. 微信支付有两个过程,一个是发起预支付(即"统一下单",详见https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1),另一个是正式支付(即"调起支付接口",详见https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_12&index=2),只有先发起预支付才能拿到prepayId,而且通过Post到https://api.mch.weixin.qq.com/pay/unifiedorder时报文需要是xml格式,预支付的结果也是通过xml回传;
  4. 预支付的签名算法要和正式支付的签名算法一致,详见https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=4_3#,里面有个签名校验工具,可以看看自己计算出来的签名是否一致;
  5. 预支付订单的传参中有个package="Sign=WXPay"的项,注意字符串分割时"Sign=WXPay"不要也被分割开了
  6. 运行报错 “ClassNotFoundException: com.tencent.xweb.pinus.sdk.JNIUtils” 但是检查过appId和签名都没问题,那就尝试一下在AndroidManifest中添加如下代码:
  <!--包体可见性-->
  <queries>
    <package android:name="com.tencent.mm" />
  </queries>
  1. 支付前弹出提示“签名不对,请检查签名是否与开放平台上填写的一致”,其实就是打包用到的keystore不对,一定要与微信开放平台上填写的包名和签名一致,如果你keystore不对,那么计算出来的签名也是错误的,在这个链接里可以下载一个apk签名生成工具,输入包名就能得到签名。https://developers.weixin.qq.com/doc/oplatform/Downloads/Android_Resource.html
  2. 横屏APP拉起微信支付的瞬间闪退,logcat日志显示"Uninitialized ActivityThread, likely app-created Instrumentation, disabling AppComponentFactory"啥的,这个我也没找到解决办法,但是把横屏APP改成竖屏APP后,就不会闪退了,并且可以看到其他报错,感觉是因为微信支付是竖屏的,但是支付过程又出现了异常,导致窗体闪退。
  3. 能拉起微信支付,但是弹窗提示“支付验证签名失败”,而且在上述第4步的工具中校验过签名没问题,那很大可能是统一下单和调起支付接口的参数字段名错了!比如二者都有的nonceStr字段,在统一下单叫“nonce_str”,在调起支付叫“noncestr”,非常恶心:
    在这里插入图片描述
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值