最近在研究调起微信支付,遇到了利用微信JSAPI提供中的wx.chooseWXPay()的方法,发现部分手机调不起支付,一直没有响应,但是部分苹果手机却调起成功了。

本菜鸟查询了整个发起支付的流程,都没有找到问题的原因,统一下单没有任何报错,证明提供给这个方法的参数是没有错误的。那么问题就是出现在这个方法,首先查看的是wx.config是不是报错了,不debug这个参数改成true,弹出的结果也是config:ok,这证明配置也没有问题,在没有解决方法的头绪的时候,只能百度,发现上面没有跟我遇到一样问题的,只有说调不起的原因是因为参数有错,但是我这个问题是在于有部分手机是可以调起,而且统一下单也没有报错,证明是没有问题。

于是只能回去从最原始的地方找解决方案,就是看微信开发文档,emmmm,发现上面提供的实例是旧版本的调用方法,对应的新版本的方法也只是介绍了怎么调用,并没有具体的实例,于是这个问题还是没有办法解决。只好用微信提供的检验JSAPI方法去测试,发现会报缺少APPID,但是这个wx.chooseWXPay()方法的参数并不需要用到APPID,再次陷入了困境,只能在网上继续浏览搜索,看看别人是怎么调用的,结果还真的发现一个有用的方法wx.ready()。

wx.ready()是在wx.config执行完后,才会执行里面的内容,于是我尝试把x.chooseWXPay()放进wx.ready()里面,发现真的可以修复这个bug了,所有手机都可以成功调起支付,问题解决了。

个人猜测:由于部分手机加载速度问题,导致wx.chooseWXPay()的执行比wx.config()要快多了,导致config都还没配置好,wx.chooseWXPay()就会没有反应。这跟手机性能有关,所以才会出现部分手机调起了。利用wx.ready()就可以判断config是否执行完了,执行完才会调用里面的内容,可以保证一定能够调起支付。

附上对应代码:

wx.ready(function(config){wx.chooseWXPay({timestamp: config.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符nonceStr: config.nonceStr, // 支付签名随机串,不长于 32 位package: config.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)signType: config.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'paySign: config.sign, // 支付签名success: function (res) {// 支付成功后的回调函数}});// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});

微信支付JSAPI 部分手机调不起支付原因相关推荐

  1. PHP 支付PC端扫码支付、APP接口调起支付宝支付、微信公众号接入支付宝支付

    第一:第三方支付原理 第二:支付接口申请流程 地址:https://docs.open.alipay.com/270/105899/ : 参考地址:https://blog.csdn.net/nove ...

  2. 调用支付jsapi缺少参数:total_fee_小程序支付问题怎么解决?

    微信小程序开发的过程一定会遇到各种问题,最让人棘手的就是支付问题,因为没有支付做商城类似的小程序就没有办法完成最关键的一步.那么支付失败到底什么原因呢?一下子收集了几个错误类似,希望对你有帮助: No ...

  3. 支付宝手机网页唤醒app支付

    请直接看原文 下面链接是新版本的RSA2加密方式,这篇介绍的是老版本的手机网站唤醒app支付 新版支付宝手机网站唤醒app支付.支付宝pc支付.支付宝无密退款实现 http://blog.csdn.n ...

  4. 微信支付接口,提示:调用支付jsapi缺少参数: $key0$

    下面是 官方给的 帮助文档. 支付返回签名错误 注意签名参数的大小写,支付密钥key要到商户平台设置,设置的规则是32位数字与字母大小写的组合.以下链接为签名过程. (https://pay.weix ...

  5. 微信支付 jsApi 微信浏览器内支付

    1. 调起微信支付的域名要和微信支付配置的一致,导致无法本地测试 解决方案: 修改本地host文件将配置的域名指向本机, 手机wifi使用本机代理上网. IJPay-All文档地址 1. maven中 ...

  6. php微信jsapi支付小结,ThinkPHP接入微信支付 - JSAPI支付

    一.支付准备 二.获取用户openid 首先,到微信公众平台后台 - 设置 - 网页授权域名(别忘了添加开发者) // 在头部引入WechatPubService.php文件,见附录一 use app ...

  7. JSAPI支付——H5网页端调起支付接口

    1 /**2 * JSAPI支付--H5网页端调起支付接口3 */4 class JsApi_pub extends Common_util_pub5 {6 var $code;//code码,用以获 ...

  8. 实战:第八章:支付宝Native,JSAPI支付与微信Native,JSAPI,MWEB支付实现

    首先是H5的支付,先看控制层的代码 @AutowiredAliPayH5Bean aliPayH5Bean;@AutowiredWxPayH5MWEB wxPayH5MWEB;@AutowiredWx ...

  9. Android微信登录在华为手机上无法调起授权界面的问题

    Android微信登录在华为手机上无法调起授权界面的问题 App集成了微信登录,在其他手机上微信登录都可以正常调起微信授权页面,并且登录成功,但是 在华为手机上调用微信登录,没报异常,也无法调起微信授 ...

最新文章

  1. 计算机右键无法新建excel2007,Win7系统安装Office2007后,Excel不能自动关联,而且右键新建菜单里也没有新建Excel的选项...
  2. Java中在一个字符串的固定位置插入字符串
  3. PHP-代码审计-文件删除
  4. 处理gateway service使用过程中遇到的400 error - Malformed URI literal syntax
  5. 物联网项目:将Arduino连接到Ubidots和Android –第1部分
  6. linux 系统修复 启动盘,linux服务器系统盘坏且系统盘为软raid的修复方法
  7. 阿里云盘tv版 v1.0.6电视版
  8. 关于我的 “二进制部署 kubernetes 集群” 的体验
  9. Oliver的成绩(vector)
  10. oracle stdevp函数,SQL Server和Oracle的常用函数对比
  11. 计算机技术为艺术设计提供,计算机技术艺术设计论文
  12. 数据流—DataStreamAPI
  13. render_template()
  14. linux搭建天地伟业easy7,easy7视频监控系统客户端|天地伟业easy7监控客户端简洁版(Easy7 Smart Client Express)下载 V7.12 官方版 - 比克尔下载...
  15. 把房子卖了,把工资发了
  16. 英语四六级听力有线传输无线发射系统方案-不用申请频率的英语四六级听力无线发射系统
  17. 全国计算机大赛价值,奖品总价值17万的ProArt视觉创作大赛就等你啦!
  18. 忘了什么,都请别忘了音乐
  19. 《亚马逊二十年—贝索斯的公开信》
  20. SolidWorks二次开发SelectByID2的用法

热门文章

  1. 华大HC32F460 DCU实验
  2. git push -u origin master 本地代码上传gitlab远程仓库出错
  3. U盘PE系统制作教程(附pe启动教程+软件获取方式)
  4. 国产开源类ChatGPT模型,ChatGLM-6b初步微调实验
  5. MQ理论介绍与主流MQ对比
  6. 6.4向量空间模型,余弦相似度计算
  7. HTML <iframe> sandbox属性
  8. JavaScript 强制类型转换(String)
  9. 银河证券发布财富管理方案和新版手机APP
  10. gmail怎么发送html,如何通过gmail api for python发送HTML格式的电子邮件