支付域——账户系统设计

摘要

本文详细介绍了支付域中的账户系统设计,包括账户的定义、核心特征、常见类型以及在支付系统中的作用。账户是支付平台为用户、商户等主体建立的资金记录单元,具有资金归属、余额管理、交易流水、资金安全等核心特征。常见账户类型包括用户账户、商户账户、平台账户、保证金账户等。此外,还探讨了账户与银行账户的区别、账户的结构设计、如何设计账户类型以及账户系统设计等内容。

1. 什么是账户

你可以把它理解成------在支付系统内部,账户就是用户(或机构)在平台上的"虚拟钱包"或"资金台账",它记录了每笔资金的来源、去向、余额变动、冻结解冻等信息

1.1. 支付域中账户的核心定义

账户 :支付平台为用户、商户、平台自身等主体建立的资金记录单元,用于追踪资金变动、控制资金可用性,并作为交易清算的基础依据。账户的本质是资金的逻辑归属单位,并不等同于银行账户。它可以是:

  • 平台内的虚拟账户(用户账户、商户账户、保证金账户等)
  • 银行托管账户的映射(直连银行的场景)
  • 内部核算账户(比如手续费收入账户、风险保证金账户)

1.2. 账户核心特征

|-----------|----------------------------|
| 特征 | 描述 |
| 资金归属 | 每个账户绑定一个唯一的资金所有者(个人、企业、平台) |
| 余额管理 | 记录账户可用余额、冻结余额、总余额 |
| 交易流水 | 所有交易变动必须产生流水记录,保证可追溯 |
| 资金安全 | 支持风控、限额、冻结、解冻等操作 |
| 多币种支持 | 支持人民币、美元等多种货币单位(如跨境支付) |
| 多维度分类 | 按业务分类(保证金账户、结算账户、手续费账户等) |

1.3. 常见账户类型(支付域)

|-----------|-----------------|---------------|
| 类型 | 描述 | 场景示例 |
| 用户账户 | 记录用户的充值、消费、提现资金 | 支付宝余额、微信零钱 |
| 商户账户 | 记录商户收款、结算资金 | 商户收单后的待结算资金 |
| 平台账户 | 平台自有资金核算 | 手续费收入、补贴支出 |
| 保证金账户 | 风险担保金、押金 | P2P平台保证金、押金业务 |
| 清算账户 | 用于资金清算调拨 | 银企直连清算账户 |
| 冻结账户 | 存放被冻结的资金 | 司法冻结、风控冻结 |

1.4. 在支付系统中的作用

  1. **资金记录:**所有充值、支付、退款、提现等交易,最终都反映为账户余额的变化。
  2. **资金控制:**通过账户控制资金的可用性(冻结、解冻、限额)。
  3. **清结算依据:**银行清算、对账、核销,都依赖账户余额与流水的准确性。
  4. **风险隔离:**不同用户、商户的资金通过账户隔离,避免混账。

1.5. 账户vs银行账户

|----------|-------------|-----------|
| 对比项 | 平台账户(虚拟账户) | 银行账户 |
| 存在形式 | 系统内逻辑记录 | 银行系统 |
| 控制方 | 支付平台 | 银行 |
| 资金归属 | 由平台映射和管理 | 银行实际托管 |
| 用途 | 核算资金变动、交易控制 | 实际资金收付、清算 |
| 开设速度 | 系统内快速创建 | 银行开户流程复杂 |

2. 账户的种类

在支付域(尤其是金融支付和清结算系统)中,账户 是资金流转、余额管理和交易结算的核心实体。它是资金在系统中的载体 ,用于记录余额、交易流水、冻结状态等信息 。在支付域 中,它还承载监管、安全、资金流转规则、财务对账等职责。

