在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 相关文章推荐
JS实现点击图片在当前页面放大并可关闭的漂亮效果
Oct 18 Javascript
js实现的星星评分功能函数
Dec 09 Javascript
用jQuery获取table中行id和td值的实现代码
May 19 Javascript
用js实现放大镜的效果的简单实例
May 23 Javascript
jquery组件WebUploader文件上传用法详解
Oct 23 Javascript
微信小程序 空白页重定向解决办法
Jun 27 Javascript
vue.js中$set与数组更新方法
Mar 08 Javascript
Vue封装一个简单轻量的上传文件组件的示例
Mar 21 Javascript
js根据json数据中的某一个属性来给数据分组的方法
Oct 08 Javascript
node中使用log4js4.x版本记录日志的方法
Aug 20 Javascript
three.js利用卷积法如何实现物体描边效果
Nov 27 Javascript
JS实现瀑布流效果
Mar 07 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生成随机颜色的方法
2014/11/13 PHP
php+mysql实现用户注册登陆的方法
2015/01/03 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
js中的escape及unescape函数的php实现代码
2007/09/04 Javascript
JavaScript 事件记录使用说明
2009/10/20 Javascript
避免回车键导致的页面无意义刷新的解决方法
2011/04/12 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
AngularJS入门教程之学习环境搭建
2014/12/06 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
2015/09/10 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
基于jQuery实现的打字机效果
2017/01/16 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
JavaScript函数绑定用法实例分析
2017/11/14 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
详解如何使用node.js的开发框架express创建一个web应用
2018/12/20 Javascript
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
Python使用urllib模块的urlopen超时问题解决方法
2014/11/08 Python
Python读取环境变量的方法和自定义类分享
2014/11/22 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
浅谈django rest jwt vue 跨域问题
2018/10/26 Python
学python安装的软件总结
2019/10/12 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
纺织工程专业个人求职信范文
2014/01/27 职场文书
运动会广播稿500字
2014/01/28 职场文书
酒店开业庆典主持词
2014/03/21 职场文书
珠宝的促销活动方案
2014/08/31 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
小学教师节活动总结
2015/03/20 职场文书
党支部培养考察意见
2015/06/02 职场文书
少先队中队工作总结2015
2015/07/23 职场文书
关于开学的感想
2015/08/10 职场文书
采购部年度工作总结
2015/08/13 职场文书
2016年小学生新年寄语
2015/08/18 职场文书
Go Plugins插件的实现方式
2021/08/07 Golang