【微信支付】微信支付三种常见支付方式流程梳理

微信支付流程 一.微信支付流程 APP用户点击进行支付,会向我们自己的订单服务发送请求,携带订单的相关信息 订单服务接收到请求之后需要保存订单,调用微信统一下单接口生成预支付订单,微信会返回预支付订单标识,订单服务会根据微信返回的标识生成带签名的支付信息 App端发起支付,向服务端查询带签名的支付信息,服务端返回带签名的支付信息 APP端使用带签名的支付信息,调用微信客户端唤醒微信APP 微信APP会向微信支付系统发起支付请求,微信支付系统会校验支付授权,返回授权结果 跳转微信支付界面,用户输入支付密码,提交授权,发 阅读详情
AI摘要

本文详细梳理了微信支付的Native方式、H5支付和JSAPI方式在PC和移动端的流程,包括统一下单、生成二维码、支付授权、订单状态确认等步骤,以及注意事项。

微信支付三种常见方式流程梳理

1. Native 方式 — PC端

Native 方式一般是在 PC 端中使用。

先看官方提供的流程图:

在这里插入图片描述

根据官方的图来梳理即可:

1.1 第一步 — 商户平台内部生成订单信息并展示

这一步一般是在用户进入支付页面时完成的,所谓平台内部生成订单,实际上就是指生成:

  • 订单信息
  • 价格
  • …

以上这些信息是完全与微信平台无关联的,由商户平台内部完成。

1.2 第二步 — 商户平台调取微信提供的统一下单接口,微信平台生成预支付订单

这一步是在用户在支付页面中,点击微信支付按钮后进行的。

具体到研发,这一步实际上是首先由前端发送请求,后端调取微信提供的接口,进行统一下单,微信平台生成预支付订单,并向后端返回预支付交易链接 code_url。

预支付交易链接,实际上就是用户需要跳转完成支付的链接。

1.3 第三步 — 商户平台前端生成二维码

这一步由商户平台前端完成,在上一步中,前端拿到了微信提供的预支付交易链接 code_url。

接下来,由前端借助第三方工具,将 code_url 转换为二维码供用户扫描。

1.4 第四步 — 用户扫描二维码,进入支付 / 商户平台前端页面展示确认订单按钮

这里,流程分为两条线:

  1. 用户:用户扫描商户平台前端提供的二维码,进入微信支付页,完成或放弃支付,这条线中,仅有用户和微信平台的交互,商户平台并不参与。对应图中的 5~8 步。
  2. 商户平台:商户平台在向用户展示二维码后,还需要提供一个确认订单已完成的按钮。同时,轮询订单的支付状态。

用户完成在微信支付页面中的操作后,可能会有两种情况:

  1. 订单未完成/支付失败 — 此时页面保持轮询订单状态,同时等待用户点击确认支付按钮,待用户点击确认支付按钮后,调取接口查询订单状态接口,确认订单支付状态。发现订单未支付后,向用户输出提示。
  2. 订单已完成 — 此时页面同样持轮询订单状态,并等待用户点击确认支付按钮。当轮询到用户订单已完成时,进行页面跳转;当轮询到订单状态之前用户点击了确认支付按钮时,调取接口查询订单状态。这种情况下的最终结果就是,发现订单完成,进行下一步操作(主要是页面的跳转)

这里实际上对应的就是流程图中的 10 和 11 步。

2. H5 支付方式 — 移动端非微信浏览器

H5 方式是移动端的微信支付方式之一,其主要针对移动端在非微信浏览器中进行微信支付的情况。

同样,先看官方流程图:

在这里插入图片描述

同样根据官方的图来梳理:

2.1 第一步 — 商户平台内部生成订单信息并展示

这一步一般是在用户进入支付页面时完成的,所谓平台内部生成订单,实际上就是指生成:

  • 订单信息
  • 价格
  • …

以上这些信息是完全与微信平台无关联的,由商户平台内部完成。