|------------------------------|-----------------------|-----------------|-----------------------|
| 账户类型 | 主要作用 | 使用场景 | 备注 |
| 客户账户(Customer Account) | 记录客户的资金余额、交易记录 | 用户充值、消费、提现 | 一般对应实名用户或商户 |
| 商户账户(Merchant Account) | 管理商户交易资金、结算金额 | 电商平台商户收款、结算 | 可分为交易账户结算账户 |
| 备付金账户(Reserve Account) | 支付机构在银行开立,用于备付金管理 | 第三方支付公司在银行的存管账户 | 受监管,不能挪用 |
| 清算账户(Clearing Account) | 用于清算机构内部资金过渡 | 网联、银联清算、跨机构结算 | 通常是机构之间的资金交互中间账户 |
| 结算账户(Settlement Account) | 交易完成后将资金结算至商户/用户的最终账户 | 商户结算周期到账户 | 不一定与交易账户相同 |
| 资金池账户(Pool Account) | 集中管理多个子账户资金,提高流动性 | 平台内部调拨、企业资金集中管理 | 常用于集团公司财务 |
| 虚拟账户(Virtual Account) | 为每个用户/商户分配的虚拟标识账户 | 银企直连、分账管理 | 实际资金在一个总账户中 |
| 保证金账户(Margin Account) | 存放保证金,防控风险 | 融资融券、预授权支付 | 资金可能冻结 |
| 预付账户(Prepaid Account) | 存放预充值资金 | 游戏充值、会员卡储值 | 一般不可提现 |
| 冻结账户(Frozen Account) | 记录被冻结的资金 | 订单争议、风控冻结 | 与原账户挂钩,冻结部分资金 |

2.1. 不同账户的作用总结

  1. 资金承载:记录用户、商户、平台等资金变化(余额、冻结、解冻)。
  2. 交易追溯:通过账户流水追踪交易历史,满足审计和监管。
  3. 风险控制:通过冻结、限额、分账等手段防控资金风险。
  4. 清结算支持:完成跨机构、跨平台、跨币种的资金划拨与对账。

2.2. 使用场景

  1. 用户充值:备付金账户入账 → 基本账户余额增加
  2. 付款:可用账户扣减,冻结账户释放/转移
  3. 担保交易:冻结账户锁定资金,交易完成后解冻
  4. 营销活动:从营销账户扣减,抵扣交易金额
  5. 跨境支付:多币种账户内部汇率结算
  6. 结算清分:待结算账户在T+N日转入商户银行账户

2.3. 支付域常见账户设计模式

总账户 + 子账户

  • 总账户实际持有资金
  • 子账户(虚拟账户)按客户/交易类型做账
  • 场景:银行虚拟子账户、平台分账管理

交易账户与结算账户分离

  • 交易账户用于实时交易记录和余额控制
  • 结算账户用于周期性清算结算
  • 场景:电商平台商户 T+1/T+7 结算

3. 账户的结构

账户主体:这个账户是谁的,个人的?企业的?内部业务线的?

账户结构树:就像会计科目,就像商品类目,由于账户可能种类繁多所以有时也需要一个结构树,比如:

账户类型:账户的分类,比如个人账户/对公账户,结算账户/付款账户,收款账户/打款账户。

账户名称:钱多少不重要,名字一定要有气质:陈老师全球通国际清算私房钱账户。

账户余额:账户余额一般为了业务需要,会设计多个金额属性,比如冻结金额,可用金额,可提金额。

账户流水:账户的资金变动记录,记录对手账户,收支方向,金额,费用类型等基本信息。

账户服务:

  • 开通/关闭
  • 权限设置
  • 入账
  • 扣账
  • 调账
  • 冻结/解冻
  • 余额查询
  • 流水查询
  • 账户底线原则

支付成功才入账,扣账成功才出款,一分不少真安全。

3.1. 账户服务解冻和冻结

3.1.1. 冻结功能

冻结账户或账户内部分资金,使得被冻结部分无法被支付、提现、转账使用,但通常仍能查询。

常见类型:

  • 账户冻结:整个账户不可动用。例如涉嫌欺诈或司法要求。
  • 资金冻结(部分冻结):只冻结账户里的一部分金额,其他余额仍可使用。
  • 交易冻结:只禁止特定类型的交易(如提现、转账),但充值或收款不受影响。

