当前位置:   article > 正文

【避坑指南】在安卓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
  • 2
  • 3
  • 4
  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”,非常恶心:
    在这里插入图片描述
    在这里插入图片描述
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/989116
推荐阅读
相关标签
  

闽ICP备14008679号