POST Webhook URL
鉴权:Webhook 签名
调用方:小鹅
功能描述
小鹅把这笔订单当前的物流 POST 到接入配置里的 Webhook URL。签名密钥是 Webhook 签名密钥,对原始 JSON 做 HMAC-SHA256,十六进制放在 X-Channel-Webhook-Signature。没有时间戳,也没有 nonce。密钥留空时不带这个头。logistics 与物流拉取的 data 相同。
请求体
Object object
| 属性 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
event | string | 是 | 固定为 logistics.updated。 | |
logistics | Object | 是 | 与物流拉取的 data 相同。 |
Object logistics
| 属性 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
order_no | string | 是 | 小鹅订单号。 | |
partner_order_no | string | 否 | 接入方订单号。 | |
shipments | Array.<Object> | 是 | 运单列表,字段与物流拉取的 shipments 相同。 |
业务方响应
返回 HTTP 2xx 表示已收到。其他状态码会记为推送失败。响应该在 8 秒内返回。
示例代码
curlbash
# WEBHOOK_SECRET 填接入配置里的 Webhook 签名密钥
# signature = hex(hmac_sha256(WEBHOOK_SECRET, 原始 JSON))
curl --request POST 'https://your.site/channel/webhook' \
--header 'Content-Type: application/json' \
--header 'X-Channel-Webhook-Signature: $signature' \
--data-raw '{
"event": "logistics.updated",
"logistics": {
"order_no": "YD202601010001",
"partner_order_no": "P202601010001",
"shipments": [
{
"tracking_no": "YT1234567890",
"express_company": "圆通",
"express_code": "YTO",
"shipment_status": "shipped",
"shipped_at": "2026-01-02T10:00:00+08:00",
"events": [
{
"time": "2026-01-02T10:00:00+08:00",
"status": "已揽收",
"desc": "网点已揽收"
}
]
}
]
}
}'