使用场景:

  • 用户账号涉嫌盗刷,临时冻结防止资金被转走。
  • 商户涉及违规操作,监管要求冻结账户资金。
  • 用户发起支付,但收单/清结算尚未完成,系统临时冻结对应金额(保障支付链路资金安全)。

3.1.2. 解冻功能

将被冻结的账户或资金恢复可用状态,解除风险限制。

触发场景:

  • 风控复核后确认交易正常,解冻账户。
  • 支付订单完成或撤销,释放之前冻结的保证金或订单金额。
  • 司法冻结到期或法院下发解冻指令。

3.1.3. 作用总结

  • 资金安全:冻结能防止盗刷和异常转账。
  • 合规要求:满足司法冻结、反洗钱、监管合规。
  • 业务保障:交易链路中保证资金不被随意挪用,例如电商订单的预授权冻结。

3.2. 账户系统解冻和冻结设计

冻结 / 解冻的本质是:

  • 冻结 ≠ 扣钱,只是限制资金的可用性。
  • 需要对账户余额拆分管理,典型是 总余额 = 可用余额 + 冻结余额
  • 解冻就是把冻结余额释放回可用余额,或在满足条件后转为实扣(消费)。

3.2.1. 数据模型设计

3.2.1.1. 账户表
复制代码
account(
  account_id,
  total_balance,     -- 总余额
  available_balance, -- 可用余额
  frozen_balance,    -- 冻结余额
  status,            -- 账户状态: 正常/冻结/销户
  ...
)
3.2.1.2. 冻结明细表

用于记录每一笔冻结的来源和状态,方便解冻/追溯:

复制代码
freeze_record(
  freeze_id,
  account_id,
  freeze_amount,
  freeze_type,   -- 冻结类型:司法冻结/风控冻结/订单冻结
  status,        -- 状态:冻结中/已解冻/已扣减
  biz_order_id,  -- 关联的业务单号(支付单、司法单)
  expire_time,   -- 冻结到期时间(可选)
  create_time,
  update_time
)

3.2.2. 冻结逻辑

  • 入参:账户号、冻结金额、冻结原因、业务单号
  • 处理步骤:
    1. 校验账户状态(不能是销户/锁定)。
    2. 校验可用余额 ≥ 冻结金额。
    3. 生成冻结明细记录。
    4. 更新账户余额:

    available_balance -= 冻结金额
    frozen_balance += 冻结金额

    1. 记录账户流水(保证账务可追溯)。

3.2.3. 解冻逻辑

解冻分两种情况:

  1. 释放解冻:直接把冻结余额还给可用余额。

    frozen_balance -= 解冻金额
    available_balance += 解冻金额

  2. 消费解冻(例如电商订单支付成功):

    frozen_balance -= 解冻金额
    total_balance -= 解冻金额 (真正扣钱)

  • 这里不再加回可用余额,而是直接减少总余额。
  • 同时写账务流水,作为资金最终出账记录。

3.2.4. 账户冻结(非金额冻结)

除了资金冻结,还有一种 账户级冻结

  • account.status 标记为冻结。
  • 账户所有出金交易都不允许,只能查余额。
  • 典型场景:司法冻结、风控强制冻结。

3.2.5. 技术实现要点

  • 并发控制:冻结/解冻涉及账户余额更新,要么用悲观锁(for update),要么用乐观锁(version 字段)。
  • 幂等处理:冻结和解冻请求必须有业务单号,防止重复操作。
  • 账务流水:所有冻结/解冻/扣款操作必须落账,保证可审计。
  • 过期解冻:对有时间限制的冻结(如预授权),需要定时任务/事件触发自动解冻。

3.2.6. 典型场景举例

  • 电商支付预授权:先冻结用户资金,待商家发货后解冻并消费。
  • 风控冻结:用户涉嫌盗刷,冻结部分资金,后续人工审核决定解冻/扣划。
  • 司法冻结:法院要求冻结用户全部资金,解冻需法院通知。

