图解支付账务系统核心设计(进阶版)

大家好,我是隐墨星辰,深耕境内/跨境支付架构设计十余年。

10个做支付的,9个不懂账务,我也是入行很久后才开始懂账务。

问:"账户和科目有什么区别?"

答:"本质上没有区别,都是一个东西。"

我不服气,继续问:"如果没有区别,为什么又有账户,又有科目。"

答:"吧啦吧啦吧啦……(具体说什么忘记了,反正问完还是不求甚解)"

然后去查各种资料,查到的定义和描述仍然是晦涩而难以理解,硬着头皮也难以记住。不过好在带账务团队长达数年,天天耳闻目染,竟慢慢摸到了门道。

学过之后能以自己的方式讲出来,谓之"悟道"。今天继续尝试用我自己理解的方式聊聊账务。

1.前言

每个公司的账务系统设计思路、实现方式必然是不一样的,我个人经历过好几家支付公司,实现细节千差万别,但是整体思路都差不太多,比如账户设计一定有客户账户和内部账户,一定有中间户(过渡户),也一定使用复式记账,也都有实时记账和缓冲记账等。

而不一样的地方在于,有些是集团财务统一管理电商和支付平台的资金,有些则是分开两个团队管理,这种业务上的差异(或部门职责差异)就会体现到账务系统的实现细节。比如集团财务统管的话,就会要求会计科目的编制需要和集团财务系统保持一致,每天日切完成后要并账到集团的财务系统,一些差异处理也要受集团财务的流程制约。而一些独立运营的支付公司,会计科目的编制就没有类似的问题。

本文尝试抛开那些随各公司业务部门定制的逻辑,回到账务系统的本质,聊聊一个通用的账务系统设计要点。当然不可避免会夹杂一些我个人不成熟的见解,各位读者请以"取其精华,去其糟粕"的精神辩证地看待此文内容。

2.账务系统在支付平台中的定位

3.一些基本的概念

账务系统的一些基本概念,包括账户分类、复式记账法、会计科目编制、会计分录、记账方向等说明,请参考前一篇:《图解支付账务系统入门》。

4.信息流与资金流全生命周期

支付系统的本质,就是准确无误地把钱从一个地方搬到另一个地方。就这涉及到所谓的信息流和资金流,资金流还可以细分虚拟资金流和实体资金流。

此外,像收单核心、支付引擎、渠道网关等处理的就是信息流,而账务系统处理的就是资金流。所以要想理解账务系统,一定要先理解资金流。

下面分别以最常见的支付来展开说明信息流和资金流。钱包账户余额充值和余额支付会有一些差别,但原理差不多,在此处略过。

4.1.支付与结算交互图极简版

在支付流程中,就是商户委托收单机构(支付平台)把用户的钱收回来,然后再把钱结算给商家。

下面以典型通过外部渠道的卡支付为例说明。

说明:

用户的钱最终会走到商户的收款银行账户。真实情况下用户的支付的钱会分成多份,包括通道收的费用,支付平台收的手续费,税费,营销分润,商户结算款等。通道费用还可以继续细分为发卡行手续费,收单行手续费,清算机构手续费等。

跨行一般都需要通过清算机构,这里为简化也没有画出来。

支付平台内部的资金流在详细版中给出。

4.2.支付记账详细版

图中只画了正常场景,像明细对账出现差异(长短款)、账单对不平(渠道少打款或多打款)等场景没有画出来。

4.3.商户结算记账详细版

上述是商户结算到卡场景。

各公司的内部户编制可能有所不同。

5.账务系统核心诉求

在第3节中提到,账务系统负责支付平台的资金流管理。根据上述图继续拆解,可以得出账务系统的核心诉求如下:

账户管理:对私、对公账户的开户、销户等。

余额管理:对私、对公账户的余额管理。

记账处理:清楚知道每笔钱的来龙去脉。

清结算与对账:把需要结算给商户的钱算清楚,把渠道和支付平台的账算清楚。

银行头寸管理与流动性:支付平台在各备付金银行开立的头寸,以及头寸间流动性管理。

内部会计报表与外部监管报表:根据会计准则出具各种要求的报表。

6.账务系统产品架构图

账务主要负责账户的管理,以及记账服务。比如开、销户,余额操作。

