在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 相关文章推荐
XHTML下,JS浮动代码失效的问题
Nov 12 Javascript
date.parse在IE和FF中的区别
Jul 29 Javascript
更优雅的事件触发兼容
Oct 24 Javascript
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
Oct 11 Javascript
jQuery中andSelf()方法用法实例
Jan 08 Javascript
浅谈jQuery双事件多重加载的问题
Oct 05 Javascript
浅谈JavaScript的innerWidth与innerHeight
Oct 12 Javascript
基于vue.js的分页插件详解
Nov 27 Javascript
在vue项目中使用Nprogress.js进度条的方法
Jan 31 Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
Jun 05 jQuery
vue.js 子组件无法获取父组件store值的解决方式
Nov 08 Javascript
浅谈TypeScript的类型保护机制
Feb 23 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
WINDOWS服务器安装多套PHP的另类解决方案
2006/10/09 PHP
PHP全概率运算函数(优化版) Webgame开发必备
2011/07/04 PHP
php json与xml序列化/反序列化
2013/10/28 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
使用PHP免费发送定时短信的实例
2016/10/24 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
[原创]静态页面也可以实现预览 列表不同的显示方式
2006/10/14 Javascript
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
JQuery插入DOM节点的方法
2015/06/11 Javascript
基于JavaScript FileReader上传图片显示本地链接
2016/05/27 Javascript
jQuery多个版本和其他js库冲突的解决方法
2016/08/11 Javascript
Zepto实现密码的隐藏/显示
2017/04/07 Javascript
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
vue Tab切换以及缓存页面处理的几种方式
2019/11/05 Javascript
js实现计时器秒表功能
2019/12/16 Javascript
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
js实现无缝轮播图插件封装
2020/07/31 Javascript
举例讲解Python中装饰器的用法
2015/04/27 Python
Python+matplotlib实现华丽的文本框演示代码
2018/01/22 Python
将pandas.dataframe的数据写入到文件中的方法
2018/12/07 Python
python rsa实现数据加密和解密、签名加密和验签功能
2019/09/18 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
Python 列表的清空方式
2020/01/13 Python
python实现三种随机请求头方式
2021/01/05 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
美国在线购买空气净化器、除湿器、加湿器网站:AllergyBuyersClub
2021/03/16 全球购物
销售人员自我评价
2014/02/01 职场文书
小学六一儿童节活动方案
2014/08/27 职场文书
2014年平安夜寄语
2014/12/08 职场文书
2015出纳试用期工作总结
2014/12/12 职场文书
幼儿园个人总结
2015/02/28 职场文书
三好学生评选事迹材料(2016精选版)
2016/02/25 职场文书
该怎么书写道歉信?
2019/07/03 职场文书
常用的Python代码调试工具总结
2021/06/23 Python