手续费-没有手续费账户

113 阅读2分钟

背景

之前讲了手续费有手续费账户的情况,这次讲没有手续费账户的情况。

其实就是两种不同的架构设计。

而且是基于公司zf的工作使用来讲,都是实战。

订单表

金额相关字段:
1、订单金额
2、手续费

记账流水表

核心字段:
1、订单金额
2、手续费

3、账户id


何时插入记录?

支付之后的时候:
1、更新订单状态为成功
2、记账
先插入记账流水,后异步轮询。

账户表

核心字段:
1、总金额
2、冻结金额
3、可提现金额

4、账户id

流程

支付

主要是计算手续费 image.png

渠道通知支付成功

image.png

渠道通知支付成功,核心业务:
1、更新订单状态为成功
2、记账
先插入记账流水,后异步轮询。

1和2是不同数据库,1是订单库,2是账户库。但是1和2是同一个分布式事务。


账户jar

账户jar不是独立的服务,即不是作为独立的服务启动,而是作为jar引入到支付服务。说白了,就是spring bean,而不是dubbo服务。

虽然部署的时候不是独立服务,但是项目代码是独立的,相当于解耦,方便开发。

异步轮询

image.png

最核心的就是加钱,加钱的时候,是加多少呢?订单金额减手续费。因为没有独立的手续费账户,所以入账金额就要减去手续费。

另外,为了提高性能,每次给某个商户加钱的时候,是批量处理,即一次性加多笔记账流水的钱。

最后,具体加钱的字段是:
1、总金额字段
2、不可提现字段

即这两个字段,都要加,而且加的钱都是一样的:订单金额减手续费。

可提现金额字段,不加,因为这个时候只是支付成功。只有清结算对账成功,才能给可提现金额字段加钱,这个时候,商家就可以提现了。