一文看懂支付前链路流程

一文看懂支付前链路流程

前序

首先支付流程讲究的就是快,还有就是订单的冲入,我们不能说一笔交易订单进来都加一个分布式锁去解决,所以我们目前常用的做法就是一个订单进来,首先落库,如果落库失败,并且是主键重复的话,那么调用查询接口,查询订单,进行原单比对,比对无误的话,可以接着走后续的流程。这样做是比较常见的做法。

收单 到 支付流程

国内常用的支付方式基本上分为三大类。

  1. 绑卡支付,也就是我们先通过银行卡签约,下次在进行支付的时候就直接进行签约协议支付了
  2. 快捷支付,快捷支付有一个共性,就是一定会拉起对应的第三方支付软件的app,比如拉起微信,拉起支付宝拉起工商银行app等,这算是快捷支付。
  3. 免密支付,这是一种特殊形式的支付方式,类似于银行卡签约支付,也是通过发起签约流程,之后使用签约协议进行支付,常见有微信签约支付,支付宝签约支付。

1和3,在具体的业务场景下会有响应的拓展,比如我们购买vip会员的时候签订的代扣协议,每个月定期的从我们的银行卡或支付宝中代扣一部分现金,自动为vip续费。这会衍生出另外一种支付方式,代扣,循环代扣,循环代扣是代扣的一种拓展方式,简单理解就是把我们在改支付公司的所有可用的支付方式都扣除一遍,知道支付成功为止。

在这里插入图片描述

绑卡支付流程

主动查询和被动回调流程推动订单状态

推这两层订单的状态分别有三种形式。

  1. 通道回调,我们就一步一步的进行各层逻辑的处理,知道通知到最上层的交易层,都处理成功之后在给回调返回成功,这个时候两层订单的状态是一致的。
  2. 接收消息,触发主动查询,这个时候呢我们只是更新支付层订单的状态,如果上层订单的状态想要推动,需要上层发起查询。
  3. 外部系统主动查询,如果外部系统主动查询交易层,发现是初始态,那么就去查一下支付层。如果支付层也是初始态,那么去查一下通道,顺带更新支付层订单的状态,这样也还可以服用2 的逻辑代码。

关闭订单

首先我们先明确一下 分为三层 交易层,支付层,渠道层,基本上业内的做法是交易层和支付层在同一个事务里面,即一个应用程序,交易层 和 支付层分别为这两张表 tradeorder,payorder,渠道层一张表channelorder。

关单分为两种方式,一种是先关闭支付层订单(支付层去调用渠道层,渠道层调用通道的关单接口请求支付宝或微信,依次关单),等待支付层订单都关闭后,在关闭交易层订单。如果任意一笔支付层订单关单失败,都不能关闭交易层订单。

第二中关单方式是 先关闭交易层订单,然后依次关闭支付层订单。这个时候就会有一个问题,就是如果我们关闭了交易层订单,这时候支付层订单支付成功了怎么办。这就是payorder存在的意义,由于跨系统调用,还要想tradeorder 和channelorder订单状态一致,只能添加冗余表,故而设计tradeorder对应多个payorder(支付订单表),这时tradeorder的订单状态是已关闭,等渠道层通知到支付层支付成功之后,由于payorder和 channelorder是一一对应的,这时的payorder已然是支付成功,那通知到交易层之后,我们只需要判断tradeorder的状态是否是关单,如果是关单的话,那么在更新payorder的订单状态为待退款,这样是不是就能解决我们遇到的问题了。

彩蛋

前面的梳理只局限于支付的前链路,忽略掉的模块还有商户模块,算费模块,清结算模块,账户模块,以及一些衍生的产品,比如个人或企业钱包,商户平台,商户入驻平台等,随着后续支付工作的展开,本人由于工作局限性,目前还未接触过 清算结算及账户模块。后期可以出一般商户模块和算费模块,有机会在学习一下清结算及账户相关模块的工作流程。

推荐

关于支付中的基本知识可以参见另外的文章。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/241564.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用XAMPP在Windows系统构建一个本地Web服务器

用XAMPP在Windows系统构建一个本地Web服务器 Build a Local Web Server for Windows with XAMPP By JacksonML 本文简要介绍如何获取和安装XAMPP以实现Windows环境下本地Web服务器的过程,希望对广大网友和学生有所帮助。 所谓本地Web服务器,即使用本地…

UML-认识6种箭头(画类图无烦恼)

文章目录 一、背景二、箭头详解2.1 泛化(Generalization)2.2 实现(Realize)2.3 依赖(Dependency)2.4 关联(Association)2.5 聚合(Aggregation)2.6 组合&#…

24V降12V2A同步降压芯片WT6023A

24V降12V2A同步降压芯片WT6023A 今天给大家带来一款高性能的DC/DC转换器WT6023A,快来一起了解一下吧! WT6023A是一款采用抖动频率模式控制架构的高效、单片同步降压型DC/DC转换器,能够提供高达6A的连续负载,具有出色的线路和负载…

BugKu-Web-Flask_FileUpload(模板注入与文件上传)

Flask Flask是一个使用Python编写的轻量级Web应用框架。它是一个微型框架,因为它的核心非常简单,但可以通过扩展来增加其他功能。Flask的核心组件包括Werkzeug,一个WSGI工具箱,以及Jinja2,一个模板引擎。 Flask使用BSD…

