大家好, 好久不见,最近比较忙碌,状态也不是太好,很久没有输出。
最近在做对账系统的调研和设计,给大家分享一些对账系统的知识。
有个男人叫小帅,娶了个老婆,叫小美,早上,小美给小帅二十块钱买早餐,小帅买了包子、油条、豆浆回来,并说钱已经花完了,小美不信,拉着小帅到了早餐铺,拉着老板的账单对了一下,发现还剩两块钱……
对账
这就是一个简单的对账场景,我们再看看电商的大概支付链路:
电商支付链路
可以看到,涉及到的系统还是比较多的,对电商内部而言,可能涉及到支付、订单、风控、履约,对于外部而言,电商和第三方渠道,支付渠道和银行。内部部之间,想不出差错那简直得图灵、冯诺依曼诸神保佑,所以,对账系统,是交易最后也是非常重要的一环,
通过对账,能找到各个内、外部系统之间不一致的交易,并通过差错处理,厘清账务,防止资损。
电商系统内部的对账相对简单一些,不管是通接口、还是数据聚合,都可以跨服务、跨库地核对交易数据。
我们这里主要讨论电商平台和三方渠道的对账:
对于电商公司而言:
业务对账
。资金对账
。这篇文章我们主要讨论业务对账。
通过什么对账呢?
对于电商平台内部,需要把各个服务的交易相关数据聚合起来,一般是通过拉的方式:
内部对账数据聚合
对于外部的对账数据,各个支付渠道一般会提供对账单,不同渠道的对账单格式上不太一样:
微信对账单
支付宝对账单
Paypal对账单
对账文件当然是不能直接使用的,需要把三方渠道的对账单,清洗成对账系统用到的数据:
数据转化
那对账文件是如何获取的呢?一般主要有两种方式:
那对账文件是什么时间生成的呢?国内的支付渠道一般对账单生成时间是T+1。
对账单生成时间
什么时候开始对账?对账一般分为两种:离线对账
和实时对账
。
我们这篇文章主要讲的就是离线对账,在对账单下载解析完成之后,开始对账,也就是所谓的T+1。例如支付宝,6点生成对账单,可以定时6:30去下载和解析对账单,解析落库之后,就可以开始进行对账。
实时对账呢,一般是对交易的状态进行监听(mq、binlog),监听到状态的变化,就开始核对。
看看离线对账的逻辑:
那么对账是以什么为基准呢?是本系统的订单,还是支付渠道的订单?
为了尽可能保证准确性,一般是双向的,也就是基于本系统订单,比较三方对账单,也基于三方对账单比较本系统对账单,进行复核。
对账流向
通常要核对的是这几个点:
如果没有问题,那这比流水就对平了,反之就是发生了差错:
错帐
对于常见的有规律的差错单,我们可以设计一些规则来自动处理,比如跨日交易问题,可以查看前一日的交易记录,或者后一日的交易记录,查看是否能够对平。还有其它的一些汇率换算等等问题,都可以尝试对平。
对于对不平的账,就需要标记错帐,进行人工处理,例如发生了掉单,可以给用户退款;例如用户未退款,可以尝试拦截发货。
处理差错
我们来看看一些对账系统的架构设计:
美团支付结构总体设计
有赞对账架构设计
阿里商旅对账
小黑十一点半的对账架构
可以看到,主要就是那些东西,数据存储(DB、缓存、大数据)、数据订阅(binlog、mq、rpc)、task等等。
这篇文章给大家分享了一些对账系统的知识,对于对账系统,目前也只是调研和设计阶段,大家有什么意见可以和我交流,后续会给大家分享更多电商、支付相关的东西,点赞、关注不迷路!
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8