微信支付那些特别的坑
来源:互联网 发布:mac os x系统更新失败 编辑:程序博客网 时间:2024/05/16 03:14
场景
最近新的App要集成微信支付,因为知道微信支付的坑比较 多,虽然之前的App集成过微信支付,但是挪过照搬过来的时候还是小心翼翼的,可结果还是不尽如人意啊,偏偏遇到了ios提示签名错误,Android 调用微信白屏并且errCode=-1的结果,根据微信官方对该code的解释,我们Android、ios两端和后台来来回回核对了好几遍签名、APPID和后台订单参数的处理,仍然没有任何的头绪,经过一天多的各种查找测试,后台同事一声大骂,发现了拷贝的微信官方java文件WXPAY.java里关于sign加密类型处理的判断才是根源所在。,代码如下:
if (useSandbox) { this.signType = SignType.MD5; } else { //第一次调用统一下单接口虽然用HMACSHA256也可以成功,但是二次签名返给手机端后,手机端调微信会报签名错误 this.signType = SignType.HMACSHA256;}
其他博文普遍提到的微信支付的坑
- APPID是否和微信开放平台申请的一致。
- 后台设置的签名是商户平台设置的密钥。
- WXPayEntryActivity.java和wxapi包拷贝到项目的文件夹的位置是否正确。
- 在Manifest中是否声明了WXPayEntryActivity类,如代码:
<activity android:name=".wxapi.WXPayEntryActivity" android:exported="true" android:launchMode="singleTop"/>
客户端调用微信的判断
关于客户端调用微信的方法,微信官方文档也没有说明,大多数的博文也是一笔带过,如下代码:
final String APPID = "wxd930ea5d5a258f4f";IWXAPI msgApi = WXAPIFactory.createWXAPI(context, APPID, false);msgApi.registerApp(APPID);if (!msgApi.isWXAppInstalled()) { Toast.makeText(this, "未安装微信",Toast.LENGTH_SHORT).show();} else if (!msgApi.isWXAppSupportAPI()) { Toast.makeText(this, "当前微信版本不支持支付",Toast.LENGTH_SHORT).show();} else { //调用微信支付}
在测试支付的时候发现,在不是最新版本的微信上,虽然API的isWXAppSupportAPI()判断提示当前微信版本不支持支付,但是实际却可以调用起来微信进行支付,因此我只采用了isWXAppInstalled()方法判断,如果安装了则直接调用微信进行支付。
在IOS上,多数厂商的App采用的是先调用API的openWXApp()方法,然后调用微信支付。
阅读全文
0 0
- 微信支付那些特别的坑
- 微信支付的那些坑
- 微信支付的那些坑
- 微信支付的那些坑!
- 微信支付的那些坑
- 微信支付的那些坑
- 微信支付的那些坑
- 细数Android微信支付的那些坑
- 关于Android微信支付的那些坑
- Android植入微信支付的那些坑
- 那些年,微信公众号支付爬过的坑
- 微信公众号H5支付遇到的那些坑
- iOS 微信支付的那些事
- 微信支付,那些头疼的过往
- 关于微信支付的那些事
- 微信支付的那些小事
- iOS微信支付那些坑
- 微信支付那些事
- JAVA学习篇--Servlet详解
- 数组与矩阵---未排序数组中累加和小于或等于给定值的最长子数组问题
- JS数据结构:链表
- 《Python语言及其应用》读书笔记(7)之第8章数据的归宿(关键词:数据)
- Android使用SVG小结
- 微信支付那些特别的坑
- JAVA中的反射机制
- 1008. 数组元素循环右移问题 (20)
- 如何判断所捕获的异常类型,并根据其进行优雅处理
- 密码学之hill密码
- shell命令-grep常用命令
- unity总结(0916)
- 使用node webkit直接打开某个文件夹
- SSH常见问题