vue中实现微信公众号支付

2023-11-10

最近做项目遇到微信支付,根据项目需求使用了微信h5支付。大概的流程介绍:

1、配置微信公众号
2、静默授权,获取路径中code
3、根据code拿到openid
4、根据openid获取prepay_id
5、获取支付签名
6、调起支付功能

一、配置微信公众号
必须是已认证,配置安全域名、开放高级接口权限等等,这里就不过多介绍了。

二、授权
介绍一下授权的俩种方式:

  • 静默授权,用户无感知(scope=snsapi_base)
  • 授权弹窗,用户主动授权(scope=snsapi_userinfo)

微信文档已经写得很清楚了:
在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=appid&redirect_uri=url&response_type=code&scope=snsapi_base&state=state&connect_redirect=1#wechat_redirect

参数 必填 说明
appid 公众号唯一标识
redirect_uri 授权后的回调链接地址
response_type 返回类型,code
scope 授权方式
state 重定向参数
connect_redirect 动态参数,=1 发一次请求
#wechat_redirect 重定向必带参数

注意:推荐使用微信开发者工具:公众号调试

redirect_uri:授权后的回调地址,要与配置的js安全域名处在同域下,而且需要使用encodeURIComponent()编码。
如果跳转类似带参数地址 :https://www.baidu.com/news.html?id=1

`https${encodeURIComponent('://') }www.baidu.com${encodeURIComponent('/')}news.html${encodeURIComponent('?')}id=1`

上面已经提到,对于以snsapi_base为scope的网页授权,就静默授权的,用户无感知;
对于已关注公众号的用户,如果用户从公众号的会话或者自定义菜单进入本公众号的网页授权页,即使是scope为snsapi_userinfo,也是静默授权,用户无感知。

三,授权成功
授权成功后,地址中出现了code,接下来取出code,进行下一步操作。这里注意code只能使用一次,并且只会存在5分钟,5分钟后过期失效。

if (window.location.href.indexOf('code') != -1){
	let code = this._getParam('code') // 取出code
	//接下来请求服务器,根据需求获取openid、access_token等等
    let data = {
      code:this._getParam('code')
    }
    this.httpCli({
      url:config.URL_WX_OPENID,
      data:data
    })
      .then(res => {
        if (res.errorCode == 100){
          res.data.openid ? sessionStorage.setItem('openId',res.data.openid) : common.toast(res.data.errorMsg)
          console.log(sessionStorage.getItem('openId')) // 获取openid存到本地
        }
      })
}

//获取地址中的参数
 _getParam(key) {
   let results = new RegExp('[\?&]' + key + '=([^&#]*)').exec(window.location.href);
   if (results) {
     return results[1];
   } else {
     return '';
   }
 },
},

四、根据openid获取prepay_id
在这里插入图片描述
五、获取微信支付签名
签名需app secret,鉴于安全,服务端签名。

本项目获取微信支付签名:
在这里插入图片描述
六、调起微信支付
在这里插入图片描述
签名完毕:
在这里插入图片描述
至此,微信支付流程已经走通,坑相对比较多。

七、链接
微信内调起支付:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6
支付签名生成算法:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue中实现微信公众号支付 的相关文章

