初探支付对账(文末送书!)

506次阅读  |  发布于2年以前

大家好, 好久不见,最近比较忙碌,状态也不是太好,很久没有输出。

最近在做对账系统的调研和设计,给大家分享一些对账系统的知识。

什么是对账?

有个男人叫小帅,娶了个老婆,叫小美,早上,小美给小帅二十块钱买早餐,小帅买了包子、油条、豆浆回来,并说钱已经花完了,小美不信,拉着小帅到了早餐铺,拉着老板的账单对了一下,发现还剩两块钱……

对账

这就是一个简单的对账场景,我们再看看电商的大概支付链路:

电商支付链路

可以看到,涉及到的系统还是比较多的,对电商内部而言,可能涉及到支付、订单、风控、履约,对于外部而言,电商和第三方渠道,支付渠道和银行。内部部之间,想不出差错那简直得图灵、冯诺依曼诸神保佑,所以,对账系统,是交易最后也是非常重要的一环,

通过对账,能找到各个内、外部系统之间不一致的交易,并通过差错处理,厘清账务,防止资损。

如何对账?

电商系统内部的对账相对简单一些,不管是通接口、还是数据聚合,都可以跨服务、跨库地核对交易数据。

我们这里主要讨论电商平台和三方渠道的对账:

对的是哪些账?

对于电商公司而言:

这篇文章我们主要讨论业务对账。

通过什么对账?

通过什么对账呢?

对于电商平台内部,需要把各个服务的交易相关数据聚合起来,一般是通过拉的方式:

内部对账数据聚合

对于外部的对账数据,各个支付渠道一般会提供对账单,不同渠道的对账单格式上不太一样:

微信对账单

支付宝对账单

Paypal对账单

对账文件当然是不能直接使用的,需要把三方渠道的对账单,清洗成对账系统用到的数据:

数据转化

那对账文件是如何获取的呢?一般主要有两种方式:

那对账文件是什么时间生成的呢?国内的支付渠道一般对账单生成时间是T+1。

对账单生成时间

对账的时机?

什么时候开始对账?对账一般分为两种:离线对账实时对账

我们这篇文章主要讲的就是离线对账,在对账单下载解析完成之后,开始对账,也就是所谓的T+1。例如支付宝,6点生成对账单,可以定时6:30去下载和解析对账单,解析落库之后,就可以开始进行对账。

实时对账呢,一般是对交易的状态进行监听(mq、binlog),监听到状态的变化,就开始核对。

对账逻辑是什么样的?

看看离线对账的逻辑:

那么对账是以什么为基准呢?是本系统的订单,还是支付渠道的订单?

为了尽可能保证准确性,一般是双向的,也就是基于本系统订单,比较三方对账单,也基于三方对账单比较本系统对账单,进行复核。

对账流向

通常要核对的是这几个点:

如果没有问题,那这比流水就对平了,反之就是发生了差错:

错帐

怎么处理差错?

对于常见的有规律的差错单,我们可以设计一些规则来自动处理,比如跨日交易问题,可以查看前一日的交易记录,或者后一日的交易记录,查看是否能够对平。还有其它的一些汇率换算等等问题,都可以尝试对平。

对于对不平的账,就需要标记错帐,进行人工处理,例如发生了掉单,可以给用户退款;例如用户未退款,可以尝试拦截发货。

处理差错

支付对账架构如何设计?

我们来看看一些对账系统的架构设计:

美团支付结构总体设计

有赞对账架构设计

阿里商旅对账

小黑十一点半的对账架构

可以看到,主要就是那些东西,数据存储(DB、缓存、大数据)、数据订阅(binlog、mq、rpc)、task等等。

小结

这篇文章给大家分享了一些对账系统的知识,对于对账系统,目前也只是调研和设计阶段,大家有什么意见可以和我交流,后续会给大家分享更多电商、支付相关的东西,点赞关注不迷路!


Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8