4. 如何设计账户类型

在支付域中,账户类型设计是核心工作,因为账户是资金流转、余额管理和风控控制的载体。合理的账户体系,既能支持多种业务场景(支付、清结算、分账、保证金等),又能保证资金清晰、可追溯。

4.1. 账户类型设计

  • 一账多用:一个用户可能有多个账户,分别承载不同的资金属性(如可用余额、冻结资金、保证金)。
  • 账户分层 :底层是总账/资金账户 (资金来源真实承载),上层是子账户/业务账户(映射业务维度)。
  • 可扩展性:支持新增账户类型(例如以后支持数字货币账户、积分账户)。
  • 强一致性:所有资金变动必须可追溯,满足会计分录借贷平衡。

4.2. 常见账户类型

4.2.1. 按资金属性划分

  • 可用账户:存放用户真实可支配资金,用于支付、提现。
  • 冻结账户:存放冻结资金,因订单锁定、司法冻结等。
  • 在途账户:存放未清算完成的资金,例如支付过程中待结算资金。
  • 保证金账户:存放担保资金,如商户入驻平台时缴纳的保证金。

4.2.2. 按账户主体划分

  • 用户账户:用户个人资金账户。
  • 商户账户:商家收款资金,支持清结算、分账、提现。
  • 平台账户:平台的自有资金账户,用于手续费收入、补贴、活动奖励。
  • 监管/备付金账户:存放在银行/三方支付备付金账户,满足合规要求。

4.2.3. 按账务层级划分

  • 总账户(Ledger Account):统一记账(如某个用户在系统的总账余额)。
  • 子账户(Sub-Account):按场景细分(保证金子账户、积分子账户)。

4.3. 账户设计要点

  1. 账户唯一标识
    • account_id 唯一标识账户。
    • user_idmerchant_id 绑定。
  1. 账户余额字段(核心设计):
    • available_balance(可用余额)
    • frozen_balance(冻结余额)
    • total_balance(总余额 = 可用 + 冻结)
    • pending_balance(在途资金)
  1. 账户状态
    • ACTIVE(正常)、FROZEN(冻结)、CLOSED(销户)、PENDING(待激活)。
  1. 资金流转规则
    • 所有变动必须记录交易流水(Transaction Journal)。
    • 保证借贷平衡(如用户扣款+平台增加 = 总账平衡)。
  1. 扩展性
    • 通过账户类型枚举 + 子账户维度,支持扩展。

4.4. 示例账户模型

4.4.1. 账户表(Account)

|-------------------|-------------------------------------|
| 字段 | 含义 |
| account_id | 账户唯一标识 |
| owner_id | 所属用户/商户 ID |
| account_type | 账户类型(USER、MERCHANT、PLATFORM、ESCROW) |
| available_balance | 可用余额 |
| frozen_balance | 冻结余额 |
| pending_balance | 在途余额 |
| currency | 币种 |
| status | 状态(ACTIVE/FROZEN/CLOSED) |
| created_time | 创建时间 |
| updated_time | 更新时间 |

4.5. 使用场景示例

  • 电商支付
    • 用户账户 → 扣减可用余额;
    • 商户账户 → 增加在途资金,待确认收货后转为可用余额。
  • 保证金管理
    • 商户保证金账户 → 存放不可提现资金;
    • 平台可对保证金做部分冻结(例如因违规扣款)。
  • 风控冻结
    • 用户账户 → 冻结部分资金,防止盗刷;
    • 司法解冻后 → 资金回归可用账户。

4.6. 账户的附属设施

有了电池是不是还需要充电线,有了油罐是不是还得有加油设备,安全设备;同样有了账户是不是还得有附属模块才能实现账户的资金管理职能。

费用类型:每笔交易都有业务场景,比如下单付款,投诉罚款,用户充值,余额提现,账户年费等等,一个是为了让用户知道这是笔什么交易,另一个就是财务能够知道编写什么科目的会计凭证。

