图解结算平台:准确高效给商户结款

这是《百图解码支付系统设计与实现》专栏系列文章中的第(4)篇。

本章主要讲清楚支付系统中商户结算涉及的基本概念,产品架构、系统架构,以及一些核心的流程和相关领域模型、状态机设计等。

1. 前言

收单结算是支付系统最重要的子域之一,行业内经常把有牌照的支付平台称为“收单机构”就可见一斑。

我们在上一篇文章讲了收单如何帮忙商户收钱,收完钱还得转给商户,用户支付100块钱,那么到底给商户多少钱,什么时候给,这都是结算平台干的工作。谓之“结算”。

下面这个图留着是为了提高“收单、结算、拒付”紧密结合的印象。

三者的职能如下:

收单核心:主要负责处理商户订单的全生命周期管理:订单创建、支付推进、退款、撤销等。

结算核心:主要负责把商户应收账款算清楚,把结算款按合同约定结转给商户。

拒付核心:主要负责处理用户的拒付和对应的抗辩以及最后的判责。

2. 结算在支付系统中的位置

在收单机构(支付平台)里,结算就是把帮商户收进来的钱,按约定的结算规则、准确、及时地结算给商户

3. 结算产品架构

结算模式分为主动结算和被动结算。站在商户的角度,被动结算就是以收单机构为准,收单机构说结多少就是多少。主动结算就是以商户为准,商户说结多少就是多少。一般来说,大部分商户都是被动结算,特殊的大商户比如Google,Apple经常使用主动结算。

结算一定要设计账期,就像账务系统要有会计日是一样的道理,避免跨天的交易或零点附近的交易出现结算异常。对应就有账期创建、入账、关账、出账。

4. 结算系统架构

核心的服务包括:结算受理、注册,账期的新建、关账、出账,最后就是结算。

5. 结算核心流程

下面以即时到账模式为例说明。担保交易模式和预授权模式稍有不同。

在交易日,收单收到支付成功回执后,就发消息给结算,结算收到消息去查结算合约,进入结算注册流程。

在结算注册时,如果存在打开的账期,就直接挂过去,如果不存在,就创建一个账期。

在结算日,先进行关账,避免在途任务受影响。关账成功后,进入结算批次,再进入打款流程。

打款有3种情况:1)结算到商户余额户。2)在线结算到提现卡。3)线下人工打款(人工结算)。

打款完成后,推进结算流水SETTLED。

6. 结算核心领域模型

左边绿色部分是账单和流水相关信息,中间蓝色是账期和批次相关信息,右边是打款信息。

因为一个收单可能会有多种费用,所以会生成多条我方账单流水。同样的,一个收单可能结算给多个主体,对应有多笔结算流水。

结算账期有点类似会计日的概念,是为了控制零点左右的收单单据的结算能落到正确的结算账期里去。

关账后就会发起外部结算以及对应的打款。一个结算批次可能会分成多笔打款。

7. 结算状态机设计

上面把结算涉及到的状态机都画出来了。

特殊的是打款单的状态机,因为打款有可能调用外部渠道打到商户的卡里去,外部渠道有一定概率先返回打款成功,过两天后又返回退票(实际打款失败,资金退回),这个时候需要推进到REVERSE,然后重新更新信息后再进行打款。

退票的原因有多种,比如商户的卡被冻结等。

8. 资金流

结算一般只涉及到正向资金流,也就是支付成功后,一步步推进结算到商户余额户或者商户银行卡,如果是结算到商户余额户,就需要商户主动在商户门户发起提现到卡。

9. 结束语

本章主要讲了结算的基本概念,以及对应的产品和系统架构图,一些核心的领域模型和状态机设计。

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

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

相关文章

Python入门-字面量,函数,类

Python 中常用的有6种值(数据)的类型 (1)字符串需要用英文的双引号包围起来,比如打印"helloworld" (2)浮点数,整数,字符串等字面量的写法 (3)字符串定义及打印…

论文阅读笔记AI篇 —— Transformer模型理论+实战 (二)

论文阅读笔记AI篇 —— Transformer模型理论实战(二) 第二遍阅读(通读)2.1 Background2.2 Model Architecture2.2.1 Encoder and Decoder Stacks2.2.2 Scaled Dot-Product Attention2.2.3 Multi-Head Attention 2.3 Why Self-Atte…

【STM32】STM32学习笔记-I2C通信协议(31)

