在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 撑出页面文字换行
Jun 15 Javascript
WordPress JQuery处理沙发头像
Jun 22 Javascript
jQuery实现div浮动层跟随页面滚动效果
Feb 11 Javascript
JavaScript自定义数组排序方法
Feb 12 Javascript
JavaScript实现实时更新系统时间的实例代码
Apr 04 Javascript
教你5分钟学会用requirejs(必看篇)
Jul 25 Javascript
Vue2.0 多 Tab切换组件的封装实例
Jul 28 Javascript
实现div内部滚动条滚动到底部和顶部的代码
Nov 15 Javascript
Vue自定义过滤器格式化数字三位加一逗号实现代码
Mar 23 Javascript
vue webpack实用技巧总结
Apr 24 Javascript
原生JS实现逼真的图片3D旋转效果详解
Feb 16 Javascript
Vue中通过Vue.extend动态创建实例的方法
Aug 13 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的header和asp中的redirect比较
2006/10/09 PHP
支持oicq头像的留言簿(二)
2006/10/09 PHP
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
2010/06/09 PHP
php实现memcache缓存示例讲解
2013/12/04 PHP
php加速器eAccelerator的配置参数、API详解
2014/05/05 PHP
php目录遍历函数opendir用法实例
2014/11/20 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
2014/12/22 PHP
php获取数据库中数据的实现方法
2017/06/01 PHP
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
Javascript中克隆一个数组的实现代码
2013/12/06 Javascript
js实现拖拽效果
2015/02/12 Javascript
Javascript之String对象详解
2016/06/08 Javascript
JavaScript数组去重的6个方法
2017/01/21 Javascript
jq checkbox 的全选并ajax传参的实例
2017/04/01 Javascript
js实现本地时间同步功能
2017/08/26 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
vue修改对象的属性值后页面不重新渲染的实例
2018/08/09 Javascript
浅谈vue项目打包优化策略
2018/09/29 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
深入解析koa之异步回调处理
2019/06/17 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
基于js实现的图片拖拽排序源码实例
2020/11/04 Javascript
Python 元类实例解析
2018/04/04 Python
python 进程的几种创建方式详解
2019/08/29 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
大专生自荐信
2013/10/04 职场文书
本科毕业生的求职信范文
2013/11/20 职场文书
实习公司领导推荐函
2014/05/21 职场文书
2014党员干部四风问题对照检查材料思想汇报
2014/09/24 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
老干部座谈会主持词
2015/07/03 职场文书
感恩主题班会教案
2015/08/12 职场文书
2019年公司卫生管理制度样本
2019/08/21 职场文书
浅析MongoDB之安全认证
2021/06/26 MongoDB