简介:账户体系是支付系统的基础,一个支付系统必须要有账户体系。因此账户体系的设计显得尤为重要。
支付账户和登陆账号:
两个概念:支付账户和登陆账号,这是属于两个不同业务的领域。
支付账户:用户在支付系统中用于交易的所有者权益的凭证。
登陆账号:用户用于登录系统的凭证和个人信息。
两者的联系:一个用户可能会有多个登录账号,一个登录账号又可能会有多个支付账户。比如,用户可以有零钱账户,储值卡账户等各种账户。一般来说,一个支付账户不可能在多个登录账号中公用。
账户的设计需求:
在支付系统中,对于账户的设计可能从以下几个方面考虑:
1、交易的需求:比如检查账户是否被锁定,账户余额是否足够,账户是否有效等
2、记账的需求:按照公司会计需求记录账户上的所有行为,包括支出,充值和转账等
3、对账的需求:包括政府渠道,商户和个人的对账需求,核对交易和账户余额是否正确
4、风控的需求:如反洗钱,反欺诈等,都需要依赖账户体系来提供核心数据
5、信用的需求:对用户,资产,商户等主题进行信用评估的时候,也需要依赖账户体系来提供核心数据
这五个需求设计的优先级分为支付,记账,对账,风控来进行。
交易与账户:
账户设计一般是从交易开始的,交易的实现必须要有账户的支持,交易是账户的基本组成元素,从支付系统的角度,交易的资金流的流向是从一个账户流向另一个账户,发起交易的一方,被称为交易主体。他可以是
个人也可以是一个机构。
资金会从主体所拥有的账户中流出,而接收交易的一方被称为交易对手,他也可以是一个人也可以是一个机构。
而在电商系统中,交易会涉及到渠道。
由于电商本身并没有清结算的资质,所有资金从交易主体到交易对手的账户的流动,在大部分的情况下,并没有经过电商系统,而是由电商系统调用支付渠道的接口,由他来完成真正交易的过程。而在渠道完成交易的过程中,渠道是要收取渠道费的。
因此在电商系统中,一次交易会涉及到三个账户,交易主体账户,交易对手账户和交易渠道账户。
记账和账户:
当用户使用银行卡来进行支付的时候,电商系统需要与银行来进行对接,从用户银行卡所代表的账户上去扣除资金。对接了银行,第三方支付等机构的电商支付系统,他需要连接到用户在这些机构的账户来进行扣款和充值操作。这些账户或称为外部账户。
对于外部账户,支付系统只能记录在本系统的交易明细和累计消费额。而无法得知账户的真正余额。因此有些电商系统会做零钱的做法,让用户充值到零钱,使用的时候直接从零钱中扣除资金。这就是账户系统所说的零钱账号。所谓的零钱账号,就是电商系统在本系统中设置的自己内部的账号,所以也叫作内部账号。可以知道账户的全部消费明细和余额。
除了零钱账号还有储值卡账号,以及信用账号。
问题:有没有优惠账户,一次消费的储值卡账户和可以充值的储值卡账户?
收款账户和收单账户:
当电商要对接银行的时候,电商会被要求开一个收款账户,当用户通过这个银行来进行支付的时候,钱就会自动转到这个账户中。
对于第三方支付也是一样的,收款账户会开设在银行和第三方这边,也就是渠道侧,一般来说,渠道每天都可以提供这个账户的交易流水提供给电商进行对账,这样在电商这边,渠道就称为了一个收单机构。所以在
电商在这边,建立这个收款账户对应的对账用的收单账号,用来记录通过这个渠道进行的各项交易流水。
账户建模:
账户模型是和公司业务密切相关的。账户建模有三大核心模型:
1、实体模型
2、账户模型
3、交易模型-------》针对各个角色的账户流水,明细模型,用于支持对账。
实体模型:
支付相关的实体模型会有如下的属性:
1、用户ID,一般直接映射到账户的id
2、是否允许执行支付
3、支付密码
4、用于设置和重置密码的手机号
5、用于设置和重置密码的邮箱
6、用户的安全级别,根据业务需求来设置
账户模型:
根据业务需要,可以设置多种账户模型,一般来说,电商系统中涉及到的账户模型有:
1、虚拟币账户
2、代扣账户
3、零钱账户:电商的内部账号,用户商户清算单位需要建立零钱账户
4、第三方支付账户:用于在第三方支付机构建立的账户
5、银行卡账户:用户的银行卡信息,一个卡对应一个账户
6、结算账户:用于支持和第三方和银行进行结算用的账户。第三方为每个商户号建立一个结算账户;银行需要为借记卡,贷记卡建立结算账号(银行卡直连的时候使用)
7、代扣代缴账户
账户模型有关的属性:
账户号:也就是账户id,一般是系统自动生成的(这里要事先约定好账户id生成的规则)-------》问题:账户id生成有什么规则?
账户名称:这里的账户名称是用户自己设置
账户使用的货币类型:一张银行卡会涉及多种币种,实际在内部,也会为每个币种建立一个独立的账户。
会计科目代码:
账户控制相关:
是否允许充值,是否允许提现,是否允许透支,是否允许支付,是否允许转账进入,是否允许转账转出,是否有安全保障,是否冻结,是否激活
资金相关:
当前账户余额=可用余额+冻结余额
当前账户可用余额:
当前账户冻结余额:--------》冻结余额?银行卡和第三方支付信息:
第三方实体id:
第三方账号,银行卡账号和第三方支付的open_id
第三方的app_id
账户的失效日期,该账户什么时候失效
注意:有些第三方信息是不能保存的,如用户的账号密码,信用卡的CV号等,对敏感信息,密码进行加密保存,有时候甚至保存在另一张表中,还可以增加校验字段,在读取数据的时候做校验,一旦发现数据有问题,
关闭该账号。
交易模型:
交易记录,交易流水,账户流水----------》这三者的核心是交易流水
账户流水是从账户视角的交易流水。
交易模型对应的属性:
流水号:每一笔交易的流水号都不一样,需要根据业务需要详细设计流水号,这个号往往也是对交易表做分表分库的依据
交易记录创建时间:
交易记录最后修改时间:
会计科目代码:
关联的订单号,由商户提供:
订单名称,描述,关联的地址信息等等
费用信息,包括:结算货币类型,原始费用,实际费用
交易主体信息:记录主体id,类型,名字,账号,账号类型,使用的ip地址,手机号,平台,通知邮箱,当前位置等。这些信息虽然从主体表中获取,但考虑到主体表信息随时被修改,所以这里需要记录详细的各原始信息。
交易对手信息:记录对手主体的id,类型,名字,账号,账号类型,手机号,平台,通知邮箱等
交易渠道信息:记录所使用的的交易渠道的主体id,渠道账户,渠道执行支付时间,渠道侧返回的订单号等。如果有错误发生,还需要记录从渠道接收到的错误信息和错误码
原文地址:https://www.cnblogs.com/hengzhou/p/9438786.html