
采购量撞上库存上限时如何调整下单批次
采购量确定后若实际可售库存低于预期,需按库存类型分情况调整批次,不能统一按可用余额硬分。本文给出可执行的拆分与回调判断标准,帮你在下单前把货源状态与资金约束对齐。
确定数字商品采购量之后,若实际可售库存低于预估,必须按库存类型分情况调整批次,不能把资金预算直接等同于可下数量。可执行的判断标准只有一条:当公开库存不足、不限量没有明确上限或不公开库存状态未知时,须把单次采购拆成多批次,并以状态订阅和订单回执作为补货信号,而不是按可用资金一次性下达。
先从库存类型判断这批货能不能足额下单
采购量确定后第一项检查,不是核对预算,而是先确认货源的库存类型与可售状态。在查询商品列表时,json 返回的 data.list[].inventoryType 明确分为 tracked(公开库存)、unlimited(不限量)和 undisclosed(不公开库存)三类,每类的判定依据不同。只有 tracked 类型会在 data.list[].remainingUnits 返回具体可售数量,这时若 remainingUnits 小于采购计划,就形成了明确的库存上限。
面对 unlimited 类型,remainingUnits 固定为 null,不能因为拿不到具体数字就当成无限可售,也不可以把预算全部投入。渠道经营者必须假设存在隐性上游限制,把首批数量控制在最小可用单元。对于 undisclosed 类型,依据接口规则,是否可以购买只看 availability,不影响下单模板与数量,此时不能根据库存数量判断是否可以下单,只能用小额试单验证真实供货能力。
充值类商品及其规格通常返回 inventoryType=undisclosed、remainingUnits=null,这是由接口明确说明的统一特征。采购这类商品时,任何依据库存数字倒推批次的做法都不成立,只能按前面所说的可买状态与试单结果来判断。
库存不足时的批次拆分与资金约束
当 tracked 库存明确低于采购量时,可执行的做法是先按 remainingUnits 减去安全余量后的数值拆分本批次,而不是把总数平均分配。例如,采购计划为 500 件,remainingUnits 为 380,则本批次下单数量应取 380 减去当批可能消耗的安全余量,把剩余数留作下一次补货,避免因小幅变动导致后续无法履约。至于安全余量的大小,需要根据接口更新频率和历史消耗速度设定,不以一次查询结果为最终依据。
资金约束会反过来限制可拆批次的最低数量。每批数量必须同时满足两个条件:一是资金占用不超过当期可动用预算,二是单品数量符合供应商的最小起购或模板约束。例如,当资金只够 200 件而库存有 400 件,应先了解下一批到账时间,再决定是否分两批,而不是为了用满预算把同一订单拆成无法履约的小单。
unlimited 类型的批次设定依据不是“能买多少”而是“先验证能稳定供应多少”。建议先以 1 或最小单位试单,确认发货流程、回调状态和结算口径都正常后,再按前一周实际消化量的一定比例递增。这个比例不是固定标准,需要根据售后和断供风险重新调整。
不公开库存场景下的批次调整步骤
undoclosed 库存不能事前锁定数量,批次调整要依靠实时状态与订阅通知完成。下单前先查询商品列表,确认 availability 为 available,再按渠道当期能承受的试单量下达首批。这里要特别注意,订单创建成功后不能更换该订单的回调地址,必须把回调地址固定在已确认可用的地址,否则后续状态无法可靠接收。
已订阅该商品变化通知的账户,平台会在 availability、库存类型或可售数量变化时推送 product.changed 消息,可用其中的 productSnapshot 更新本地状态。收到通知后,按 variantRef 对照变化属性;若 availability 转为 unavailable,立即暂停后续批次下单;若 tracked 的 remainingUnits 变化,再决定是否追加。对于 undisclosed 类型,即使收到通知,remainingUnits 仍然为 null,新增批次仍须以小额试单结果为依据,不能依据一次通知批量下达。
未订阅通知的账户,无法依赖主动推送,只能缩短查询间隔,每批下单前重新调用商品列表接口,核对 availability 与 inventoryType 是否发生变化,再确定本批数量。若上一单已消耗掉可售空间,本批可用量会相应减少,需要预先准备订单级与商品级两套数量预案。
把库存拆分结果转换成可执行的下单动作
计划拆分完成后,应按下单前复核清单逐项确认,避免因模板或幂等约束导致整批失败。订单开始处理前,若下单模板或数量规则已经变化,平台会在扣款前返回 PURCHASE_SCHEMA_CHANGED,第三方需重新查询 /goods/tpl、更新本地表单,并继续使用原 clientOrderRef 再次提交,且不能更换商品、规格、数量或充值资料,否则会返回 IDEMPOTENCY_CONFLICT。
对于 oneEntryPerUnit 的充值模板,数组长度必须等于 units,不能为了凑批次而省略单个 entry;对于未开启批量的模板,units 必须为 1,应通过多笔订单实现批量,而不是在单笔里改变数量。网络超时时,只允许用原 clientOrderRef 和原下单内容重试,不会重复扣款,也不能换编号再次创建,否则会产生额外订单。
批次拆分的另一个前提是订单可追踪。每批委托单号中应包含商品规格、批次序号和计划数量,这样在回调与对账环节能直接定位到对应的采购批次,而不会把不同批次的发货与结算混在一起。
观察批次是否成立的两个完成信号
调整后的采购批次能否成立,只看两个可验证结果:一是每一批订单都进入 pending 或已完成状态,并在订阅回调中收到卡密就绪或充值结果,而不是长期停留在等待处理或异常中断;二是已下单批次的消耗量与预期接近,且未出现因超出实际库存而需要申请取消的情况。只要这两项出现不一致,就需要缩短下一批次的数量、增大安全余量,并重新确认库存类型与状态来源,而不是继续按原计划下达。
参考资料:查询商品列表(2026-08-31);查询商品详情(2026-08-22);创建订单(2026-08-31);商品变更推送(2026-08-30)。具体操作与适用范围以对应文档为准。