入账规则:上游有业务系统比如账务系统请求一笔费用的入账,那么如那个账户呢,收支方向如何呢?所以入账规则就是来确定这笔入账怎么入的问题,规则主要有2部分组成。

冻结规则:有些费用入账后是需要暂时冻结的,比如用户领的活动奖金,必须在冻结7个工作日之后才能解冻;某业务线的商家结算收入,统一在次月15号可提走,所以一条入账规则需要关联一个冻结规则。

费用/入账规则/冻结规则关系:一个费用入账时,可能记一笔账,也可能记多笔;比如商户佣金费用,则会入两笔账:成本账户入一笔扣款,商家佣金账户入一笔收入;而扣款不用冻结,收入需要冻结7天。

对外服务:任何系统都不是孤岛,账户系统同样,要将能力赋能给上游实现自己的价值;账户向外提供的服务基础的应该包含:开户,注销,查询(余额,流水,状态),交易(支付,退款,充值,提现,冻结)等。

账户管理后台:账户系统需要提供一个业务后台给到相关的运营人员,财务等角色;后台可以查看所有的账户以及账户的状态,所属主体以及余额情况,还可以操作账户进行注销。

还需要能够查看所有的出入账流水,配置相关费用,配置入账规则和冻结规则。

5. 账户系统设计

账户系统功能架构:

账户系统业务架构:

6. 账户入账流程图

7. 账户的应用

7.1. 资金存管与结算

  • 用户资金账户:记录用户的余额,支持充值、提现、消费。
  • 商户资金账户:管理商户收款、结算、退款等交易。
  • 平台清算账户:作为交易撮合中间账户,用于临时资金过渡、对账。

📌 应用场景:余额支付、提现到银行卡、商户结算、平台分账。

7.2. 风险与合规管理

  • 冻结与解冻:在发现风险交易(欺诈、套现、风控预警)时冻结账户,防止资金流出。
  • 限额控制:通过账户维度控制用户每日/每月支付、提现、转账额度。
  • 黑白名单:账户可以与风控系统联动,标记高风险账户。

📌 应用场景:支付风控、反洗钱(AML)、交易合规审查。

7.3. 产品与业务功能支撑

  • 分账账户:支持平台型业务(如电商、出行),将资金按比例分配给多个商户。
  • 保证金账户:存放商户或用户保证金,用于担保、押金等场景。
  • 积分账户:承载非货币化资产,如积分、优惠券余额。

📌 应用场景:共享单车押金、交易保证金、积分兑换、红包。

7.4. 运营与营销

  • 营销账户:存放平台的补贴资金,用于发放优惠券、红包、返现。
  • 预付费账户:比如充值卡、储值卡,提前锁定资金,提升用户粘性。

📌 应用场景:满减优惠、现金红包、会员充值卡。

7.5. 对账与清算

  • 内部账务核算:每笔资金交易都通过账户体系入账,保证账务平衡。
  • 外部对账:与银行、清算机构、第三方支付通道进行对账,避免资金差错。

📌 应用场景:日终对账、差异调账、跨机构清算。

账户除了管钱之外还可以在此之上构建一些应用产品,比如下面这两个:

  • 钱包:像微信钱包,就是用户的一个虚拟账户,在钱包里可以看到余额,可以充值余额,也可以将余额里的钱提现到银行卡;
  • 余额支付:账户可以作为一种支付方式,包装出一个支付通道,利用平台自己的账户进行平台商品的购买支付,当然这个要考虑合规性。

8. 账户合规要求

在支付域里,账户合规 是非常核心的主题,因为账户直接承载用户的资金、交易、清结算以及监管数据。合规设计主要涉及 资金安全、反洗钱、监管要求、风控合规 等方面。整理如下:

