在vue中获取微信支付code及code被占用问题的解决方法


Posted in Javascript onApril 16, 2019

这个地方坑比较多,查看网上并没有详细的文档,新手一般写到这里很痛苦。这里我只介绍一下我解决的方案,虽然它不是最好的,但是可行的方案;

总体分两步
1)跳到微信支付链接,它会自动拼接上code
2)获取本网址,截取code;

在vue中哪里获取code?

在路由钩子函数beforeEach获取。(如果想了解beforeEach的用法,请关注我下一篇博客)。

在vue中获取微信支付code及code被占用问题的解决方法

我们去请求微信网址"https://open.weixin.qq.com/connect/oauth2/authorize?appid=" +appid +"&redirect_uri=" + spa +
"&response_type=code&scope=snsapi_base&state=123#wechat_redirect";

它会自动带上code ,我们在去截取到code,把code 传给后端,后端便可以拿到opinid.

如果是微信登录,我们会去请求后台验证接口验证是否登录,拿到登录返回信息,保存本地或者vuex;

如果是微信支付,我们同样去请求后台接口,此时code可能提示被占用,我们需要在beforeEach 中重新获取一遍code,官方文档说code 五分钟变化一次;

在vue中获取微信支付code及code被占用问题的解决方法

如果没有if条件的判断,它会反复跳正在登录中(包括登录的code获取也是,谁知道请留言告知一下),window.localStorage.getItem('realCode') 是定义在支付页面。

这样拿到code整个流程就通了。但是我们去获取code后,有时会用手机返回键,它又会跳到微信获取code的那个网址,这样就很烦了,只好在mounted钩子函数监听物理返回键,跳到指定的页面;虽然问题暂时解决了,但是体验感觉不是很好,有种闪屏的感觉;

其中遇到的坑有:支付一闪而过

1)原因找了很多,像目录是否配置正确,如:http://element.eleme.io/ 需写成http://element.eleme.io/#/zh-CN/component/

2) 签名错误 这个没办法了。是后台的方法写错了,排查了好久;

还有一个坑就是请求网址的转义问题:

redirect_uri 回调地址中需要把特殊符号转义掉,如果实在不知道可以百度在线转义,把网址复制进去就可以了;

redirect_uri的前缀http://不能省略

response_type=code (请求带回来的code)

scope=snsapi_base snsapi_base只能获取access_token和openID (静默授权); snsapi_userinfo可以获取更详细的用户资料,

比如头像、昵称、性别等(需要点击授权)

state=123 (随便填)

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

Javascript 相关文章推荐
实现JavaScript中继承的三种方式
Oct 16 Javascript
清空上传控件input file的值
Jul 03 Javascript
封装的原生javascript弹出层代码
Sep 24 Javascript
ModelDialog JavaScript模态对话框类代码
Apr 17 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
May 25 Javascript
js写一个字符串转成驼峰的实例
Jun 21 Javascript
jquery Tab效果和动态加载的简单实例
Dec 11 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
Jan 06 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
Nov 02 Javascript
如何使用bootstrap框架 bootstrap入门必看!
Apr 13 Javascript
JQuery Ajax 异步操作之动态添加节点功能
May 24 jQuery
EasyUI的DataGrid每行数据添加操作按钮的实现代码
Aug 22 Javascript
JavaScript实现选项卡效果的分析及步骤
Apr 16 #Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
Apr 16 #Javascript
详解滑动穿透(锁body)终极探索
Apr 16 #Javascript
一些手写JavaScript常用的函数汇总
Apr 16 #Javascript
浏览器事件循环与vue nextTicket的实现
Apr 16 #Javascript
理理Vue细节(推荐)
Apr 16 #Javascript
ES6知识点整理之Proxy的应用实例详解
Apr 16 #Javascript
You might like
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
2015/02/12 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
2017/03/15 PHP
PHP使用new StdClass()创建空对象的方法分析
2017/06/06 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
input、button的不同type值在ajax提交表单时导致的陷阱
2009/02/24 Javascript
javascript 兼容鼠标滚轮事件
2009/04/07 Javascript
深入剖析JavaScript中的枚举功能
2014/03/06 Javascript
javascript动态判断html元素并执行不同的操作
2014/06/16 Javascript
javascript实现模拟时钟的方法
2015/05/13 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
利用yarn代替npm管理前端项目模块依赖的方法详解
2017/09/04 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
2019/11/20 Javascript
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
2020/05/13 Javascript
jQuery 淡入/淡出效果函数用法分析
2020/05/19 jQuery
JS写滑稽笑脸运动效果
2020/05/28 Javascript
Python模块学习 filecmp 文件比较
2012/08/27 Python
Python内置函数dir详解
2015/04/14 Python
Python内置数据结构与操作符的练习题集锦
2016/07/01 Python
Golang与python线程详解及简单实例
2017/04/27 Python
python 字典的打印实现
2019/09/26 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
美国女性运动零售品牌:Lady Foot Locker
2017/05/12 全球购物
财政局长自荐信范文
2013/12/22 职场文书
群众路线个人对照检查材料2014
2014/09/26 职场文书
优秀党员事迹材料
2014/12/18 职场文书
违反纪律检讨书范文
2015/05/07 职场文书
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android