文章 · 2024-12-31

某大型电商平台的清结算系统

清结算系统负责确定平台的付款对象、付款金额及其计算依据,并为每笔结果保留可核对、可追溯的记录。

系统虽然以财务后台和业务单据为主要界面,但其状态与数据直接关系到资金安全。一个字段或状态的变化,可能同时影响对账、付款、开票、导出、权限和审计。

我在 2023—2024 年参与这套系统的应用架构与持续演进。企业名称、金额和内部规则已经隐去,下面重点说明问题以及我做了什么。

业务复杂性

一次结算通常要经过对账、生成结算单、确认、付款和开票等步骤。每一步都可能由不同系统、不同岗位在不同时间完成。

例如,平台向支付系统发起付款后连接超时。此时我们只知道“没有收到回复”,却不能直接认定付款失败:对方可能已经付了,只是回复没有传回来。如果系统盲目重试,就有重复付款的风险。

所以清结算系统不能只把正常流程做通,还必须回答三个问题:钱算得对不对、异常能不能恢复、事后能不能查清楚。

职责与关键工作

在项目中,我负责应用架构与关键方案设计,将分散在页面、接口和定时任务中的业务规则整理为可以统一维护、持续演进的系统结构。

关键工作包括:

这些工作让团队面对需求变化时,不再只考虑“代码能不能改”,而会同时考虑资金、状态、外部系统和恢复路径。

资金操作的安全设计

对外付款、开票等操作都会使用稳定的业务编号。同一个请求即使因为超时被再次提交,远端也能识别它是不是已经处理过。

对于结果未知的请求,系统不会简单标记为成功或失败,而是进入待确认状态,再由对账任务查询远端结果。这样可以减少重复付款,也不会把一笔真实成功的交易误当作失败。

人工调整同样受到约束:要记录谁在什么时间改了什么、为什么修改、修改前后分别是什么,以及是否经过审批。日志不再只是排查程序错误的辅助信息,而是业务记录的一部分。

模块边界与部署策略

这套系统既有在线查询,也有耗时导出、定时计算和外部系统调用。架构首先按职责划分模块,但不要求每个模块都成为独立微服务。

关键目标是保证规则只定义一次、依赖方向清楚,并避免耗时任务影响在线操作。是否独立部署,由流量、故障隔离需求和维护成本共同决定。

结果与架构价值

这项工作的价值可以概括为:让涉及资金的变更更可控。

业务规则有了统一位置,异常情况有明确去向,外部调用可以核对,人工操作可以追溯,发布也有验证和恢复方案。这样既降低了重复付款、状态混乱和数据无法解释的风险,也让后续需求能够在清晰边界内继续迭代。

复杂的财务业务因此变成了明确的系统规则;异常发生时,系统仍然控制得住、恢复得了、解释得清。

© 2026 Yuxu Ge ·