详解vue项目接入微信JSSDK的坑


Posted in Javascript onDecember 14, 2018

用于记录接入微信JS-SDK的坑,以后方便查询 第一次接入公众号微信支付、分享、定位等等的坑的时候,心里是迷茫而又恐惧。因为,听说坑特别多,后来发现自己的亲身体验到了这一点。

支付的坑

1、当前URL未注册

详解vue项目接入微信JSSDK的坑

问题: 微信公众号H5调起支付时,点击支付按钮出现“当前页面的URL未注册”的提示。

解决办法:由于2017年8月1日微信官方把关于支付的信息转移到了商户平台:公众平台微信支付公众号支付授权目录、扫码支付回调URL配置入口已于8月1日迁移至商户平台(pay.weixin.qq.com )

所以进入以下位置:

登录微信商户平台-产品中心-开发配置,配置支付授权路径。如果掉起支付的页面在 域名/pay.html中,那么就在此添加授权路径, 如我的掉起支付的页面在www.weixinPay.com/pay.html 中,那么授权目录就配置为htt://www.weixinPay.com/

tip: 注意:后面的 / 一定要加上,表示该路径下的页面都可以调起微信的支付接口。

详解vue项目接入微信JSSDK的坑

2、如果按照以上还是弹出当前URL未注册 因为微信支付对spa项目的hash路由兼容还是不很好。需要加上一个 "?" 如图:

详解vue项目接入微信JSSDK的坑

代码如下:

watch: {
 $route() {
  this.directRightUrl()
 }
},
methods: {
 directRightUrl() {
 let { href, protocol, host, pathname, search, hash } = window.location
 search = search || '?'
 let newHref = `${protocol}//${host}${pathname}${search}${hash}`
 if (newHref !== href) {
  window.location.replace(newHref)
 }
 }

我这里是根据App.vue文件,进行路由监控。然后给每个页面都加上问号,虽然会些许性能消耗。但是方便省事,具体可以根据自己的页面适当修改。

微信JS-SDK说明文档

分享的坑

根据JS-SDK的文档,很多人都是在初始化的wx配置的时候,传入的当前的URL地址不正确。 然后就导致如下结果:

详解vue项目接入微信JSSDK的坑

解决办法: 请在保证后台能正确返回初始化需要的配置参数的情况下

详解vue项目接入微信JSSDK的坑

修改前:
// let currentUrl = window.location.href
修改后
let currentUrl = window.location.href.split('#')[0]

神奇成功了开心

详解vue项目接入微信JSSDK的坑

需要注意的几点:

jsApList: [] 需要加入对应参数。比如,分享加入'onMenuShareTimeline', 'onMenuShareAppMessage'。 具体的对应接口的参数可以参考文档

所有接口的调用,请保证在wx.ready()执行后,才调用。文档里面是这么建议的。

详解vue项目接入微信JSSDK的坑

定位的坑

刚开始定位的,内心是有点小激动的。因为觉得这个功能很高大尚,当然了这只是我个人的想法。好了~,不扯了。

同样的,给微信初始化的 jsApList 加入对应的参数。 然后在wx.ready()函数执行,但是,发现无论如何第一次进入页面都无法成功弹出授权弹框。

详解vue项目接入微信JSSDK的坑

后来发现,在页面完成之后。延迟一秒再进行获取定位,即可 百分百成功!坑爹有木有。 代码如下

详解vue项目接入微信JSSDK的坑

详解vue项目接入微信JSSDK的坑

目前遇到这个三个坑,后期遇到再写上吧。痛苦的经历需要不要再有了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery选择没有colspan属性的td的代码
Jul 06 Javascript
21个值得收藏的Javascript技巧
Feb 04 Javascript
jQuery获取动态生成的元素示例
Jun 15 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
Jul 02 Javascript
Node.js中文件操作模块File System的详细介绍
Jan 05 Javascript
利用node.js实现反向代理的方法详解
Jul 24 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
Dec 28 Javascript
jQuery创建及操作xml格式数据示例
May 26 jQuery
axios向后台传递数组作为参数的方法
Aug 11 Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
Oct 14 Javascript
vue动态子组件的两种实现方式
Sep 01 Javascript
javascript实现文字跑马灯效果
Jun 18 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
Dec 14 #Javascript
javascript中的event loop事件循环详解
Dec 14 #Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
Dec 14 #Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
Dec 13 #Javascript
node.js学习笔记之koa框架和简单爬虫练习
Dec 13 #Javascript
浅谈vuex actions和mutation的异曲同工
Dec 13 #Javascript
webpack3里使用uglifyjs压缩js时打包报错的解决
Dec 13 #Javascript
You might like
修改PHP脚本使WordPress拦截垃圾评论的方法示例
2015/12/10 PHP
php排序算法实例分析
2016/10/17 PHP
iframe的onreadystatechange事件在firefox下的使用
2014/04/16 Javascript
jQuery中unbind()方法用法实例
2015/01/19 Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
2016/05/23 Javascript
详解JS几种变量交换方式以及性能分析对比
2016/11/25 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
原生JS实现自定义滚动条效果
2020/10/27 Javascript
Vue-router 切换组件页面时进入进出动画方法
2018/09/01 Javascript
使用js在layui中实现上传图片压缩
2019/06/18 Javascript
关于angular 8.1使用过程中的一些记录
2020/11/25 Javascript
JavaScript中遍历的十种方法总结
2020/12/15 Javascript
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
python二叉树的实现实例
2013/11/21 Python
一则python3的简单爬虫代码
2014/05/26 Python
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
2014/08/25 Python
跟老齐学Python之做一个小游戏
2014/09/28 Python
Python数据类型详解(四)字典:dict
2016/05/12 Python
python实现人民币大写转换
2018/06/20 Python
Python Tkinter Entry和Text的添加与使用详解
2020/03/04 Python
TensorFLow 数学运算的示例代码
2020/04/21 Python
python简单实现9宫格图片实例
2020/09/03 Python
python中pyplot基础图标函数整理
2020/11/10 Python
飞利浦西班牙官方网站:Philips西班牙
2020/02/17 全球购物
大学生个人总结的自我评价
2013/10/05 职场文书
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
春季防火方案
2014/05/10 职场文书
林肯就职演讲稿
2014/05/19 职场文书
应急处置方案
2014/06/16 职场文书
2014年班长个人工作总结
2014/11/14 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
校长师德表现自我评价
2015/03/05 职场文书
2015年暑期社会实践方案
2015/07/14 职场文书
《清澈的湖水》教学反思
2016/02/17 职场文书
python中24小时制转换为12小时制的方法
2021/06/18 Python
JavaScript实现简单计时器
2021/06/22 Javascript