手把手教你设计一套提现系统
大家好,我是大龄码农,今天一起聊聊如何通过能力分层和配置化实现一套提现系统,欢迎一起探讨、指正。

提现
为什么需要提现系统?
在企业没有将付款线上化时,需要财务在银行后台对用户进行付款,一般流程如下:
1.申请:业务人员手机收款银行卡并填写付款申请单。
2.审批:业务领导对申请单进行审批签字,同意后业务人员将申请单给到财务付款。
3.调拨:财务拿到付款单后,在归集资金银行后台往付款银行卡里转入资金。
4.付款:资金转入后,在付款银行后台给用户打款。
5.反馈:打款完成后,财务通知业务付款结果。
这个流程有两个问题:一是浪费人力,如果是C端用户的提现,那靠人力基本无法实现。二是数据没有系统化,统计和维护困难。所以,需要一套提现系统,将资金付款线上化。
提现系统的领域边界?
提现系统和付款系统,其流程基本一致,最大不同的是提现系统需要扣用户的虚拟资产,付款则直接对外出款(例如:订单退款)。
提现系统则适用于用户将平台的虚拟资产转移到真实银行卡的过程。
提现系统包含哪些模块?
提现系统核心交互
提现系统一般有两个模块,提现管理和付款管理。
提现管理:记录的是业务单据,可能会涉及个税的计算;如果是TOB或资金较高的的提现,会涉及审批。
付款管理:记录的资金单据,如果公司运营较为复杂,会有分子公司,则会涉及调拨。
提现系统的领域模型:
提现系统领域模块
提现申请单(或提现单)为业务单据,付款单为资金单据,有些渠道付款会批量进行,则需要增加批次付款单。
这里设计三处规则:提现规则(决定能否提现)、付款规则(决定如何付款)、调拨规则(企业内部资金处理)。
提现系统的分层能力:
提现系统分层能力
两个大领域:提现领域和付款领域。
提现领域专用于提现业务场景,其状态机一般可以为:
提现单状态机
付款领域则为公共领域,提现付款为其付款场景之一,其他的诸如订单退款、货品付款合并到打款系统作为另外一个付款场景,其状态机一般可以为:
付款单状态机