在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 技巧
Apr 25 Javascript
JavaScript中两种链式调用实现代码
Jan 12 Javascript
Extjs NumberField后面加单位实现思路
Jul 30 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
Sep 06 Javascript
jquery中交替点击事件toggle方法的使用示例
Dec 08 Javascript
jQuery ajax请求struts action实现异步刷新
Apr 19 jQuery
Angularjs中使用轮播图指令swiper
May 30 Javascript
JavaScript中的E-mail 地址格式验证
Mar 28 Javascript
JSON生成Form表单的方法示例
Nov 21 Javascript
vue实现自定义H5视频播放器的方法步骤
Jul 01 Javascript
js中调用微信的扫描二维码功能的实现代码
Apr 11 Javascript
js数组的基本使用总结
Jan 18 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在线打包程序源码
2008/07/27 PHP
Php获取金书网的书名的实现代码
2010/06/11 PHP
php的declare控制符和ticks教程(附示例)
2014/03/21 PHP
php数组合并的二种方法
2014/03/21 PHP
Yii中render和renderPartial的区别
2014/09/03 PHP
php中解析带中文字符的url函数分享
2015/01/20 PHP
php实现微信模板消息推送
2018/03/30 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
Google 静态地图API实现代码
2010/11/19 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
2013/05/07 Javascript
jQuery数据缓存功能的实现思路及简单模拟
2013/05/27 Javascript
js动态创建、删除表格示例代码
2013/08/07 Javascript
JavaScript闭包实例讲解
2014/04/22 Javascript
node.js中的fs.mkdir方法使用说明
2014/12/17 Javascript
适用于javascript开发者的Processing.js入门教程
2016/02/24 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
JavaScript日期选择功能示例
2017/01/16 Javascript
vue 实现的树形菜的实例代码
2018/03/19 Javascript
JavaScript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】
2018/05/07 Javascript
Vuex中的Mutations的具体使用方法
2020/06/01 Javascript
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
Python标准模块--ContextManager上下文管理器的具体用法
2017/11/27 Python
Win8下python3.5.1安装教程
2020/07/29 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
Python新手学习装饰器
2020/06/04 Python
python实现图像高斯金字塔的示例代码
2020/12/11 Python
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
公司前台辞职报告
2014/01/19 职场文书
信用卡工资证明格式
2014/09/13 职场文书
创业计划书之蛋糕店
2019/08/29 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers
Springboot如何使用logback实现多环境配置?
2021/06/16 Java/Android
SQL Server Agent 服务无法启动
2022/04/20 SQL Server