清结算主要负责对商户的清分(算出应该给商户多少钱),清偿(实际打款给商户),对账以及差错处理。

会计中心主要负责科目、分录、日切、报表等。

补充:

各公司对账务系统子模块的拆分可能有差异,比如有些公司把账户和记账服务单独拆成两个模块,或者把对账从清结算模块中拆出成单独的一个对账核心。这些拆分不影响本质的东西。

何时拆何时合?公司业务规模小,就合起来,反正是一批人搞定代码实现。公司交易量大,业务复杂,招的研发多,就拆,每个小团队负责一个或几个核心模块。

7.账务系统系统架构图

各能力基本与产品架构图对应,但会多一些技术上的设计,比如实时记账和缓冲记账,业务上并不关心。

上面只画出了核心模块的核心能力,实际实现时需要做删减。

上面的业务系统只画了支付链路的示例,实际业务可能还有充、转、提等资金产品服务。

记账服务与会计中心简要关系

为便于理解,这里做了极简化处理。

8.核心设计

8.1.整体模型

科目有多级科目,所以有个自关联。

账户分为客户账户和内部账户,二者的结构有一些小的区别,比如内部账户一般不会被冻结,但是客户账户可以被冻结。

这是大的关系图。属性在下面会讲到。

没有加入清结算和对账的模型,不然画出来比较乱。

8.2.账务核心

8.2.1.账务模型

因为客户账户和内部户账户有区别,所以拆成两个模型更清晰。

只列出了最核心的几个字段,其它字段根据业务诉求增加。

8.2.2.账户分类

在账务系统中,通常包含以下几种账户类型:

客户账户:对客可见。包括:对私的个人客户账户,对公的商户账户。

内部账户:对客不可见。包括:头寸、手续费收入、过渡户(也称中间户)等。

8.2.3.记账方向

账户类型与借贷方向,相同为加,相异为减,也就是所谓的:DD+,DC-,CC+,CD-。

示例:用户提现100元,记账如下:

DR:用户余额(负债类账户)100

CR:提现过渡户(负债类账户)100

8.2.4.实时记账与缓冲记账

一般来说,客户账户的记账需要是实时的,比如用户充值、提现,商家提现,用户退款等。

这些账户如果不做实时记账,一来有损用户体验,二来有资损风险。比如用户充值100块,如果延时不到账,用户可能会投诉。如果提现不实时记账,用户有可能重复提现成功。如果退款不实时记账,有可能在退款场景下被透支。

缓冲记账通常就是先记录流水,然后起定时任务去捞取流水,汇总后进行记账。前提是一定要做好资损防控。

除了缓冲记账外,还有拆分账户的方式来解决热点账户问题。

8.3.会计中心模型

8.3.1.会计科目与会计分录

会计科目就是把会计要素进行分类,比如资产、负债等。通常都会有多级分类。

会计科目示例:

一般支付系统使用三级科目就已经足够。部分特别复杂的系统,可能会用到五级科目。

为便于理解,上面的示例做了很大的精简,各公司内部对科目的编制差异可能会比较大。

下面是一个典型的支付系统会计科目的示例。

8.3.2.记账方案

有了账户和会计科目,发生一笔交易时,如何让系统自动去记账?这个是记账方案做的事。其中一个解决方案就是给不同的交易场景制定不同的交易码,通过交易码来驱动记账。

下面是一个典型的支付系统的记账方案示例。

8.3.3.会计日与日切

所谓日切,简单理解就是切换到下一个会计日。

主要做的工作:

借贷试算平衡。

父子科目试算平衡。

总账试算平衡。

日、月、季度、年汇总。

会计日变更。

日切试算平衡核心逻辑:

借方发生额=贷方发生额

借方余额=贷方余额

期末余额=期初发生额+发生额

父科目累积额=子科目累积额

8.4.清结算核心模型

8.4.1.极简商户清结算流程

图中各方关系画得很清楚,不需要再做过多说明。

8.4.2.渠道对账模型

我方流水和渠道流水单号、币种、金额、状态都对上,就是对平。双方如果有缺少,就会有长短款。

流水对账完成后,形成我方账单,再和银行账单对账,因为银行可能多次打款,所以二者是多对多的关系。