8.1. 账户合规的核心要求

  • 实名制合规
    • 要求账户与真实用户身份绑定。
    • 需要对接公安部、银行等权威数据源进行实名认证。
    • 分级管理:不同实名认证等级对应不同账户权限与限额。
  • 资金合规
    • 所有资金必须全额备付,避免挪用。
    • 要求做到资金清晰隔离:客户资金、机构自有资金、清算资金不能混用。
    • 资金流转需可追溯,满足审计与监管检查。
  • 交易合规
    • 账户内所有出入账交易都需完整记录,保证不可篡改、可追溯。
    • 满足《支付结算办法》《反洗钱法》《清算管理条例》等要求。
    • 支持实时监测异常交易(大额、频繁、跨境敏感交易)。
  • 反洗钱合规 (AML/KYC)
    • 建立 KYC(了解客户)体系,收集并验证客户身份信息。
    • 建立交易监测系统,对大额、可疑交易进行标记并报送监管。
    • 保留客户交易记录不少于 5 年。
  • 监管合规
    • 按照监管要求报送交易流水、资金余额、账户状态。
    • 资金需进入监管账户(如备付金交存人民银行)。
    • 符合银保监会、央行对支付机构的管理办法。

8.2. 账户合规的设计要点

  • 账户分级设计
    • 一级账户(实名制强认证):资金无限额,可用于全量交易。
    • 二级账户(弱认证):限额使用,用于便捷支付场景。
    • 匿名账户:限额极低,只能用于体验或小额支付。
  • 账户审计与风控
    • 所有账户操作(开户、充值、提现、转账、冻结、解冻等)都需记录审计日志。
    • 日志必须不可篡改(如区块链或专用审计库)。
    • 接入实时风控系统,对异常行为自动冻结或限制。
  • 资金隔离
    • 在系统层面明确区分:
      • 用户资金账户
      • 商户备付账户
      • 清结算账户
      • 平台自有账户
    • 严格控制跨账户操作权限,避免资金混用。
  • 合规接口与报送
    • 系统需具备自动生成合规报表、对接监管报送系统(如大额可疑交易报送系统)。
    • 确保合规数据完整、准确、及时。

8.3. 账户合规的应用场景

  • 用户开户/绑卡:必须实名制校验,通过合规模块验证身份。
  • 资金进出:必须经过反洗钱系统校验,避免黑灰产洗钱。
  • 商户结算:资金进入监管账户,再按规则划拨,保证资金安全。
  • 跨境支付:需符合外汇管理、跨境资金监控等要求。
  • 风控处理:异常账户实时冻结,保障合规。

博文参考

  • 《账户系统设计》
  • 《支付域》
相关推荐
Pocker_Spades_A3 天前
飞算 JavaAI 智能进阶:从技术工具到金融科技开发范式的革新
java·金融·飞算javaai炫技赛
量化风云4 天前
『量化人的概率 03』PDF is all you need
python·金融·pdf·概率论·量化交易·量化课程
Kookoos5 天前
ABP VNext + Apache Kafka Exactly-Once 语义:金融级消息一致性实战
金融·kafka·apache·abp vnext·outbox pattern
Joker时代9 天前
LOOP Finance:一场 Web3 共和国中的金融制度实验
金融·web3·区块链
Ashlee_code11 天前
南太平洋金融基建革命:斐济-巴新交易所联盟的技术破局之路 ——从关税动荡到离岸红利,跨境科技如何重塑太平洋资本生态
java·开发语言·科技·金融·重构·web3·php
Ashlee_code12 天前
北极圈金融科技革命:奥斯陆证券交易所的绿色跃迁之路 ——从Visma千倍增长到碳信用衍生品,解码挪威资本市场的技术重构
科技·算法·金融·重构·架构·系统架构·区块链
Ashlee_code12 天前
关税战火中的技术方舟:新西兰证券交易所的破局之道 ——从15%关税冲击到跨塔斯曼结算联盟,解码下一代交易基础设施
java·python·算法·金融·架构·系统架构·区块链
zzywxc78717 天前
编程算法在金融、医疗、教育、制造业等领域的落地案例
人工智能·算法·金融·自动化·copilot·ai编程
zzywxc78717 天前
编程算法在金融、医疗、教育、制造业的落地应用。
人工智能·深度学习·算法·机器学习·金融·架构·开源