10 章 · 共 15

系统、数据与权限:支付状态、账务和资金三条链一致

10.1 参考架构

支付基础设施以API
支付交换
风险
账本
清算
支付基础设施以API、支付交换、风险、账本、清算、备付金、财务和客服组成分层小镇,密钥与审计护栏包围全域
正在绘制业务流程…
把正文中的参与者、动作与交接关系放回同一条业务链观察。

10.2 支付状态与账务状态分开

支付状态表达业务过程,账务状态表达金额是否预记、记账、冻结、释放、冲正或结算。上游返回成功但账本失败是重大异常;账本已预记但上游未知需要保留并查询。不能用一个status=success同时控制前端、商户结算和总账。

支付状态账务状态允许动作禁止动作
CreatedNone风控、取消未发送请求商户结算
ProcessingReserved/Pending查询、等待异步回执盲重试新扣款
UnknownPending查询、对账、客户显示处理中标失败并再次扣款
SucceededPosted进入清算/退款删除原记录
SettledSettled对账、争议无原交易退款
RefundedReversed/Refunded客户确认与关单再次全额退款

10.3 双式账本和守恒

每个金融事件至少产生平衡分录,账户余额来自已批准分录聚合而非直接覆盖。账户类型包括用户余额、待结算、商户应付、退款应付、在途、差错、服务费应收/收入和外部清算。分录包含事件ID、借贷账户、金额币种、业务时间、账务时间、来源、状态和反向关联。

正在绘制业务流程…
把正文中的参与者、动作与交接关系放回同一条业务链观察。

10.4 幂等设计

幂等键的作用域要包含商户、业务类型和业务意图,不能全局只用订单号,也不能每次重试生成新键。API入口、支付编排、上游请求、账本、通知、退款和清算文件各有幂等,但必须共享原始业务关联。缓存过期不能让旧重试产生新扣款;跨机房切换后幂等记录仍可用。

10.5 四方对账引擎

四方是内部支付事件、内部账本、银行/清算外部记录和商户结算/总账。文件层校验来源、日期、记录数、金额和哈希;记录层用稳定ID匹配;业务层判断状态、金额、主体、币种、费用和价值日。对账差异有风险优先级和到期日,不能永远挂“在途”。

规则ID校验失败动作
DQ-J06-01每个有效支付意图最多一个有效扣款事件冻结相同幂等范围
DQ-J06-02所有账务事件借贷相等阻断账本提交
DQ-J06-03客户资金期初+流入-流出=期末阻断日结/结算
DQ-J06-04商户应付=成功清算-费用-退款/调整暂停商户批次
DQ-J06-05外部成功=内部成功+已解释差异建差错并查询
DQ-J06-06银行价值日金额=资金账±合法在途资金升级
DQ-J06-07服务费收入=唯一可计费事件×有效费率阻断收入关账
DQ-J06-08同文件哈希只处理一次拒绝重复批次
DQ-J06-09商户结算账户变更均有原渠道回拨暂停支付
DQ-J06-10监管汇总可下钻到源事件阻断报送

10.6 密钥、证书和敏感凭证

支付密钥不出安全域,生成、导入、轮换、备份、启用、吊销和销毁均双控。应用只取得用途受限的密钥句柄,运维不能查看明文。银行卡、银行账户、身份证、生物特征和认证因子按最小化处理;下游尽量使用令牌。日志不得记录完整敏感凭证,排障也不例外。

10.7 权限矩阵

操作产品运营账务资金风控/AML技术/运维
发布费率提议C验证-C受控执行
改路由C发起CCC执行
调商户限额CC--批准/建议不得业务批准
发起商户结算-C生成依据发起监控不得发起
批准资金支付---独立双签-不得批准
修改账务--受控冲正C-不得直接SQL改余额
提交可疑报告--提供数据-授权AML仅技术传输
删除审计日志禁止禁止禁止禁止禁止禁止,只能按政策归档

10.8 数据、隐私与跨境

【可核验事实|中国大陆】个人信息保护、数据安全和网络数据处理分别受相关法律法规约束;支付机构还应结合支付监管、反洗钱和网络安全规则。[SRC-NPC-PIPL-2021][SRC-NPC-DATA-SECURITY-LAW-2021][SRC-SC-NETWORK-DATA-REGULATION-2024] 项目建立字段级清单:目的、法律基础、敏感性、来源、使用者、存储地、共享方、期限、删除和出境路径。

跨境风控不能默认把全部支付明细、身份材料、设备图谱和生物信息复制到海外。可比较本地闭环、去标识聚合、受控远程访问和正式出境四种架构,并从合法性、模型效果、延迟、成本、监管访问和退出能力权衡。

10.9 灾备与业务复演

灾备测试必须重放成功、失败、未知、重复、乱序、退款、清算文件重传和跨日结算;恢复后比较支付状态、账本、客户资金、商户应付、银行、总账和客户查询。RTO达成但多扣一笔钱,演练仍失败。

主支付机房故障后团队切换到备用小镇
并逐笔重放
对账和核验客户资金后才恢复商户结算
主支付机房故障后团队切换到备用小镇,并逐笔重放、对账和核验客户资金后才恢复商户结算

10.10 稳定标识与最小数据模型

一笔业务至少有商户订单号、支付机构支付ID、幂等键、上游请求号、清算参考号、账务事件ID、结算批次号和退款ID。它们不是可互换的“流水号”:订单号表达商业意图,支付ID表达一次支付生命周期,幂等键防止相同意图重复生效,上游号用于通道查询,清算号证明价值交换,账务事件记录不可变金融影响,结算批次汇总商户应付。数据模型应保存映射关系,而不是把最后收到的号覆盖到同一字段。

