支付系统、账户系统有关模型

简介账户体系是支付系统的基础,一个支付系统必须要有账户体系。因此账户体系的设计显得尤为重要。

支付账户和登陆账号

  两个概念:支付账户和登陆账号,这是属于两个不同业务的领域。

  支付账户:用户在支付系统用于交易的所有者权益的凭证。

  登陆账号:用户用于登录系统的凭证和个人信息。

  两者的联系:一个用户可能会有多个登录账号,一个登录账号又可能会有多个支付账户。比如,用户可以有零钱账户,储值卡账户等各种账户。一般来说,一个支付账户不可能在多个登录账号中公用

账户的设计需求

  在支付系统中,对于账户的设计可能从以下几个方面考虑:

    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,渠道账户,渠道执行支付时间,渠道侧返回的订单号等。如果有错误发生,还需要记录从渠道接收到的错误信息和错误码

 

posted on 2018-08-07 18:51  zzzhouheng  阅读(653)  评论(0编辑  收藏  举报

导航