这一步在三种支付方式中是相同的,因为这一步跟微信平台之间并没有关系。

2.2 第二步 — 用户点击支付按钮,商户平台生成订单

这一步是在用户点击了支付按钮后进行,由商户平台前端发起请求,后端调用微信提供的 H5 下单API,生成预支付订单,并向前端返回H5支付中间页链接 h5_url

h5_url为拉起微信支付收银台的中间页面,可通过访问该URL来拉起微信客户端,完成支付,h5_url的有效期为5分钟。

2.3 第三步 — 向 code_url 中添加参数,完成跳转

在 Native 方式中,用户要进行支付,需要扫描包含了 code_url 信息的二维码,在手机上完成支付。但在 H5 方式中,由于用户本身就处于移动端,所以不再需要二维码的参与。

但是,与 Native 方式不同的是,H5 支付完成后,需要跳转回商户平台的支付页面。因此,这时,我们需要主动向 h5_url 中添加参数 redirect_url。

redirect_url 就是用户完成支付后,跳转回去的地址。在 redirect_url 中,除了目标地址,还可以携带一些我们需要的信息,例如平台内部订单的 uuid、订单生成的时间等等。注意,redirect_url 需要进行 urlencode 处理!

接下来,商户平台主动跳转至拼接好的链接url。

2.4 第四步 — 用户进行支付操作,跳转回指定页面

用户跳转到微信支付页面后,进行支付操作,订单可能存在两种状态:

  1. 订单未完成/失败
  2. 订单已完成

无论哪种状态,在用户完成操作后,都会跳转至前面指定的 redirect_url。

2.5 第五步 — 回到商户平台支付页面

在微信官方的文档中,给出了H5支付完成后,跳回商户平台后的操作标准:

由于设置 redirect_url 后,回跳指定页面的操作可能发生在:

  • 微信支付中间页调起微信收银台后超过5秒。
  • 用户点击“取消支付”或支付完成后点击“完成”按钮。因此无法保证页面回跳时,支付流程已结束,所以商户设置的redirect_url地址不能自动执行查单操作,应让用户去点击按钮触发查单操作。

所以,在具体实现时,我们一般会在 redirect_url 中添加一项标识,用以标记此时是从 h5 支付页跳转回来的情况。然后,弹出弹框,向用户提供【确认订单状态】和【重新支付】的两个按钮,可以参考下图:

在这里插入图片描述

2.6 第六步 — 商户后台查询订单状态

在用户完成支付后,商户后台会接收到微信平台的通知。

所以,当用户在浏览器中点击【确认订单状态】按钮,进行订单的确认时,商户前台会调用后端提供的查询订单接口。

在商户后台,可以先查询是否接收到微信平台的通知,如果接收到了通知,则直接将订单状态返回给前端;如果还没有接收到通知,则主动调取微信平台的查询订单API,查询订单状态,然后将订单状态返回给前端。

前端接收到订单状态后:

  • 若订单已完成,则进行下一步操作,一般是跳转页面等
  • 若订单未完成,则停留在当前页面,并提示用户订单未支付,让用户重新支付

当然,也可能用户主动点击【重新支付】按钮,此时商户平台可以根据业务需求,进行处理。

3. JSAPI 方式 — 移动端微信浏览器

当用户在微信中,打开商户平台时,会进入微信自带的浏览器中,在该情况下进行微信支付时,需要使用微信支付提供的 JSAPI 接口,在支付场景中调起微信支付模块。

官方文档中的流程图如下:

在这里插入图片描述

但在 JSAPI 支付方式中,实际的实现流程可能与官方的流程图不太一样,这里按实际开发中的流程来进行梳理:

3.1 第一步 — 商户平台内部生成订单信息并展示

同样的,JSAPI 支付中这一步也是必须的,主要目的仍然是展示订单的相关信息

  • 订单信息
  • 价格
  • …