主数据同样需要版本。商户主体、受益所有人、结算账户、合同、产品、费率、渠道和风险策略发生变化时,旧交易仍应指向当时生效版本。用当前费率回算历史交易会造成收入与商户账单漂移;用当前商户风险等级解释历史处置会破坏审计。版本记录至少包含生效与失效时间、批准人、变更原因和证据摘要。

实体必要主键关键版本/状态禁止做法
商户merchant_id主体、场景、KYB、账户用店铺昵称作唯一键
支付payment_id意图、授权、执行、终态以订单号代替支付ID
账务事件ledger_event_id分录版本、冲正关联更新删除原分录
清算clearing_ref价值日、对手方、结果只留Excel行号
结算settlement_batch_id应付、扣费、放款、退回手工改总额不留明细
定价price_version_id费项、阶梯、有效期覆盖历史费率

10.11 消息投递:至少一次传输与业务恰好一次生效

分布式系统很难承诺每条网络消息只到一次,因此工程目标是允许消息重复到达,却只让业务影响生效一次。请求侧用幂等键和唯一约束;数据库事务中同时写业务状态和待发送事件;发送器重复投递直到收到确认;消费侧用事件ID去重并保证处理与收件记录同事务;失败进入可观测重试或死信队列。任何自动重试都设置次数、退避和总时限,超过阈值转人工处置。

通知商户失败不等于支付失败。商户查询接口、异步通知和对账文件应返回同一权威状态语义;若通知多次,商户也应按支付ID幂等处理。系统切换、消息积压或数据库回滚后,要用业务不变量验证:客户只扣一次、商户只形成一笔应收、账本只有一组有效分录、退款累计不超过可退额。仅看HTTP成功率无法证明这些不变量。

10.12 可观测性与审计轨迹

日志回答程序做了什么,业务事件回答钱发生了什么,审计轨迹回答谁基于什么权限做了什么决定。三者应通过支付ID、商户ID、案件ID和变更ID关联,但权限和留存策略不同。日志不得明文打印完整身份证件、银行卡敏感信息、密钥或认证要素;分析平台使用脱敏或令牌化数据;高敏查询记录目的、工单和查看人。

监控分四层:基础设施看容量和依赖;应用看延迟、错误和队列;业务看成功、未知、退款和结算;资金账务看不平、重复、负余额和超期未匹配。告警要关联行动手册、当班负责人、升级阈值和业务影响,不以海量无人处理的消息制造安全感。重大事故时间线统一使用可信时钟,保留原始证据,复盘区分触发因素、放大因素和根因。

10.13 规则模型与人工决策治理

反欺诈模型给出概率或分值,不直接等于事实结论。上线前定义目标、样本窗口、标签来源、误杀成本、群体影响、降级方案和批准人;上线后监控数据漂移、命中稳定性、绕过方式、人工推翻率和投诉。训练数据与生产特征要有合法来源和用途边界,敏感个人信息采取更严格控制。模型版本、特征版本、阈值和处置动作必须可追溯。

人工审核不是无规则自由裁量。审核台展示必要证据、允许的结论、理由码和复核路径;高风险限制或大额处置实行双人或分级批准。模型不可用时按事先批准的安全策略降级,例如缩小额度、加强认证或转人工,而不是默认全部放行或全部拒绝。模型供应商只提供能力,支付机构仍要对使用场景、客户影响和持续监督负责。

10.14 外包、云和退出计划

接入云、短信、身份核验、反欺诈、渠道或运维供应商前,业务负责人说明必要性,架构和安全评估数据、权限、可用性及集中度,合规判断监管与跨境要求,采购和法务固化服务水平、审计权、事件通知、分包限制、数据返还删除和退出条款。合同签完不是风险结束,运行期继续监控性能、事件、财务健康和重大变更。

退出计划要能执行:资产与数据清单完整,可导出格式经过验证;替代供应商或自建能力有容量;密钥和网络切换步骤明确;历史证据、账务和客户申诉仍可查询;退出后撤销账户、证书和访问权。每年至少桌面演练关键供应商退出,重大依赖做技术演练。若单一供应商故障即可导致客户重复扣款、无法结算或账本不可用,应提升到董事会风险,而不是停留在采购折扣议题。

10.15 灾备切换的业务复演

灾备成功不以“服务器启动”为终点。演练前冻结范围和恢复点目标,备份订单、支付、账务、清算和配置版本;切换时确保双活或主备不会同时对外产生金融效果;切换后抽取成功、失败、处理中、退款、结算和跨日交易,逐笔复演状态、分录、客户资金和通知。切回原中心前再次核对增量事件,防止两个中心各自接受同一幂等键。

演练报告列出丢失或延迟事件、未知状态峰值、对账差额、人工补录、客户影响和恢复时间。人工补录也必须走受控事件和批准流程,禁止直接改数据库。若演练发现目标无法达成,立即更新容量、架构、值班和商户沟通方案,并在整改前限制超出恢复能力的新业务量。

章末理解检查

合上原文,你能讲明白了吗?

不看原文,用自己的话解释「系统、数据与权限:支付状态、账务和资金三条链一致」真正要解决什么业务问题。

已输入 0 个字,还需 12 个字;提交后会显示自检标准,并把本章记为已完成。
本章目录15