zoukankan      html  css  js  c++  java
  • 支付系统、账户系统有关模型

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

    支付账户和登陆账号

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

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

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

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

    账户的设计需求

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

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

  • 相关阅读:
    亚马逊云服务器VPS Amazon EC2 免费VPS主机配置CentOS及其它内容
    Linux + Mono 目前已经支持Entity Framework 6.1
    CentOS上 Mono 3.2.8运行ASP.NET MVC4经验
    Linux CentOS下如何确认MySQL服务已经启动
    C#使用Timer.Interval指定时间间隔与指定时间执行事件
    MySQL数据库有外键约束时使用truncate命令的办法
    C++中字符和字符串的读取与使用
    结构体的运算符重载
    P1358 扑克牌
    P1284 三角形牧场
  • 原文地址:https://www.cnblogs.com/hengzhou/p/9438786.html
Copyright © 2011-2022 走看看