支付 记账

1,089 阅读2分钟

同步记账还是异步记账?

区别?
同步记账是直接记账,而不是等到结算的时候才记账。所以,是没有记账-交易流水表的。

异步记账,是等到结算的时候才记账。所以,异步记账只是站在账户的视角生成了一笔记账-交易流水,这笔记账-交易流水有什么用呢?没有用,只是记录流水而已,因为后面也不会被使用。所以,异步记账,并不是真正的记账,也根本没有记账,它只是生成了一笔流水,这笔流水也不会被操作。


支付
异步记账。

转账
同步记账。

为什么支付是异步记账,转账是同步记账?因为转账没有结算的概念,但是支付有结算的概念。说白了,就是商家收钱之后,需要等到结算之后,才能被提现。这里的结算,一般有一个结算周期,比如,准实时/T+0,或者T+1,T+7。

既然,有结算周期,就要基于原始交易数据,生成一个交易-待结算数据。

账户

1.记账表 //最主要的核心的账户表
记账-流水表 //主要作用是备份,即每次更新记账表,都有一笔记账-流水来记录这个更新操作。

2.记账-交易流水表 //账户视角的交易流水。主要作用也是备份,就是交易数据在账户视角的记录。

交易

支付
1.交易数据表 //交易的原始数据
2.交易-结算数据表 //交易的结算数据,一开始是未结算

转账
1.交易数据表 //只有交易数据,没有结算数据

何时生成数据,或者更新数据?

转账

对账查询时,确认成功之后,
1.更新交易状态为成功
2.同步记账

支付

对账查询时,确认成功之后,
1.更新交易状态为成功
生成交易-待结算数据

2.异步记账 //其实就是生成一笔账户-交易流水

结算

基于定时任务 + 线程池。扫交易-待结算数据。主要干两件事情:
1.记账 //这个时候,才是真正的记账。而且,这里的记账和同步记账一模一样的,因为调用的就是同一个方法。

2.记账成功之后,更新结算状态为成功

同步记账

主要干两个事情
1.记账 //更新记账金额
2.流水 //新增记账流水