在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 相关文章推荐
jquery()函数的三种语法介绍
Oct 09 Javascript
js身份证判断方法支持15位和18位
Mar 18 Javascript
jQuery功能函数详解
Feb 01 Javascript
跟我学习javascript的最新标准ES6
Nov 20 Javascript
javascript类型系统 Window对象学习笔记
Jan 07 Javascript
jquery模拟实现鼠标指针停止运动事件
Jan 12 Javascript
深入学习JavaScript的AngularJS框架中指令的使用方法
Mar 05 Javascript
利用css+原生js制作简单的钟表
Apr 07 Javascript
小程序实现左滑删除功能
Oct 30 Javascript
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
May 09 Javascript
在Vue项目中,防止页面被缩放和放大示例
Oct 28 Javascript
vue实现滑动解锁功能
Mar 03 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
php strrpos()与strripos()函数
2013/08/31 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
2014/09/09 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
js模拟实现Array的sort方法
2007/12/11 Javascript
浅析AngularJS中的生命周期和延迟处理
2015/06/18 Javascript
微信小程序 框架详解及实例应用
2016/09/26 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
Vue.use源码分析
2017/04/22 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
jquery实现图片轮播器
2017/05/23 jQuery
nginx+vue.js实现前后端分离的示例代码
2018/02/12 Javascript
js+html5实现手机九宫格密码解锁功能
2018/07/30 Javascript
Threejs实现滴滴官网首页地球动画功能
2020/07/13 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
基于JavaScript实现简单扫雷游戏
2021/01/02 Javascript
vue-cli中实现响应式布局的方法
2021/03/02 Vue.js
[01:25]DOTA2超级联赛专访iG 将调整状态找回自己
2013/06/05 DOTA
批量获取及验证HTTP代理的Python脚本
2017/04/23 Python
浅析Python 读取图像文件的性能对比
2019/03/07 Python
aws 通过boto3 python脚本打pach的实现方法
2020/05/10 Python
Python多线程正确用法实例解析
2020/05/30 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
实习教师自我鉴定
2013/12/09 职场文书
《童年的发现》教学反思
2014/02/14 职场文书
颁奖典礼主持词
2014/03/25 职场文书
《长相思》听课反思
2014/04/10 职场文书
竞选卫生委员演讲稿
2014/04/28 职场文书
诉讼财产保全担保书
2014/05/20 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
中标通知书范本
2015/04/17 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
HTML通过表单实现酒店筛选功能
2021/05/18 HTML / CSS
通过shell脚本对mysql的增删改查及my.cnf的配置
2021/07/07 MySQL
在Docker容器中部署SQL Server
2022/04/11 Servers