8.4.3.对账差异处理

对账一般有几种结果:

对平:双方交易类型、单号、状态、币种、金额都是一致的。

长款:我方多钱。支付长款:支付90块,渠道清算100块,或我方失败,渠道成功。退款长款:退款100块,渠道清算90块。充值长款、提现长款类比。

短款:我方少钱。支付短款:支付00块,渠道清算90块。退款长款:退款90块,渠道清算100块。充值短款、提现短款类比。

8.4.4.渠道三层对账体系

第一层是信息流对账。我方流水和银行清算文件的流水逐一核对。可能会存在长短款情况。

第二层是账单对账。就是把我方流水汇总生成我方账单,然后把银行流水汇总生成银行账单,进行对账。可能会存在银行账单和我方账单不一致的情况,比如共支付100万,渠道分2次打款,一笔98万,一笔2万。

第三层是账实对账。就是我方内部记录的银行头寸和银行真实的余额是否一致。可能存在我方记录的头寸是220万,但是银行实际余额只有200万的情况。

9.内部系统实时与离线对账

前面的对账主要是和银行渠道对账,除了这个之外,一般的支付平台还会有内部系统之间的两两核对,这种核对主要是信息流层面的核对,主要核对状态、金额的一致性。

再细分,还可以拆成离线核对和实时核对。离线核对一般就是把生产数据库的数据定时清洗到离线库(一般还可以分为天表和小时表)。实时核对一般就是监听数据库的binlog,当数据有变动时,延时几秒后请求双方系统的查询接口,查到数据后进行核对。

10.拓展阅读

账务系统除了底层知识比较通用外,还有很多内容是和实际业务场景挂钩的,推荐几篇供大家拓展阅读,互相补充。

看完后,就会发现,大家语言描述千差万别,但本质就是会计原理、银行核心那一套。场景复杂的,比如跨境,无外乎多几个主体,加几个主体之间的关系而已。(说得轻巧,实现还是相当有难度的)

11.结束语

理解账务系统的核心设计概念,才能让我们构建出完整的支付系统设计与实现的理论基础。

