在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 相关文章推荐
DEFER怎么用?
Jul 01 Javascript
jquery的ajax从纯真网(cz88.net)获取IP地址对应地区名
Dec 02 Javascript
有趣的JavaScript数组长度问题代码说明
Jan 20 Javascript
location.href用法总结(最主要的)
Dec 27 Javascript
禁用页面部分JavaScript不是全部而是部分
Sep 03 Javascript
JavaScript中实现依赖注入的思路分享
Jan 15 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
Mar 03 Javascript
js检测iframe是否加载完成的方法
Nov 26 Javascript
Bootstrap基本模板的使用和理解1
Dec 14 Javascript
angular2路由切换改变页面title的示例代码
Aug 23 Javascript
JS跨域请求的问题解析
Dec 03 Javascript
JavaScript对象访问器Getter及Setter原理解析
Dec 08 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 自定义错误处理函数的使用详解
2013/05/10 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
php实现粘贴截图并完成上传功能
2015/05/17 PHP
PHP实现简单爬虫的方法
2015/07/29 PHP
PHP的Json中文处理解决方案
2016/09/29 PHP
php 中的closure用法详解
2017/06/12 PHP
Jquery 复选框取值兼容FF和IE8(测试有效)
2013/10/29 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
js基础之DOM中元素对象的属性方法详解
2016/10/28 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
js动态引入的四种方法
2018/05/05 Javascript
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
微信小程序实现选项卡效果
2018/11/06 Javascript
layer提示框添加多个按钮选择的实例
2019/09/12 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
[51:06]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第二场 1月26日
2021/03/11 DOTA
Python中的Matplotlib模块入门教程
2015/04/15 Python
Python可变参数用法实例分析
2017/04/02 Python
python使用正则表达式的search()函数实现指定位置搜索功能
2017/11/10 Python
Python简单实现控制电脑的方法
2018/01/22 Python
python读取excel指定列数据并写入到新的excel方法
2018/07/10 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
2018/09/13 Python
python装饰器常见使用方法分析
2019/06/26 Python
Python中查看变量的类型内存地址所占字节的大小
2019/06/26 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
HMV日本官网:全球知名的音乐、DVD和电脑游戏零售巨头
2016/08/13 全球购物
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
JSF的标签库有哪些
2012/04/27 面试题
工作自我评价分享
2013/12/01 职场文书
组织关系转移介绍信
2014/01/16 职场文书
观看《永远的雷锋》心得体会
2014/03/12 职场文书
小学生节约用水倡议书
2014/05/15 职场文书
教育合作协议范本
2014/10/17 职场文书
2014年质检员工作总结
2014/11/18 职场文书
教师理论学习心得体会
2016/01/21 职场文书
Java 超详细讲解设计模式之中的抽象工厂模式
2022/03/25 Java/Android