接口重试可能让同一业务动作被重复执行。本文说明如何用业务标识、幂等校验、处理台账与补偿机制,提升低代码系统集成的可控性。
低代码系统对接 ERP、财务、仓储或其他业务平台时,接口能够重试并不等于业务动作可以重复执行。要避免一张订单生成两次、一笔确认被累计两次,需要为业务请求建立稳定标识,并在写入前判断它是否已经受理、正在处理或已经完成。
网络超时、回调重复、消息重新投递和人工补发都可能带来同一请求。调用方看到超时,只能确定没有收到结果,却不能据此判断服务端没有完成写入。因此,集成设计要把“技术请求是否成功”与“业务动作是否已经生效”分开处理。
先确定什么才算同一个业务动作
幂等判断不能只依赖请求时间或随机流水号。团队应根据业务含义选择稳定标识,例如来源系统、单据类型、来源单号和动作类型的组合。创建、审核、撤销等动作即使关联同一单据,也应使用不同的动作标识。
如果来源系统会修改单号或重复利用编号,还需要加入版本或业务日期。标识规则应由双方共同确认,并记录在接口文档中,避免调用方每次重试都生成新编号,使服务端无法识别重复。

处理台账要早于正式业务写入
服务端收到请求后,可先在处理台账中登记幂等标识、摘要、接收时间和当前状态,再执行正式业务写入。幂等标识应有唯一约束;两个请求并发到达时,只允许其中一个取得处理权,另一个读取已有状态。
台账至少区分处理中、成功和失败。对于成功请求,应保存目标记录标识和可安全返回的结果;对于处理中请求,应返回明确状态而不是再次执行;对于失败请求,则需要判断是否允许重放,以及上一次是否已经产生部分结果。
请求内容变化时不能静默当作重复
相同幂等标识却带来不同金额、明细或对象,通常意味着调用规则或人工补发出现问题。系统不应简单返回第一次结果,也不应覆盖原记录,而要比较关键字段摘要,将其标记为冲突并交由责任人确认。
摘要不必保存全部敏感内容,可以对影响业务结果的字段进行规范化后计算。接口文档要明确哪些字段参与判断,避免无关的时间戳或字段顺序造成误报。
数据库事务与幂等机制要配合
处理台账登记、业务记录写入和成功状态更新,应尽可能处于一致的事务边界。若外部系统调用无法纳入同一事务,则需要保存每一步结果,并设计可重复执行的补偿动作。仅在代码中先查询再插入,无法可靠应对并发请求。
在明道云等低代码平台中,可通过唯一业务键、集成台账、工作流状态和异常队列组合实现。具体实现取决于接口能力与数据量,但原则始终是:先识别业务动作,再决定是否执行,而不是发生重复后再人工删记录。
超时后的查询接口同样重要
调用方遇到超时后,优先根据幂等标识查询处理状态。若已经成功,就取得原结果;若仍在处理中,则按约定等待;只有明确失败且允许重放时才再次提交。查询与提交共享同一标识,能减少盲目重试。
运维记录应保留请求标识、状态变化、目标记录、错误分类和处理时间,但不能把鉴权密钥、完整个人信息或不必要的业务正文写入日志。对持续处于处理中的请求,还要设置复核和告警规则。
用异常场景验收集成可靠性
验收不应只测试一次正常调用。至少要覆盖连续重复提交、并发提交、服务端写入后响应中断、内容冲突、下游超时、人工补发和失败后重放,并检查每个场景最终只产生符合预期的业务结果。
接口幂等不是某个参数的单点功能,而是一套关于身份、状态、事务和补偿的共同约定。把这些约定落到台账和验收样本中,低代码集成才能在真实网络波动下保持可追踪。
常见问题
给每次请求生成 UUID 就能避免重复吗?
不能。如果每次重试都生成新的 UUID,服务端仍会把它们视为不同动作。标识必须在同一业务动作的所有重试中保持一致,并能与来源单据和动作类型对应。
接口返回成功后还需要保留处理台账吗?
需要。台账用于响应后续重复请求、定位目标记录和解释状态变化。可以按业务审计与数据保留要求归档,但不宜在短期内删除到无法判断重复。
幂等是否意味着失败请求可以无限重试?
不是。参数错误、权限错误和业务冲突通常需要修正后再处理;网络中断等暂时性故障才适合有限重试。重试前仍要查询上一次处理状态。
已有重复记录应该直接删除吗?
应先确认记录是否已影响审批、库存、财务或其他系统。通常需要通过撤销、冲销、合并或人工核对处理,并保留原因和关联记录,不能只删除表面数据。