详解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 相关文章推荐
列表内容的选择
Jun 30 Javascript
jQuery UI 实现email输入提示实例
Aug 15 Javascript
input禁止键盘及中文输入,但可以点击
Feb 13 Javascript
JavaScript制作windows经典扫雷小游戏
Mar 31 Javascript
通过BootStrap-select插件 js jQuery控制select属性变化
Jan 03 Javascript
基于vue实现分页/翻页组件paginator示例
Mar 09 Javascript
JS中的数组转变成JSON格式字符串的方法
May 09 Javascript
原生js封装运动框架的示例讲解
Oct 01 Javascript
node中间层实现文件上传功能
Jun 11 Javascript
简谈创建React Component的几种方式
Jun 15 Javascript
JS实现百度搜索框关键字推荐
Feb 17 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 Vue.js
微信小程序实现动态显示和隐藏某个控件功能示例
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之第十天
2006/10/09 PHP
基于xcache的配置与使用详解
2013/06/18 PHP
php页面防重复提交方法总结
2013/11/25 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
2019/04/17 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
JavaScript中的typeof操作符用法实例
2014/04/05 Javascript
浅谈javascript回调函数
2014/12/07 Javascript
JavaScript去除数组里重复值的方法
2015/07/13 Javascript
jQuery满意度星级评价插件特效代码分享
2015/08/19 Javascript
基于javascript实现页面加载loading效果
2020/09/15 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
webpack实现热加载自动刷新的方法
2017/07/30 Javascript
create-react-app构建项目慢的解决方法
2018/03/14 Javascript
vue cli 3.0通用打包配置代码,不分一二级目录
2020/09/02 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
Vue单页面应用中实现Markdown渲染
2021/02/14 Vue.js
由浅入深讲解python中的yield与generator
2017/04/05 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
python画双y轴图像的示例代码
2019/07/07 Python
python3 requests库文件上传与下载实现详解
2019/08/22 Python
NumPy中的维度Axis详解
2019/11/26 Python
Python编译成.so文件进行加密后调用的实现
2019/12/23 Python
浅析python表达式4+0.5值的数据类型
2020/02/26 Python
Python3 中sorted() 函数的用法
2020/03/24 Python
基于python调用jenkins-cli实现快速发布
2020/08/14 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
CSS中的字体大小设置属性总结
2016/05/24 HTML / CSS
2014离婚协议书范文
2014/09/10 职场文书
初三毕业评语
2014/12/26 职场文书
成绩单评语
2015/01/04 职场文书
廉洁自律证明
2015/06/24 职场文书
如何才能写好调研报告?
2019/07/03 职场文书