主动通知回调(出号 / 物流)
在 buy 时传入 notify_url、notify_secret。上游出号或物流更新后,向该地址 POST JSON。
签名算法
sign = md5(notify_secret + ts + event_id + sign_key)
ts:Unix 秒;接收方建议校验时差 ≤ 600 秒- 出号事件
waybill.issued:sign_key = order_sn - 物流事件
trace.updated:优先order_sn,若无则用kuaidi_sn
公共字段
| 字段 | 说明 |
|---|---|
| event | waybill.issued / trace.updated |
| event_id | 事件唯一 ID,用于幂等 |
| ts | 时间戳 |
| sign | 签名 |
| data | 业务数据对象 |
waybill.issued(出号)
data 通常含 order_sn、kuaidi_sn 等。收到后应回写贵站运单号。
trace.updated(物流)
data 必含 kuaidi_sn;可选 traces / last_node_text / records 等。物流关联主键为运单号。
接收方要求
- 返回 HTTP 2xx,建议 JSON 含
code=0 - 相同
event_id必须幂等,避免重复入账/重复改状态 - 同程序站点也可使用自身
/api/lipin/notify作为中转接收地址(按部署情况)
回调报文示例
waybill.issued(出号)
{
"event": "waybill.issued",
"event_id": "waybill.issued_PARTNER001_1730000000",
"ts": "1730000000",
"sign": "按算法计算的md5",
"data": {
"order_sn": "PARTNER001",
"shop_order": "372xxxxxxxxxxxx",
"kuaidi_sn": "SF1234567890"
}
}
# sign = md5(notify_secret + ts + event_id + order_sn)
trace.updated(物流)
{
"event": "trace.updated",
"event_id": "trace.updated_SF1234567890_1730000100_1",
"ts": "1730000100",
"sign": "按算法计算的md5",
"data": {
"order_sn": "PARTNER001",
"kuaidi_sn": "SF1234567890",
"last_node_text": "快件已发往下一站",
"traces": [
{ "time": "2026-09-15 10:00:00", "desc": "已揽收" }
]
}
}
# sign_key 优先 order_sn,否则 kuaidi_sn
接收方响应建议
{ "code": 0, "msg": "ok" }