上篇对账户系统的基本知识进行了详细的分析,相信大家都基本了解了相关知识。本文主要对账户系统进行实战总结,分享如何在实际工作中从0到1搭建账户系统,希望对你有所帮助。
(资料图片仅供参考)
前言
上文我们介绍了账户系统的基本知识方便大家理解,包括但不限于基本概念/名词、核心业务流程/系统架构、业务价值等等,忘记的可以直接点击链接回顾下:账户系统从0到1搭建(1),本篇主要从实操的角度出发,分享如何从0到1搭建一个账户系统,内容主要包括以下几部分:系统交互流程、核心流程/界面原型及核心业务规则、对外接口提供等。
一、系统交互流程图
上图是O2O电商账户清结算的系统交互流程图,深蓝色为账户系统,上游系统为统一结算平台(视平台需要),再往上游是请求入账的几个核心系统,例如业务计费系统、商家奖惩系统、分销系统等等,以上系统是根据平台自身业务需要建设,有可能部分系统无,也有可能增加更多系统。
从上图可以看出,账户中心不包含业务逻辑,正常情况下只是承载1个记录资金数据变动的角色,账户资金的增减变化是由业务系统触发,除非特殊/紧急场景下需要人工手动调整账户资金数据。
二、系统0到1搭建 1. 核心流程/界面原型
为了方便大家更好的理解,原型界面及系统规则的部分我结合着业务流程来展开分享,结合着业务更容易消化理解,账户系统整体功能菜单结构如下图所示,下图是比较核心又通用的功能,实际建设过程中可根据自身平台需要添加其他附属功能,如转账等:
(1)开户流程:这个流程不涉及到系统页面建设,账户系统只是提供开户接口至上游系统(主要为商家/供应商/服务商管理系统),上游系统根据业务需要,在商家满足相关认证后,自行请求账户系统开户接口完成开户动作。
(2)入账流程:这个是账户系统建设中最复杂也是最核心的流程,因为我们之前也说过记账是最账户系统最核心也是最基础的功能,资金入账涉及到页面开发的主要分为3部分:费用类型管理、入账规则与冻结规则管理,我分开说明下:
费用类型定义及用法:关于费用类型的定义及使用原则,我已经在结算系统从0到1搭建中详细说过了,为了提高大家的观感,我直接复制过来:
费用类型从字面意思上理解就是被结算资金的名称,简单来说这就是是一笔什么钱,因为什么场景产生的?再往上抽象一层,1个费用类型其实代表了业务的1个计费场景,对应了一个具体的计费规则(前提是费用类型颗粒度要足够细化)他们之间的关系如下图:
业务场景:费用类型=1:1或1:N 费用类型:计费场景/规则=1:1费用类型的命名原则:大体原则是简短同时能反映费用的业务属性,这样账户系统记账的时候,账务流水的业务属性就会很清楚,用户/运营可以很直观地就知道这笔钱的因为什么进来,这笔钱为什么被扣掉,如下图所示:
费用类型在系统间流转过程:当上游业务侧新增一个计费场景时,账户系统需对应新增1个费用类型来表示此场景的资金类型,具体新增费用类型的运营流程,看自己公司要求,账户系统配置完成后,需要将费用类型编码同步至上游业务系统与前置结算系统,这2个系统需要将此编码维护在自身系统中。
当此费用类型的资金进行入账时,结算系统需要传业务线ID、用户ID外,害需要传费用类型ID,因为账户系统需要根据费用类型ID匹配对应入账规则及冻结规则,从而确定入到哪个账户中,费用类型新增流程如下图:
费用类型原型图:
费用类型管理:
入账规则:这个可以直接从字面意思上来理解,就是此笔费用做资金入账时的规则,入到哪个业务线哪个主体类型的哪个账户中,上游系统请求账户中心请求入账时,账户中心根据费用类型ID与传业务线ID匹配唯一入账规则,匹配到则正常入账,匹配不到则返回错误,并通知相关人及时调整/配置对应入账规则。
入账规则管理:
新增入账规则:
冻结规则:冻结规则也可以从字面上理解,即这笔资金进行入账时,是否需要进行冻结,若需要冻结,如何冻结?按照固定时间还是固定时长冻结(可配置),冻结规则是依附于入账规则的,费用类型、入账规则、冻结规则三者间的关系如下图:
冻结规则管理:
新增冻结规则:
(3)冻结/解冻流程:冻结/解冻流程分为2个维度:
账户冻结:主要是因为账户主体触发平台风控(如违规、舆情客诉等),需要将账户冻结防止资金提现,可以手动冻结,也可以由上游系统(如奖惩/风控系统)通过接口冻结,冻结的类型主要分为:解冻、不可入账不可提现、可入账不可提现(使用较多)、可提现不可入账,涉及原型图见下图(部分):
账户管理:
账户详情:
冻结账户:
金额冻结:金额冻结有2种形式,1种是冻结账户中可用余额中的部分金额,原因与上文中账户被冻结相同,通过运营/售后手动冻结,1种是平台自身账期需要,业务参与方的资金入账时,便将流水按照固定日期或固定时长冻结,此部分只可系统自动冻结。
冻结金额(手动):
(4)调账流程:简单来说就是手动调增/调减账户的金额数据,这个功能需要谨慎使用,仅在部分无法通过系统入账的场景中使用,或进行业务前期阶段使用,例如提现暂未实现线上化,就可以通过线下打款,线上手动扣除账户余额来得方法来实现。
因为账户数据涉及到真实资金数据,为防止出现人为恶意调整账户数据或误操作,给平台带来不必要的麻烦和资金损失,系统层面需加上单天调整次数限制、每次调整时间间隔限制,并可以根据实际业务需要加上线上审批流程。
账户调账:
除了我上文说的部分原型图及规则,比较常见的原型页面还有账户流水、操作记录等,都比较简单,在这我就不再赘述了,有一个点单独提下:账户流水的字段里面中请务必加上订单号,能极大提高运营排查问题的效率
2. 账户接口
账户中心对外接口根据业务需要不同,也不尽相同,我列了一下比较常用的对外接口及相关参数(见下图),实际工作中,可根据实际业务需要开发对应接口
三、总结
大部分涉及到资金分账、充值/提现的业务都会涉及到资金数据记账,账户系统作为实际记录资金数据变动的载体,还是一个比较重要的底层核心系统。掌握账户系统的搭建能力对于此部分工作的展开具有很好的帮助,而且了解账户系统的核心设计方法和思路后,搭建一个适合自身平台需要的系统,难度整体可控。
本文由 @鲸爷陆 原创发布于人人都是产品经理,未经作者许可,禁止转载。
题图来自Unsplash,基于CC0协议。