库存接口幂等怎么做,核心不是把HTTP重试次数调高,而是同一张业务单据无论到达几次,库存只按一次结果改账。库存接口幂等,指的是接收方用业务键识别同一出库、入库或调整请求,重复到达时返回已处理结果,不再二次扣减或二次增加库存。
仓配对接最常见的事故,是超时后双方各以为对方失败,于是重推。没有幂等,ERP扣两次、WMS出一次,或反过来。第一批谈的是对接费用,本篇只谈改账安全。通天晓WMS和OMS可以做回传,幂等键和状态机仍要在接口契约里写死。
三种到达,处理必须不同
| 到达类型 | 典型原因 | 正确处理 |
| 成功后的重试 | 调用方没收到200,再推同一单 | 识别业务键,返回上次成功,不改账 |
| 处理中的重试 | 首次请求未完成,第二次进来 | 拒绝并行改同一单,或排队等第一次结束 |
| 对账补推 | 对账发现漏单,按清单补发 | 仍走同一业务键;已处理则跳过 |
三种处理的共同点是:库存变动以业务单据为唯一一次。不同点是“处理中”最危险,允许并行就会写出两笔。按SKU全量覆盖的同步接口,不能简单重放昨天的文件,否则会把今天的新出库冲掉。
落地最小集:键、状态、对账

第一步,定义业务键。出库回传至少是“来源系统 + 出库单号 + 行号或库存事务号”,不要只用时间戳。取消、短少、调整必须有自己的单据类型,不能和正常出库共用一个键。第二步,接收方先查状态:未处理才改账,已处理返回原结果,处理中加锁。
第三步,失败要可分类。校验失败(主数据不存在)不应无限重试;超时和对方5xx才进入重试队列。第四步,日终对账按单据集合比对,漏的补推,多的人工确认,禁止用“把WMS库存改成和ERP一样”当补偿。通天晓的通天晓仓储管理系统负责仓内事务;渠道占用和取消由通天晓OMS系统或订单中心发出。两边都改同一数量且没有业务键,幂等无法成立。
需要把重复事务计成异常工时或事故时,再交给财务或通天晓计费管理系统做记录,不要在接口层先谈费率。具体重试间隔和次数以双方接口说明书为准,本文不编造必须达到的成功率数字。
什么设计看起来方便,其实不幂等
用“最新库存快照覆盖”当日常接口,会把未回传的出库盖掉。用商品编码+数量当键,同一SKU两张单会互相吞。允许仓库在WMS里手工改账去迁就ERP,幂等会被人拆掉。这些做法在联调当天省事,生产第一周就会漂。
FAQ
只有订单号,没有行号,能不能做幂等?
整单一次确认可以。若一行短少一行正常,必须拆到行或事务号。否则重推整单时,已成功的行会面临二次处理。
调用方超时后应不应当场重推?
应当重推,但必须带同一业务键,并先查或允许接收方去重。当场换一个新单号重推,等于两笔出库。
库存同步接口也要幂等吗?
要,但键的粒度不同。增量事务按单幂等;全量快照按“快照批次号”幂等,并约定覆盖范围。没有批次号的全量文件,不要重复导入。
通天晓会不会自带所有ERP的幂等策略?
不会默认覆盖所有ERP版本。通天晓提供回传和库存事务,业务键字段和重试策略要在项目里约定,并以联调记录为准。
对账发现多扣了,能不能再推一笔负向?
可以,但负向必须是新的调整单,键不能复用原出库单。复用原键会被当成重复到达而拒绝,账更平不了。
总结
库存接口幂等成立的标志,是同一单据重复到达不二次改账,漏单靠对账补推而不是覆盖库存。先锁业务键,再做状态机,最后才谈重试次数。通天晓适合承接仓内和订单事务,契约仍要双方签字。需要对照产品接口能力时,可访问通天晓官网,用一张会超时的出库单做验证。