随机推荐

  • pyautogui库的使用教程(超详细)

    一 前言 PyAutoGUI 让您的 Python 脚本控制鼠标和键盘以自动与其他应用程序交互 官方文档 PyAutoGUI documentation 常用函数列表 函数名 功能 基本 pyautogui size 返回包含分辨率的元组
  • 在编辑操作时,el-select多选下拉组件,选中label标签后,框中无法回显选中的label,,,

    1 问题描述 在编辑操作时 页面的el select多选下拉组件 在选择新的label标签时 change事件和监听数组对象都能确定数据已发生改变 ngmodel绑定就是最新的id集合 但就是框中不显示最新选中的label 而change事
  • 论文导读

    图的最大独立集问题 MIS problem 是图论研究中的一个重要问题 具有广泛的应用 本文介绍了最大独立集求解相关的三篇工作 包括一篇启发式方法和两篇基于学习的方法 希望能让大家对这个问题有所了解 问题定义 一个图G V E 的顶点集子集
  • 放弃手写代码吧!用低代码你能生成各种源码

    很多同学不知道为什么要用Low code做开发 传统IT开发不行么 当然可以 传统IT自研软件开发 通过编程去写代码 还有数据库 API 第三方基础架构等 这个方式很好 但不可避免的会带来开发周期长 难度大 技术人员不易开发维护 因此价格及
  • EDUCODER---WEB__JavaScript学习手册十:正则表达式

    第一关 字符串字面量 请在此处编写代码 Begin var pattern js n End 第二关 字符类 请在此处编写代码 Begin var pattern1 a zA Z 0 9 var pattern2 A 0 9 End 第三关
  • Linux下Python环境安装与部署

    因为我是Python零基础 所以如何部署全靠百度 这边我把我查到的资料和安装使用过程中遇到写下来 如果有写的不对的或者有更好的方式 欢迎评论指出 一 Python环境安装 网上有很多安装教程 可以自行百度安装 我参考的是这个 仅第一步安装p
  • The Lost House【树形DP+期望+构造路径】

    题目链接 POJ 2057 题意 有一棵N的点的树 开始的时候蜗牛在1号结点 它不知道它的家在哪个叶子结点 树上的有些结点有虫虫 虫虫会告诉你 你的家是否在以它所在结点为根的子树上 现在需要你规划走的方案 使得找到哪个叶子结点才是家的所走路
  • python将word表格转写入excel

    Notes 想将一份 word 文件中的几个表格转写入 excel 文件中 后续用 excel 处理 用到 python docx 和 pandas 分别处理 word 和 excel 安装 python docx pip install
  • pytorch中网络loss传播和参数更新理解

    相比于2018年 在ICLR2019提交论文中 提及不同框架的论文数量发生了极大变化 网友发现 提及tensorflow的论文数量从2018年的228篇略微提升到了266篇 keras从42提升到56 但是pytorch的数量从87篇提升到
  • 利用R包ggmap进行空间可视化

    ggmap 是在R环境里调用地图作用可视化的利器 它的语法结构跟ggplot2非常相似 也使R语言的用户可以迅速上手 ggmap 结合 ggplot 可以方便快速绘制基于地图的可视化图表 下面的文章里 我将用两个例子 三藩市的犯罪记录 和
  • require 方法详解

    在 NodeJS 中有一个方法是我们使用频率最高的 那就是 require 方法 NodeJs 遵循 CommonJS 规范 该规范的核心是通过 require来加载其他依赖的模块 几个问题 module exports 或者 export
  • 朴素贝叶斯算法python sklearn实现_朴素贝叶斯算法——实现新闻分类(Sklearn实现)...

    1 朴素贝叶斯实现新闻分类的步骤 1 提供文本文件 即 2 准备数据 将数据集划分为训练集和测试集 使用jieba模块进行分词 词频统计 停用词过滤 文本特征提取 将文本数据向量化 3 分析数据 使用matplotlib模块分析 4 训练算
  • 76. 如何理解 Python 中字符串中的\字符?

    Python字符串中的 字符代表转义字符 路径名中用来连接路径名 编写太长代码手动软换行 转义符 转义符 描述 续行符 在行尾时 反斜杠符号 单引号 双引号 a 响铃 b 退格 Backspace e 转义 000 空 n 换行 v 纵向制
  • border-sizing之border-box、content-box

    border sizing是CSS3的属性之一 其属性值为border box content box 我们正常理解的盒模型其实是border sizing的属性值是content box 即正常盒模型 属性值为border box的盒模型
  • linux IO Block layer 解析

    早期的 Block 框架是单队列 single queue 架构 适用于 硬件单队列 的存储设备 比如机械磁盘 随着存储器件技术的发展 支持 硬件多队列 的存储器件越来越常见 比如 NVMe SSD 传统的单队列架构也因此被改成了多队列 m
  • IDEA插件开发

    文章目录 写在前面 1 使用IDEA新建插件项目 1 1 配置SDK并新建项目 非gradle项目 1 2 项目目录结构 1 3 plugin xml 1 4 AnAction 1 5 测试运行 1 6 打包 安装插件 2 AnAction
  • 前缀和【一维前缀和与二维前缀和】

    全文目录 一维前缀和 构建一维前缀和数组 子序列的和 二维前缀和 构建二维前缀和数组 子矩阵的和 一维前缀和 一维前缀和很简单 就是高中数学中的前n项和 设有一个数组a a a 1 a 2 a 3 a 4 a 5 a 6 a n 还有一个数
  • C++ 之指针

    文章目录 参考 描述 指针 运算符 地址运算符 奇偶分体 指针的创建 间接寻址运算符 句点运算符 运算符优先级问题 箭头运算符 运算符优先级 指针 野指针 空指针 通用指针 解引用 分析 指针的算术运算 加减运算 自增运算与自减运算 比较运
  • 匈牙利匹配算法_学习笔记_Python编程实现

    大家好 下面是我关于匈牙利匹配算法的学习记录 内含两个例题的Python编程实现 这是我的第一篇博客 参考的网站在文中都有标注 如有问题欢迎指出 匈牙利匹配算法 匈牙利算法1 无权重二部图最大匹配 几个概念 算法核心思想 算法理论依据 算法
  • vue中实现微信公众号支付

    最近做项目遇到微信支付 根据项目需求使用了微信h5支付 大概的流程介绍 1 配置微信公众号 2 静默授权 获取路径中code 3 根据code拿到openid 4 根据openid获取prepay id 5 获取支付签名 6 调起支付功能