专题/设计/设计之路

【系统设计】创业项目中如何快速实现强扩展性的支付模块

2017-04-11  本文已影响888人  一名软件工程师

从支付宝离职创业后做了不少项目,走过许多弯路也走过一些捷径,期间从许多同行的许多博文中获取了解决方案和灵感,有感于不能一味索取,也应有所回馈,所以想把自己的一些拙见做些记录分享。

支付作为一个常见底层业务模块,对于大部分,尤其是电商类项目不可或缺。本文主要就是分享一下我们在支付模块上的设计经验。


C2B支付业务链路梳理


核心模型梳理

用户资产模型(Asset):

资金变动单据模型(TransactionDocument):

总结来看,所有的支付工具都是用户某种形式的账户资产,其对应的支付行为,就是完成相应资金单据的构建,以及持久化。


业务模型梳理

用户支付POJO模型:Payment

用户支付资金单据POJO模型:TransactionDocument

用户资产POJO模型:CustomerAsset


数据库模型梳理

CustomerBalanceAsset:
CustomerBalanceAssetLog:
CustomerCouponAsset:
CustomerCouponAssetLog:
...... 另外一些积分,抵扣券可以沿用类似逻辑
Payment:
Transaction:

代码设计

一期方案

二期方案:

代码上线因为营销需求接入了很多支付工具,导致buildTransactionList方法实现代码量非常大,不同支付工具的共有方法重复,代码复用性低。

上一篇 下一篇

猜你喜欢

热点阅读