以上这些信息是完全与微信平台无关联的,由商户平台内部完成。

3.2 第二步 — 用户发起支付,跳转链接完成微信授权

用户点击支付按钮后,商户平台前端需要携带一些信息(例如:回跳链接、标识等),平台内部调取单独微信授权模块模块完成微信授权。(注意,这里的微信授权模块是平台内部封装的)

该模块完成微信授权后,会将微信授权码 auth_code 附带在我们之前传递的回跳链接后面,然后跳转至回跳链接。

在微信支付场景下,这里的回跳链接实际上就是商户平台的支付页。

3.3 第三步 — 商户平台前端拿到授权码,跳转平台支付模块

在上一步中,商户平台前端拿到了微信授权码 auth_code。

接下来,商户平台前端需要调取后端接口,根据当前的 token 获取 ticket。然后,准备好一系列参数 postParam。

其中包括:

  • 平台业务相关参数
  • 用户 ticket
  • 平台内部订单信息
  • 支付方式标识
  • 微信授权码
  • …

同时,我们还需要准备好完成支付后跳转回支付页面的链接 redirect_url,该链接中需要包含以下信息:

  • 当前页面url
  • 平台内部订单uuid
  • 平台内部业务相关参数
  • 一些标识
  • …

接下来,我们携带着这两项数据,访问平台内部封装好的支付模块。(注意,这两项数据需要进行 urlencode 处理!)

3.4 第四步 — 平台支付模块调起微信支付

进入平台内部支付模块后,该模块会根据我们传入的数据,调取微信支付提供的 JSAPI,调起微信支付。

3.5 第五步 — 用户完成支付操作

调起微信支付后,用户进行操作,并最终向微信支付系统发起支付请求,微信支付系统验证支付授权权限后,返回支付授权,然后用户确认支付后,输入密码,提交,微信支付系统进行校验,最终完成支付操作。这里对应的就是官方流程图中的 9~14 步。

当然,这个操作过程中,也可能存在其他情况,例如:用户取消支付、用户支付失败等等。

所以,平台支付模块中会向微信支付提供处理这些情况的回调函数,当出现这些情况时,就会触发回调。在这些回调函数中,平台可以根据业务需求进行处理。

总之,待用户完成支付操作后,最终会跳转回商户平台的支付页面。

3.6 第六步 — 平台获取支付结果并通知用户

平台获取支付结果,可以分为两个并行的场景:

  1. 用户完成支付后,微信支付系统,异步地通知平台支付结果
  2. 用户主动查询订单支付状态,此时商户平台调取查询订单接口,并返回通知用户
PS

在 JSAPI 支付方式中,【获取微信授权】和【微信支付】这两个平台内部模块的实现比较复杂,后续可以在微信支付实例分析中进行详细的介绍。

微信H5页面实现微信小程序支付 微信H5页面打开微信小程序支付功能 阅读详情

相关推荐

微信支付—微信H5支付「微信内部浏览器」

补充:授权链接中的 scope 参数分为 snsapi_base、snsapi_userinfo,snsapi_base 可以获得用户的唯一标识 openid,snsapi_userinfo 则在此基础上获得用户资料「昵称、头像等」上述方法中是用来判断是否是微信环境的,

2401_87555402的博客 944

【微信支付】商品支付流程实例

微信支付实例

cannotbecounted的博客 2460

Java之微信支付(扫码支付模式二)案例实战

摘要:最近的一个项目中涉及到了支付业务,其中用到了微信支付和支付宝支付,在做的过程中也遇到些问题,所以现在总结梳理一下,分享给有需要的人,也为自己以后回顾留个思路。 一:微信支付接入准备工作: 首先,微信支付,只支持企业用户,个人用户是不能接入微信支付的,所以要想接入微信支付,首先需要有微信公众号,这个的企业才能申请。有了微信公众号,就能申请微信支付的相关内容,所以在准备开始写代码之前需要先把......

https://gitee.com/micai-code 1万+