00. 目录 文章目录 00. 目录01. I2C简介02. I2C主要特点03. I2C硬件电路04. I2C时序基本单元05. I2C时序波形图06. 附录 01. I2C简介 I2C(Inter-Integrated Circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式串行总线,用于连接…

安装SCCM时出现的问题

出现这个问题 根据提示信息逐一排除以下问题: 1、确保SQL服务器名称是否正确。 2、确保TCP1433和4022端口有没有被防火墙屏蔽。 3、站点服务器帐号加入SQLServer的sysadmin角色成员里。 4、确保SQL实例没有使用动态端口,可参考: Config…

#RAG##AIGC#检索增强生成 (RAG) 基本介绍和入门实操示例

本文包括RAG基本介绍和入门实操示例 RAG 基本介绍 通用语言模型可以进行微调以实现一些常见任务,例如情感分析和命名实体识别。这些任务通常不需要额外的背景知识。 对于更复杂和知识密集型的任务,可以构建基于语言模型的系统来访问外部知识源来完成任…

【C语言】指针知识点笔记(2)

目录 一、野指针 二、assert断言 三、指针的使用和传址调用 四、数组名的理解 五、使用指针访问数组 一、野指针 二、assert断言 三、指针的使用和传址调用 四、数组名的理解 五、使用指针访问数组

高通平台开发系列讲解(USB篇)DWC3控制USB速率

文章目录 一、设备树二、相关结构体三、最大速率设置四、当前速率设置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本文主要介绍高通平台USB DWC3控制USB速率。 一、设备树 目录:msm-4.14/arch/arm64/boot/dts/qcom/sdxprairie-usb.dtsi dwc3@a600000 {compatibl…

pandas之重复数据的查看、删除和提取(后附数据网盘链接)

数据预览: 一、 查看value_counts() 这一函数能够查看每一数据出现了几次,但是用data.value_counts()这一方法时,只有一行数据全都一样才算做重复行,如下图中的郭靖分数不一样的话它没有计入是重复行,要想以名字作为重…

unity面试题

一:什么是协同程序? 在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行,协程很像多线程,但是不是多线程,Unity的协程实在每帧结束之后去检测yield的条件是否满足。 二:Unity3d中的碰…

身体互联网 (IoB)

现在,我们的互联网网关就是我们手中的一个小设备。 普渡大学副教授施里亚斯森表示。 我们不断地看着这个盒子,我们低着头走路,我们把大部分时间都花在它上面。如果我们不想让这种未来继续下去,我们就需要开发新技术。相反&#x…

使用scipy处理图片——任意比例缩放

大纲 缩小放大代码地址 在《使用numpy处理图片——缩放图片》一文中,我们每2个取1个像素来达到图像缩小的效果。这就要求缩小的比例只能是整数倍,而不能支持缩小到0.3倍或者放大到1.5倍这样的效果。 为了支持任意倍数的缩放功能,我们需要使用…

集群服务器GPU深度模型训练笔记(PBS作用调度系统)

相关手册与软件准备 官方使用手册 用户手册:https://hpc.sustech.edu.cn/ref/cluster_User_Manual.pdf 培训视频:https://hpc.sustech.edu.cn/ref/meeting_20230810.mp4 启明2.0使用手册:https://hpc.sustech.edu.cn/ref/qiming_User_Manua…

基于vue+Spring Boot家政服务人员预约系统iph9d

通过对家政服务管理内容的学习研究,进而设计并实现一个家政服务系统。系统能实现的主要功能应包括即时通讯、通讯回复、预约订单、接单信息、服务费用管、服务评价的一些操作。还有可以正确的为用户服务,准确显示当前信息[5]。 开发软件有很多种可以用&…

【JVM】性能调优

一、前言 性能调优,顾名思义,就是对系统或软件的性能进行优化,以提高其运行效率和响应速度。在计算机科学中,性能调优通常涉及到硬件、操作系统、数据库、网络等多个方面。对于Java开发者来说,JVM(Java虚拟…

Docker 容器之间的互相通信

Docker容器之间的互相通信 步骤一:创建自定义网络 首先,我们需要创建一个自定义网络,以便容器可以连接到这个网络上,从而实现互相通信。在命令行中执行以下命令: # 创建 docker network create ddz # 查看 docker n…

O2066PM无线WIFI6E网卡Windows环境吞吐测试

从2023年开始,除手机外的无线终端设备也逐步向WIFI6/6E进行升级更新,基于802.11ax技术的设备能够进一步满足用户体验新一代Wi-Fi标准时获得优质的性能和覆盖范围。 用户对于WIFI模块,通常会关注WIFI模块的吞吐量,拿到样品之后&am…

如何在iPhone或iPad中截取长页面,这里有详细步骤

iOS有太多隐藏的功能,记住它们可能是一个挑战,但知道如何在iPhone或iPad上截屏整个页面是我从未忘记的。 你若是一名作家,你经常会发现自己需要截屏网站和文章中的大块文本,以便发送给某人或稍后阅读。虽然现在的手机有着令人羡慕…

python统计分析——生成正态分布随机数

参考资料:用python动手学统计学,帮助文档 方法1:scipy.stats.norm.rvs() from scipy import stats stats.norm.rvs(loc4,scale0.8,size10) 参数介绍如下: loc:表示正态分布的均值,默认为0 scale&#…

Visual Studio Code常用设置

此处用于记录下本人所使用 VScode 的使用习惯。其中主要包括:界面,主题,光标,文件保存等选项。 VSCode 用户区设置 相关介绍命令行方式进行配置可视化组件方式进行配置 更新 相关介绍 基本原理: Visual Studio Code 会…

sizeof与strlen的使用及其区别

目录 1. sizeof 1.1sizeof简介 1.2 sizeof的使用 1.3 sizeof的使用注意事项 1.4 sizeof用于数组 2.strlen()函数 3.区别 示例1 示例2 示例3 4.总结 1. sizeof 1.1sizeof简介 sizeof是一个编译时运算符,可用于任何变量名、类型名…