THE END
1.UML知识手把手教你用例图在敏捷开发环境中,用例图可以帮助团队集中精力在最重要的功能上,为迭代开发提供清晰的路线图。 促进用户参与: 用例图可以作为与用户讨论和验证需求的工具,确保开发的功能符合用户的期望和业务目标。 风险管理: 通过早期识别和定义系统的功能,用例图有助于识别项目风险,如需求不明确、功能过于复杂等。 维护和演化: 在https://www.ctyun.cn/zhishi/p-449758
2.卡券小程序搭建:如何去适应,不同行业的营销需求?在数字化营销盛行的今日,卡券小程序已然成为企业提升客户粘性与转化率的关键工具。无论是餐饮,还是零售抑或是服务行业,卡券小程序皆能凭借精准营销以及便捷操作,满足多样化的营销需求。以下是怎样搭建一个适应各行业需求的卡券小程序,并附以实用建议。 一.深入行业特点,定制差异化策略 http://www.apppark.cn/t-54717.html
3.人事管理系统用例图类图活动图20230618.docx庸2F美OX提-E锦RP宗人事举管理对系统饲功能廊4侵第二测章荷系统踩分析嚼图一三8481957\h被-抄5表-移2.施1朵UM凶L图灯5威2.祝1.哈1用汪例图望6疯2.奇1.屿2类貌图撕8房2.壳1.污3活水动图糠9副2.掌2系胜统架卵构洽9数第三宝章护主要欣关键恶技术毯10倘3.牵1关友键技笋术之狠一笼10杯https://www.renrendoc.com/paper/276271987.html
4.POS管理系统的分析与设计[归纳].pdf用面向对象的设计思想结合用例图、 领域模型、 系统顺序图, 合理关联各个部分。做到设计结构清晰明了,易于计算机系 统实现。 1 二、系统需求 1. 用例与用例目标列表 UC1:处理销售 范围: POS系统应用 级别:用户目标 主要参与者:收银员 涉众及其关注点: -- 收银员:希望能够准确、快速地输入,而且没有支付错误,https://max.book118.com/html/2021/1018/8060077017004022.shtm
5.企业用户中心管理后台系统Axure原型模板下载企业认证:提供企业认证申请、审核和升级的全流程管理。 账单管理:用户可以查看和处理个人和企业的充值、消费和开票记录。 积分信息:管理用户的积分记录和兑换历史。 权限管理:创建和管理用户角色和权限,确保系统的安全性和灵活性。修改记录 合计493个页面 修改记录-用户中心、变更记录、用例图、同事管理对接SDK、变更记录https://axurehub.com/27495.html
6.基于SSM+MySQL+Bootstrap的停车场管理系统mysql停车场管理系统第一章引言:介绍停车场管理系统的研究背景和研究目的和意义。接着分析了停车场管理系统的国内外发展状况。 第二章软件开发相关技术:介绍了本停车管理系统开发过程中所使用的各类软件开发技术。 第三章需求分析:先对停车场的进行了可行性的相关分析,接着对系统功能需求进行分析,包括使用系统用例图、用例规约的方法对各https://blog.csdn.net/qq_36155000/article/details/125541156
7.票务安全管理(精选十篇)汉城市地铁线路也达到了100多公里,新加坡也修建了铁路交通系统。不同的国家也有不同的管理模式,纽约无竞争条件下的国有经营,汉城有竞争条件下的国有经营,伦敦的公私合营模式,新加坡的国有民营,曼谷的民有民营和菲律宾的私有国营等模式均在本国有很好的效果,我国也可以一定程度上的取其精华,弃其糟粕,建立于我国的https://www.360wenmi.com/f/cnkeyswj5c23.html
8.大头像版美元纸币的安全线在紫外光照射下,不同券别会呈现不同的会计机构负责人可由上级行委派,由委派行管理,工作上受委派行和受派行双重领导。 A. 正确 B. 错误 查看完整题目与答案 我行借记卡按介质分类,分为D. 用例图中的参与者是系统的外部,所以参与者肯定不能成为软件系统内部的实体类。 查看完整题目与答案 以下哪个是自顶向下实现与集成的缺点?() https://www.shuashuati.com/ti/e1e8e4cfc9df4af897f565bf396e01e2.html?fm=bd531ddbdd1640e4e363423b622209e32c
9.会员系统管理制度8篇(全文)最强的零售业CRM(客户关系管理)方案: 结合会员、积分、礼品、储值、礼券、折扣管理于一体,配合多种会员管理系统,包括:可视卡、智能卡、磁条卡、条码卡 本例中我们通过一定的调研和分析得到“会员管理系统”的用例图,如下所示。 登陆权限管理员操作员是否为会员操作会员消费积分兑换商品统计查看会员信息所有管理https://www.99xueshu.com/w/filekssgm4cw.html
10.电商产品经理兵法(电商产品经理兵法)书评作者:程亮,曾任京东开放平台产品机构原负责人,负责开放平台后台业务产品建设,代表作有“商家后台”、“POP供应链”和“O20等创新产品”。第1章 业务运营之道零售运营业务闭环供应链如果按照企业的经营模式来划分,则企业可以分为生产型企业,如服装生产厂商、OEM(Original Entrusted Manufacture,原始委托生产)商等,以及电https://book.douban.com/review/14630255/
11.C++酒店点菜管理系统题目25 “酒店点菜管理系统设计” 1 问题描述:为了适应现代信息时代点餐的需求,采用新信息技术,研究设计了一个计算机点餐系统。能够完成权限管理、点餐管理、订单管理、结账管理、菜谱评分等功能。 2 功能要求:一款具有如下功能的可以提供消息传送和人机交互的实用性服务系统,具有如下功能:(1) 权限管理:包括用户的注册https://www.bilibili.com/read/cv40120189
12.绝对好用的留言板,免费留言板,功能强大使用教程 1.上传本模板至template目录下,后台→系统→网站参数配置 选择模板 2.LOGO加载图等其他图片均在statics/img上传替换 3.首页轮播图推荐5,数量不限 4.首页正在热播推荐1,数量不限 5.内容页播放列表,有选项卡样式与列表样式,请自行引用相关的即可显示对应的 vod/playlist 选项卡样式 vod/playlist1 列表样式https://www.iteye.com/resource/mike1223-995995