微信支付流程图

通过这张图可以清晰的看到微信支付的过程,其实其他支付流程也都大同小异,看懂一个其他的也就都懂了。下面简单总结一下。可以简单的记为6步。具体参考官方文档商户系统和微信支付系统主要交互说明: 步骤1:用户在商户APP中选择商品,提交订单,选择微信支付。 步骤2:商户后台收到用户支付单,调用微信支付统一下单接口。参见【统一下单API】。 https://pay.weixin.qq.com/wiki/

lee727n的博客 8387

给自建PC网站接入微信支付流程

本文为开发者提供微信支付(直连商户模式)的简明接入指南。核心步骤包括:1)注册商户号获取MchID;2)配置APIv3证书与密钥;3)绑定AppID并开通支付权限;4)选择支付方式(推荐Native扫码);5)通过签名请求发起支付;6)处理加密回调通知。重点强调安全规范:证书管理、HTTPS强制、密钥保护和幂等设计。建议从沙箱测试开始,逐步实现完整的支付闭环。本文帮助开发者绕过官方文档的复杂性,快速实现自主集成的微信支付功能。

彩旗工作室的博客 3227

移动App中接入微信支付和支付宝支付

小摊小贩们在线下交易一般无需接入微信支付,只需要向别人出示自己的付款码就行。因为一手交钱,一手交货,你不付钱,人家不会给你商品。但在网上,要实现无人值守,别人扫码付了款,平台得自动知道,然后再发货。所以必须接入微信支付。申请地址:https://mp.weixin.qq.com。关联一个appId,搜索appId, 然后提交申请。首先你要有一个微信账号,然后申请服务号或公众号。微信支付必须是企业主体,要有营业执照才能申请。在公众号侧,菜单”微信支付“里确认申请。本文简单整理了一下该过程,备忘。

曲折旅程,艰难人生 1万+

必看!前端角度梳理微信支付(小程序、H5、JSAPI)流程解密

前端和后端要多沟通,有什么问题(难点)随时反馈,需要什么参数好好说,遇到观点不一致的时候千万要注意控制住情绪,切莫撕逼(.——.)。整个流程走下来,给我的体验是:小程序支付最方面(因为配置少),其次是 H5,JSAPI 支付最麻烦(文章一多半都在写它)在微信支付功能开发过程中,其实最麻烦的不是开发流程,而是他的各种配置和授权流程,为了拿到所需的参数而来回折腾。使用微信支付的前提必开通微信商户号,要使用到那种的支付方式要前需在商户平台开通(要审核)。

张宁乐的博客 4454

多角度梳理微信支付(小程序、H5、JSAPI)流程解密

整个流程走下来,给我的体验是:小程序支付最方便(因为配置少),其次是 H5,JSAPI 支付最麻烦(文章一多半都在写它)在微信支付功能开发过程中,其实最麻烦的不是开发流程,而是他的各种配置和授权流程,为了拿到所需的参数而来回折腾。开发过程中的一些参数是经常用到的,如 appid、openid、orderId支付流程大径相同,先获取到用户的 openid,知道你是谁,然后统一下单拿到 orderId 再去处理不同平台的支付方式。

wjianwei666的专栏 455

微信支付调研

为了方便进行支付接口对接,可通过SDK程序快速进行开发。SDK介绍地址:https://pay.wechatpay.cn/wiki/doc/apiv3/wechatpay/wechatpay6_0.shtml开发者可以根据自己的需要,选择对应的库。(推荐),适用于Java开发者。(推荐)、,适用于PHP开发者。,适用于Go开发者本项目使用。

weixin_64713614的博客 2775

机械臂电机力矩计算

设计 6 轴机械臂时,电机力矩计算是确保机械臂负载能力、运动精度和安全性的核心环节,需围绕和两大核心展开,结合机械臂结构参数(如关节长度、质量分布)、负载需求(如末端负载重量、惯性)和运动参数(如加速度、角速度)逐步推导。

