在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 tools之tabs 选项卡/页签
Jul 25 Javascript
javascript中call和apply方法浅谈
Sep 27 Javascript
12行javascript代码绘制一个八卦图
Apr 02 Javascript
原生js仿jquery一些常用方法(必看篇)
Sep 20 Javascript
bootstrap的3级菜单样式,支持母版页保留打开状态实现方法
Nov 10 Javascript
jquery获取select,option所有的value和text的实例
Mar 06 Javascript
详解如何从零开始搭建Express+Vue开发环境
Jul 17 Javascript
解决vue 引入子组件报错的问题
Sep 06 Javascript
react 应用多入口配置及实践总结
Oct 17 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
Dec 03 Javascript
layui添加动态菜单与选项卡
Jul 26 Javascript
微信小程序实现菜单左右联动
May 19 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 广告调用类代码(支持Flash调用)
2011/08/11 PHP
PHP中集成PayPal标准支付的实现方法分享
2012/02/06 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
2020/04/23 PHP
给Function做的OOP扩展
2009/05/07 Javascript
JQuery 实现的页面滚动时浮动窗口控件
2009/07/10 Javascript
JavaScript中关于indexOf的使用方法与问题小结
2010/08/05 Javascript
jQuery autocomplate 自扩展插件、自动完成示例代码
2011/03/28 Javascript
Extjs优化(二)Form表单提交通用实现
2013/04/15 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
在JavaScript应用中实现延迟加载的方法
2015/06/25 Javascript
Jquery 全选反选实例代码
2015/11/19 Javascript
javascript运算符——位运算符全面介绍
2016/07/14 Javascript
jQuery Select下拉框操作小结(推荐)
2016/07/22 Javascript
针对JavaScript中this指向的简单理解
2016/08/26 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
js实现PC端根据IP定位当前城市地理位置
2017/02/22 Javascript
原生js实现瀑布流布局
2017/03/08 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
vue 修改 data 数据问题并实时显示的方法
2018/08/27 Javascript
vue中render函数的使用详解
2018/10/12 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
swiper实现异形轮播效果
2019/11/28 Javascript
使用IPython来操作Docker容器的入门指引
2015/04/08 Python
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
在Python中marshal对象序列化的相关知识
2015/07/01 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
压铸汽车模型收藏家:Diecastmodelswholesale.com
2016/12/21 全球购物
Superdry极度干燥美国官网:英国制造的服装品牌
2018/11/13 全球购物
幼儿教师自我鉴定
2013/11/02 职场文书
中秋节礼品促销方案
2014/02/02 职场文书
留学生求职信
2014/06/03 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS