订单、库存、支付或物流系统通过接口连接后,网络超时并不等于对方没有处理。发送方没有收到响应时通常会重试,如果接收方把每次请求都当成新业务,就可能生成重复订单、重复扣减库存或重复登记结果。

幂等的目标,是同一个业务请求执行多次仍得到一致结果。设计时先选择稳定的业务唯一键,例如来源系统、单据类型和来源单号的组合,而不是每次重试都生成新的随机编号。接收方根据唯一键判断已处理、处理中或失败,并返回对应状态。

唯一键只能防止重复创建,还需要清晰的状态机。一个订单从接收、校验、确认到取消,各状态允许哪些动作、失败后能否重试、取消与发货冲突时如何处理,都要提前定义。没有状态约束时,同一个接口可能把已完成单据重新改回处理中。

重试策略要区分可恢复错误和业务错误。临时网络失败可以按规则重试,商品不存在、权限不足或单据状态不允许则应直接返回明确错误,等待业务处理。无限快速重试会放大故障,也会让日志和告警被重复信息淹没。

跨系统操作无法一次完成时,需要补偿机制。订单已创建但库存占用失败,可以撤销订单、释放已完成步骤或进入人工处理队列,具体方式取决于业务是否可逆。补偿不是简单删除数据,而是用新的业务记录抵消之前动作,并保留完整轨迹。

接口还要准备主动对账。按时间段比较双方单据数量和关键状态,发现一方存在另一方缺失、金额数量不一致或状态长期未完成时,生成差异清单。对账任务应支持安全重放或人工确认,不能直接用一方数据无条件覆盖另一方。

可观测信息应围绕业务追踪号组织。日志记录请求来源、唯一键、处理阶段、结果码和耗时,但不打印完整手机号、密钥或不必要的业务明细。运营人员通过追踪号定位单据,技术人员据此查看链路,不需要在多个系统里用客户隐私搜索。

接口版本变化也要保留兼容边界。新增非必填字段可以逐步上线,删除字段或改变含义则需要版本和迁移计划;发送方与接收方应约定停用时间和回滚方式。不能只因为测试环境调用成功,就假设所有门店、合作方或旧客户端已经同步升级。

验收接口时应主动制造重复提交、响应超时、处理中断、乱序回调、业务校验失败和补偿失败等场景。系统集成的可靠性不体现在正常请求能成功,而在异常发生后不会重复记账、不会悄悄丢单,并且可以通过状态和对账恢复。

下一步建议

将本文提到的判断标准放入一条真实业务流程中验证,并在方案中明确角色、数据口径、异常处理和验收样例。