ZPC8210的博客 1857

在Proteus中用80C51模拟4线SPI点亮OLED屏幕

在Proteus里用80C51模拟4线SPI控制OLED屏幕使其显示图案(汇编实现)。

Connor3093的博客 5003

Java 实现微信支付详细教程

Java 实现微信支付详细教程

欢迎阅读程序猿小张的博客~ 1万+

保姆级教程:用ROS2 Humble和Nav2从零搭建一个能自主导航的机器人小车(含SLAM建图与避障)

本文提供了一份详细的保姆级教程,指导如何使用ROS2 Humble和Nav2从零搭建一个具备自主导航功能的机器人小车,包括SLAM建图与避障。教程涵盖了硬件组装、ROS2环境配置、URDF模型创建、SLAM建图实战、Nav2导航栈配置以及系统集成调试等关键步骤,适合机器人开发初学者和进阶开发者。

weixin_30329623的博客 490

flutter唤起微信支付功能

Flutter实现微信支付功能需使用fluwx插件,主要步骤包括初始化配置、调起支付和处理结果。关键点:1)添加依赖并配置原生平台;2)初始化微信SDK;3)通过服务器生成支付参数后调用payWithWeChat;4)监听支付回调流,并处理应用生命周期以应对无回调情况。注意事项:支付参数必须由服务器生成,iOS需正确配置Universal Links,最终支付结果应以异步回调或服务器查询为准。测试时建议使用沙箱环境或正式环境,模拟器可能无法正常调起微信。

qq_40358970的博客 1917

【编号326】全国地灾数据全国25万多个地质灾害点空间分布数据

全国地质灾害点分布数据涵盖25万多个各类灾害点信息,为灾害防治提供重要依据。通过分析灾害分布规律,可识别高风险区,指导监测预警、应急避险和基础设施建设。多地成功案例(如湖北兴山崩塌避险、重庆长寿滑坡预警、湖南"挪床行动")证明,提前预警和科学防治能有效避免人员伤亡。云南省2024年通过预警体系成功避让31起灾害,保护1342人生命安全。这些实践表明,地质灾害防治需结合科技手段与群防体系,实现早预警、早处置。

千奇百怪无奇不有 1472

【初阶】手把手教你轻松上手Denodo | 连接数据库并创建基本视图 (二)

在本教程的第二部分,我们将涵盖:连接到数据库,与创建基本视图。

Denodo的博客 1105

微信支付之Native支付和JSAPI支付详细开发步骤!

目录标题微信支付之扫码Native支付与JSAPI支付进入主题一、Native支付1. 使用场景2. 开发步骤3. 开始开发二、JSAPI支付1. 使用场景2. 开发步骤3. 开始开发 微信支付之扫码Native支付与JSAPI支付 在电商网站开发中,我们必不可少的功能环节就是“支付”了,我们可以根据公司或者自己的开发需求,选择不一样的支付方式,比如微信支付,支付宝支付,银联支付,以及跨境支付如PayPal等等的众多方式供你选择,今天,我将和大家聊聊微信支付之二微信扫码Native支付与微信JSAPI支付

sendear的博客 1万+

Python | 集合(set)运算之intersection()

简介 在做力扣题的时候,有一个思路是要求解两个字符串的交集。 一般来说,求解交集的思路是遍历两个字符串,判断有无相等,有相等则添加到交集中,直到循环结束。 但是这样做,会增加很多的不必要的遍历:比如说,当一个字符串中有多个相同的元素时,该元素会被遍历多次。 因此,在求解时,我们可以先将字符串转换为set集合类型。集合中存储的元素没有顺序,且互异(即元素不可重复)。 算例 求字符串m“abcdaaa” 与 字符串n“bcddses”是否存在交集 首先将字符串转换为set类型: m = set(m) n

lovetaozibaby的博客 1万+

【云岚到家】-day06-1-微信支付调研

