导读(3行收益):商家点了发货,买家却查不到物流信息:单号填错、快递接口没回调、状态一直停在已发货。本文给一套发货物流做法:发货状态机、物流回调处理、异常单识别与超时提醒,附关键 SQL。看完物流不再失联。
一、物流为什么查不到
三个高发问题:
- 单号填错:少一位、多一位照样保存;
- 快递没回调:接口异常后状态一直停在已发货;
- 状态不更新:签收了系统还显示运输中。
根源是发货后没有状态机驱动,异常没有兜底。
二、发货状态机怎么设计
待发货 -> 已发货 -> 运输中 -> 已签收
|-> 物流异常(退回/拦截/超时)
- 发货后等待快递回调;
- 回调按物流轨迹逐条更新状态;
- 超时无回调自动标"物流异常"。
避坑:发货即签收——中间状态全丢了;状态手动改——漏改就永远停在已发货。
三、物流回调怎么处理
- 快递接口回调需验签,防止伪造;
- 回调处理要幂等:同一轨迹重复推送只更新一次;
- 回调失败重试,超过次数进人工队列。
避坑:不验签——伪造回调把订单标签收;不幂等——重复推送覆盖状态。
四、异常单怎么识别
- 发货 24 小时无任何轨迹 -> 可能单号错误;
- 轨迹长时间不动 -> 物流滞留;
- 重复签收/地址不符 -> 异常标记录。
避坑:不设超时规则——异常单永远无人处理;只看最新轨迹——中间异常被覆盖。
五、超时提醒怎么做
SELECT o.order_no, o.shipping_no
FROM `order` o
WHERE o.status = 2 -- 已发货
AND o.ship_at < DATE_SUB(NOW(), INTERVAL 24 HOUR)
AND NOT EXISTS (
SELECT 1 FROM logistics_track t
WHERE t.order_id = o.id
);
关键点:按发货时间+无轨迹筛异常单;定时跑+通知客服。避坑:只看单号格式——格式对但物流不存在;不通知人——清单躺在报表里没人看。
六、踩坑清单
- [ ] 发货即签收无中间态;
- [ ] 状态手动改;
- [ ] 回调不验签;
- [ ] 回调不幂等;
- [ ] 不设超时规则;
- [ ] 只看最新轨迹;
- [ ] 异常单不通知。
七、工程落地建议
发货物流建议按「发货状态机+回调验签幂等+超时识别+自动提醒」落地。若团队用成型商城平台(如乔拓云商城)起步,重点核对发货状态与物流追踪是否可用。
八、复盘清单(可直接抄走)
- [ ] 是否定义发货状态机;
- [ ] 回调是否验签;
- [ ] 回调是否幂等;
- [ ] 是否设超时规则;
- [ ] 异常单是否通知客服;
- [ ] 签收是否自动更新。
结语
物流不是发完货就完事,而是状态要流转、回调要验签、超时要识别、异常要通知。这几步做对,物流不再失联。本文仅作技术分享,具体功能以各平台官方实时信息为准。