在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中的作用域scope介绍
Dec 28 Javascript
改进版通过Json对象实现深复制的方法
Oct 24 Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
Nov 12 Javascript
window.location.href中url中数据量太大时的解决方法
Dec 23 Javascript
Jquery如何实现点击时高亮显示代码
Jan 22 Javascript
js实现div在页面拖动效果
May 04 Javascript
json传值以及ajax接收详解
May 24 Javascript
浅谈Sublime Text 3运行JavaScript控制台
Jun 06 Javascript
AngularJs表单验证实例代码解析
Nov 29 Javascript
jQuery自定义插件详解及实例代码
Dec 29 Javascript
JS实现页面打印(整体、局部)
Aug 18 Javascript
微信小程序pinker组件使用实现自动相减日期
May 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 写文本日志实现代码
2010/05/18 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
2011/06/10 PHP
PHP学习记录之常用的魔术常量详解
2019/12/12 PHP
php实现记事本案例
2020/10/20 PHP
jquery text,radio,checkbox,select操作实现代码
2009/07/09 Javascript
一句话JavaScript表单验证代码
2009/08/02 Javascript
js实时监听文本框状态的方法
2011/04/26 Javascript
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
深入分析Cookie的安全性问题
2015/03/01 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
2016/09/23 Javascript
Javascript封装id、class与元素选择器方法示例
2017/03/13 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
基于webpack 实用配置方法总结
2017/09/28 Javascript
bmob js-sdk 在vue中的使用教程
2018/01/21 Javascript
vue做移动端适配最佳解决方案(亲测有效)
2018/09/04 Javascript
jQuery easyui datagird编辑行删除行功能的实现代码
2018/09/20 jQuery
vue读取本地的excel文件并显示在网页上方法示例
2019/05/29 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
2020/09/16 Javascript
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
[16:01]夜魇凡尔赛茶话会 第二期01:你比划我猜
2021/03/11 DOTA
Python实现比较两个列表(list)范围
2015/06/12 Python
Python实现的视频播放器功能完整示例
2018/02/01 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
python实现的批量分析xml标签中各个类别个数功能示例
2019/12/30 Python
基于python实现FTP文件上传与下载操作(ftp&sftp协议)
2020/04/01 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
Python如何使用27行代码绘制星星图
2020/07/20 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
python代码实现图书管理系统
2020/11/30 Python
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
美国儿童玩具、装扮和玩偶商店:Magic Cabin
2018/09/02 全球购物
高二生物教学反思
2014/01/27 职场文书
2014年检验科工作总结
2014/11/22 职场文书
普通员工辞职信范文
2015/05/12 职场文书
国博复兴之路观后感
2015/06/02 职场文书
Python学习开发之图形用户界面详解
2021/08/23 Python