【云岚到家】-day06-1-微信支付调研

bblb的博客 2076

全面解析量化价值投资多因子模型的原理

明明知道“买便宜的好公司”是价值投资的核心,但面对3000+只A股,如何快速筛选出“便宜又好”的标的?主观判断总被情绪干扰——明明PE很低的股票,买了却不涨;或者因为“感觉”错过牛股?想规模化投资,但手动分析100只股票就要花一周,根本无法覆盖全市场?量化价值投资的多因子模型,正是解决这些问题的钥匙。它将价值投资的核心逻辑(“便宜”“好公司”)转化为可量化的因子,用数学模型替代主观判断,实现系统化筛选、可回测验证、规模化复制的投资决策。为什么多因子模型能有效预测股票收益?

AI天才研究院 1058

SAP Build Work Zone standard edition 订阅报错 OIDC trust missing 的成因与完整解决路径

摘要:用户订阅SAP Build Work Zone时遇到422错误,提示未配置OpenID Connect信任。该错误表明业务用户需通过SAP Cloud Identity Services的OIDC协议认证,而当前子账户仅配置了SAML信任或未配置信任。解决方法是进入子账户的Trust Configuration页面,使用Establish Trust功能建立与SAP Cloud Identity Services的OIDC信任关系。这是SAP新版服务的强制要求,SAML协议已不被支持。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 197

注册微信小程序并开通微信支付流程

首先我们要梳理清楚,微信到底有哪些平台。 微信开放平台(为第三方移动程序提供接口用的,企业需支付300认证费用) 微信公众平台(申请、管理、发布公众号、小程序的平台,企业注册的时候可以使用对公账号打款认证方式,后续可以在微信开放平台绑定当前注册的小程序或微信公众号的公众平台账号获取认证权限,节省300) 微信商户平台(企业开通微信支付,需要申请注册商户。申请成功后,可在小程序管理界面申请开通微信支付能力(即绑定当前的微信商户平台账号)) 微信对话平台(注册申请机器人用的)

lujiaquan688的博客 1866

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

支付宝微信支付业务流程图

微信 支付宝 支付调用流程

老照片 1562

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

支付体系(1)-微信支付的介绍和指南

在支付实现之前,我们需要了解这几个概念,因为后面的代码实现。很多都需要基于此来去做实现。摘要算法就是我们常说的散列函数、哈希函数,它能够把任意长度的数据“压缩”成固定长度、而且独一无二的“摘要”字符串。作用:保证信息的完整性不可逆:只有算法,没有秘钥,只能加密,不能解密难题友好性:想要破解,只能暴力枚举发散性:只要对原文进行一点点改动,摘要就会发生剧烈变化抗碰撞性:原文不同,计算后的摘要也要不同常见摘要算法:MD5、SHA1、

一个人的江湖 1775

微信公众平台:微信网页授权和微信支付

文章目录微信公众平台开发:微信网页授权和微信支付1. 微信网页授权1.1 微信网页授权和微信支付有什么关系?1.2 微信授权流程1.2.1 手工实现微信网页授权1.2.2 利用第三方SDK开发2. 微信支付2.1 微信支付场景2.2 JSAPI支付2.3 微信支付业务流程2.4 代码实现2.4.1 统一下单接口2.4.2 微信内H5调起支付2.4.3 异步通知商户支付结果 微信公众平台开发:微信网页授权和微信支付 问题1:微信公众平台网页授权和微信开放平台网页授权什么关系? ① 微信公众平台 微信公众平台是

你今天真好看呀 3560

2024年Java+Jfinal+H5接入微信支付所遇到的问题

H5接入微信Jsapi支付时踩的一些坑,在这里记录一下,希望能对你有所帮助

zzpiop的博客 1740
上一篇: 【业务场景】长列表的处理
下一篇: 【微信支付】商品支付流程实例
cannotbecounted
博客等级 码龄7年 101粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值