快速准确翻译文件夹名:英文翻译成中文,文件夹批量重命名的技巧

在处理大量文件夹时,可能会遇到要将英文文件夹名翻译成中文的情况。同时也可能要批量重命名这些文件夹。今天一起来看下云炫文件管理器如何快速准确翻译文件夹名,进行批量重命名的技巧。 下图是文件夹名翻译前后的效果图。 英文文件夹名批量翻译成中文…

注意力机制和自注意力机制

有很多自己的理解,仅供参考 Attention注意力机制 对于一张图片,我们第一眼看上去,眼睛会首先注意到一些重点的区域,因为这些区域可能包含更多或更重要的信息,这就是注意力机制,我们会把我们的焦点聚焦在比…

2023年12月7日:QT实现登陆界面

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//窗口设置this->resize(600,500);//重新设置窗口大小this->setWindowTitle("QQ-盗版");//设置窗口名为QQ-盗版this->setWindowIcon(QIcon("D:\\Qt\\funny\\pi…

【改进YOLOv8】融合感受野注意力卷积RFCBAMConv的杂草分割系统

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 随着计算机视觉技术的不断发展,图像分割成为了一个重要的研究领域。图像分割可以将图像中的不同对象或区域进行有效的分离,对于许多应用领…

【广州华锐视点】仓储物流3D数字孪生平台打造更高效、智能的物流管理体验

在当今快速发展的物流行业中,传统的管理和监控方法往往难以满足复杂运营的需求。为了解决这个问题,广州华锐互动提供仓储物流3D数字孪生平台定制开发服务,打造更为高效、智能的物流管理体验。 仓储物流3D数字孪生平台是一种基于虚拟现实技术的…

DNS漫游指南:从网址到IP的奇妙之旅

当用户在浏览器中输入特定网站时发生的整个端到端过程可以参考下图 1*4vb-NMUuYTzYBYUFSuSKLw.png 问题: 什么是 DNS? 答案 → DNS 指的是域名系统(Domain Name System)。DNS 是互联网的目录,将人类可读的域名&#…

flutter 代码混淆

Flutter 应用混淆: Flutter 应用的混淆非常简单,只需要在构建 release 版应用时结合使用 --obfuscate 和 --split-debug-info 这两个参数即可。 –obfuscate --split-debug-info 用来指定输出调试文件的位置,该命令会生成一个符号映射表。目前…

学习Django从零开始之一

Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的定制网站!采用了MVC的框架模式,即模型M,视图V和控制器C,也可以称为MVT模式,模型M,视图V,模…

python编程需要的电脑配置,python编程用什么电脑

大家好,小编来为大家解答以下问题,python编程对笔记本电脑配置的要求,python编程对电脑配置的要求有哪些,现在让我们一起来看看吧! 学习python编程需要什么配置的电脑 简单的来讲,Python的话普通电脑就可以…

应用ICP-MS实验PFA烧杯耐腐蚀带刻度反应杯的特点分析

聚四氟(PFA)烧杯可用于痕量分析、同位素分析等实验,ICP-MS实验室适用。半导体、多晶硅、光伏电子 锂电池行业均适用。杯体刻度清晰,方便观察,尖嘴方便倾倒溶液。 可溶性聚四氟乙烯烧杯特性: 1、透明&…

企业U盘防泄密的必备秘籍!迅软DSE答疑解析一切你需要知道的!

关于U盘防泄密: U盘是企事业单位办公时经常需要用到的存储介质,而一旦U盘不慎丢失或是落入他人手中,都会面临U盘内数据泄密的情况发生。 因此,企事业单位可通过天锐绿盾安全U盘系统对公司重要数据进行U盘防泄密保护,确…

如何使用Docker将.Net6项目部署到Linux服务器(一)

目录 配置服务器环境 配置yum 配置docker 安装.NetCore SDK6.0 发布Net6 添加Dockerfile。 发布文件。 编辑DockerFile文件 ​编辑 上传文件 安装MySql 配置服务器环境 配置yum 在配置yum之前,我们需要先了解yum是什么,yum,是Yellow…

实时视频美颜SDK的选择指南与性能比较

时下,直播平台如何选取合适的SDK成为了一项重要的决策。本文将带您深入探讨实时视频美颜SDK的选择指南,并进行性能比较,助您做出明智的决策。 一、SDK功能概览 在选择实时视频美颜SDK之前,首先需要明确您的应用需求。不同的SDK可…

VSCode 中使用 AI智能编程工具的几个小妙招

可能你已经在IDE中安装了CodeGeeX,也了解到CodeGeeX能够帮助你编写代码、调试问题、创建文档,生成单元测试等。 但是总有些“Wow!”时刻,还在等你发现。今天就介绍几个CodeGeeX插件在VSCode中的使用技巧和小窍门。 一、侧边栏放…

代驾系统开发:驾驶智能化的代码之路

代驾系统的开发涉及到许多复杂而精密的技术,这些技术的融合不仅提升了出行服务的水平,也为开发者带来了独特的挑战。让我们深入探讨代驾系统的关键技术和相应的代码实现。 1. 实时定位技术: 代驾系统的核心在于实时定位,这涉及…

Unity 置顶OpenFileDialog文件选择框

置顶文件选择框 🌭处理前🥙处理后 🌭处理前 🥙处理后 解决方案