在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 相关文章推荐
3Z版基于jquery的图片复选框(asp.net+jquery)
Apr 12 Javascript
拥抱模块化的JavaScript
Mar 07 Javascript
JAVASCRIPT函数作用域和提前声明 分享
Aug 22 Javascript
js获取鼠标点击的位置实现思路及代码
May 09 Javascript
在jQuery中处理XML数据的大致方法
Aug 14 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
Apr 11 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
Feb 03 Javascript
angular json对象push到数组中的方法
Feb 27 Javascript
vue中子组件传递数据给父组件的讲解
Jan 27 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
May 28 Javascript
详解nginx配置vue h5 history去除#号
Nov 09 Javascript
vue实现无缝轮播效果(跑马灯)
May 14 Vue.js
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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
别人整理的服务器变量:$_SERVER
2006/10/20 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
2015/06/29 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
2010/05/07 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
javascript学习笔记(二)数组和对象部分
2014/09/30 Javascript
JavaScript编程中容易出BUG的几点小知识
2015/01/31 Javascript
js实现最短的XML格式化工具实例
2015/03/12 Javascript
详解addEventListener的三个参数之useCapture
2015/03/16 Javascript
javascript正则表达式基础知识入门
2015/04/20 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
基于AngularJS实现页面滚动到底自动加载数据的功能
2015/10/16 Javascript
js canvas实现擦除动画
2016/07/16 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
javascript设计模式之模块模式学习笔记
2017/02/15 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
JS apply用法总结和使用场景实例分析
2020/03/14 Javascript
Python库urllib与urllib2主要区别分析
2014/07/13 Python
Python实现获取网站PR及百度权重
2015/01/21 Python
实例讲解Python中global语句下全局变量的值的修改
2016/06/16 Python
Python多进程与服务器并发原理及用法实例分析
2018/08/21 Python
实例讲解Python3中abs()函数
2019/02/19 Python
如何实现Django Rest framework版本控制
2019/07/25 Python
浅谈keras中的目标函数和优化函数MSE用法
2020/06/10 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
Java里面如何创建一个内部类的实例
2015/01/19 面试题
车间班长岗位职责
2013/11/30 职场文书
大学自我鉴定范文
2013/12/26 职场文书
求职信模板标准格式范文
2014/02/23 职场文书
如何写自我评价?自我评价写什么好?
2014/03/14 职场文书
骨干教师考核方案
2014/05/09 职场文书
办公室文员岗位职责范本
2014/06/12 职场文书
2014年园林绿化工作总结
2014/12/11 职场文书