notify_url)。| 配置项 | 说明 |
|---|---|
回调地址(notify_url) | 您用于接收通知的 HTTP/HTTPS 接口地址 |
| 通知开关 | 开启后系统才会推送通知 |
POSTapplication/json2xx 且响应体为 JSON 格式 {"code": 0, "result": "SUCCESS"},两项同时满足才视为接收成功traceId 作为去重依据){
"code": 0,
"result": "SUCCESS"
}| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
code | int | 是 | 状态码,0 表示成功 |
result | string | 是 | 结果标识,必须为 "SUCCESS" |
注意:仅返回 HTTP 2xx 但响应体不符合上述格式时,系统将视为失败并触发重试。
POST {您的notify_url}
Content-Type: application/json
{
"traceId": "NT20260422103000a1b2",
"event": "order_accepted",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1100,
"timestamp": "2026-04-22 10:30:00",
"remark": "商家已接单",
"sign": "a1b2c3d4e5f6..."
}| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
traceId | string | 是 | 通知追踪ID,每次通知唯一,可用于问题排查和日志关联 |
event | string | 是 | 事件类型,标识当前通知的事件,详见 事件列表 |
mcakeOrderNo | string | 是 | MCake 内部订单号 |
orderNo | string | 是 | 您的订单号(即您下单时传入的 orderNo) |
orderStatus | int | 是 | 当前订单状态码,详见 订单状态枚举 |
timestamp | string | 是 | 事件发生时间,格式 YYYY-MM-DD HH:mm:ss |
sign | string | 是 | 签名,用于验证请求真实性,详见 签名验证 |
| 字段 | 类型 | 出现场景 | 说明 |
|---|---|---|---|
remark | string | 全部事件 | 事件描述或备注信息 |
refundAmount | float | 部分退款事件 | 退款金额(单位:元) |
refundReason | string | 部分退款事件 | 退款原因 |
riderName | string | 配送相关事件 | 骑手姓名 |
riderPhone | string | 配送相关事件 | 骑手手机号 |
deliveryVendor | string | 配送相关事件 | 配送平台名称(如"闪送"、"顺丰同城"、"驻店骑手") |
deliveryNo | string | 三方配送事件 | 三方配送单号(驻店骑手无此字段) |
reason | string | 配送异常/失败/取消事件 | 异常或取消原因(仅 delivery_exception、delivery_failed、delivery_cancelled 事件携带,非必有) |
| event | 说明 | 触发时机 |
|---|---|---|
order_accepted | 商家接单 | 门店确认接受订单 |
order_rejected | 商家拒单 | 门店拒绝接受订单 |
order_making | 开始制作 | 门店开始制作商品 |
order_made | 制作完成 | 商品制作完毕,等待配送/自取 |
order_pickup | 顾客自提取餐 | 顾客到店完成自提 |
order_delivered | 配送完成 | 美团推送的配送完成通知 |
order_user_cancel_approved | 同意用户取消 | 商家同意用户的取消申请 |
order_cancel_rejected | 拒绝用户取消 | 商家拒绝用户的取消申请 |
order_merchant_cancelled | 商家主动取消 | 商家主动取消订单 |
order_partial_refund | 部分退款 | 订单发生部分金额退款 |
order_cancelled | 订单取消 | 订单被取消或全额退款 |
| event | 说明 | 触发时机 |
|---|---|---|
rider_accepted | 骑手接单 | 骑手接受配送任务 |
rider_pickup | 骑手取货 | 骑手到店取货完成 |
rider_delivered | 骑手送达 | 骑手完成配送送达 |
delivery_exception | 配送异常 | 配送过程中出现异常 |
delivery_failed | 配送失败 | 配送最终失败(终态) |
delivery_cancelled | 配送取消 | 配送任务被取消 |
说明:配送事件同时覆盖三方配送(闪送、顺丰同城等)和驻店骑手两种模式。当 deliveryVendor为"驻店骑手"时表示驻店骑手配送,此时不含deliveryNo字段。
orderStatus 字段表示当前订单状态,枚举值如下:| orderStatus | 说明 |
|---|---|
0 | 待推单 |
1000 | 待接单 |
1100 | 待制作 |
1125 | 待出餐 |
1150 | 待配送 |
1200 | 配送中 |
1300 | 已送达 |
1500 | 已取消 |
sign 字段,您应验证签名以确保请求来源可信。1. 从请求体中取出所有字段(排除 sign)
2. 按字段名(key)字典序升序排列
3. 拼接为 key=value&key=value 格式
4. 末尾追加 &app_secret={您的app_secret}
5. 对拼接结果做 MD5,取 32 位小写字符串{
"traceId": "NT20260422103000a1b2",
"event": "order_accepted",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1100,
"timestamp": "2026-04-22 10:30:00",
"remark": "商家已接单",
"sign": "a1b2c3d4e5f6..."
}sign,按 key 字典序排列:event=order_accepted
mcakeOrderNo=202604220005036112
orderStatus=1100
orderNo=DIST20260422001
remark=商家已接单
timestamp=2026-04-22 10:30:00
traceId=NT20260422103000a1b2event=order_accepted&mcakeOrderNo=202604220005036112&orderStatus=1100&orderNo=DIST20260422001&remark=商家已接单×tamp=2026-04-22 10:30:00&traceId=NT20260422103000a1b2&app_secret=your_app_secretsign = md5(上述字符串) → 32位小写hexorder_accepted — 商家接单{
"event": "order_accepted",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1100,
"timestamp": "2026-04-22 10:30:00",
"remark": "商家已接单",
"traceId": "NT20260422103000a1b2",
"sign": "a1b2c3d4e5f6..."
}order_rejected — 商家拒单{
"event": "order_rejected",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1150,
"timestamp": "2026-04-22 10:30:00",
"remark": "商家拒绝接单",
"traceId": "NT20260422103000a1b2",
"sign": "a1b2c3d4e5f6..."
}order_making — 开始制作{
"event": "order_making",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1125,
"timestamp": "2026-04-22 10:30:00",
"remark": "商家开始制作",
"traceId": "NT20260422103000a1b2",
"sign": "a1b2c3d4e5f6..."
}order_made — 制作完成{
"event": "order_made",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1150,
"timestamp": "2026-04-22 10:30:00",
"remark": "商家已制作完成",
"traceId": "NT20260422103000a1b2",
"sign": "a1b2c3d4e5f6..."
}order_pickup — 顾客自提取餐{
"event": "order_pickup",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1150,
"timestamp": "2026-04-22 10:30:00",
"remark": "顾客已自提",
"traceId": "NT20260422103000a1b2",
"sign": "a1b2c3d4e5f6..."
}order_delivered — 配送完成{
"event": "order_delivered",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1300,
"timestamp": "2026-04-22 10:30:00",
"remark": "配送完成",
"traceId": "NT20260422103000a1b2",
"sign": "a1b2c3d4e5f6..."
}order_user_cancel_approved — 同意用户取消{
"event": "order_user_cancel_approved",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1800,
"timestamp": "2026-04-22 10:30:00",
"remark": "取消申请已通过",
"traceId": "NT20260422103000a1b2",
"sign": "a1b2c3d4e5f6..."
}order_cancel_rejected — 拒绝用户取消{
"event": "order_cancel_rejected",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1100,
"timestamp": "2026-04-22 10:30:00",
"remark": "取消申请已拒绝",
"traceId": "NT20260422103000a1b2",
"sign": "a1b2c3d4e5f6..."
}order_merchant_cancelled — 商家主动取消{
"event": "order_merchant_cancelled",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1800,
"timestamp": "2026-04-22 10:30:00",
"remark": "商家已取消订单",
"traceId": "NT20260422103000a1b2",
"sign": "a1b2c3d4e5f6..."
}order_partial_refund — 部分退款{
"event": "order_partial_refund",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1100,
"timestamp": "2026-04-22 10:30:00",
"remark": "部分退款",
"refundAmount": 15.00,
"refundReason": "商品缺货",
"traceId": "NT20260422103000a1b2",
"sign": "a1b2c3d4e5f6..."
}order_cancelled — 订单取消/退款{
"event": "order_cancelled",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1800,
"timestamp": "2026-04-22 10:30:00",
"remark": "用户申请退款",
"traceId": "NT20260422103000a1b2",
"sign": "a1b2c3d4e5f6..."
}rider_accepted — 骑手接单{
"event": "rider_accepted",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1200,
"timestamp": "2026-04-22 10:30:00",
"riderName": "张三",
"riderPhone": "13800138000",
"deliveryVendor": "闪送",
"deliveryNo": "SS2026042200001",
"remark": "闪送 - accepted",
"traceId": "NT20260422103000a1b2",
"sign": "a1b2c3d4e5f6..."
}rider_pickup — 骑手取货{
"event": "rider_pickup",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1200,
"timestamp": "2026-04-22 10:30:00",
"riderName": "张三",
"riderPhone": "13800138000",
"deliveryVendor": "闪送",
"deliveryNo": "SS2026042200001",
"remark": "闪送 - delivering",
"traceId": "NT20260422103000a1b2",
"sign": "a1b2c3d4e5f6..."
}rider_delivered — 骑手送达{
"event": "rider_delivered",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1300,
"timestamp": "2026-04-22 10:30:00",
"riderName": "张三",
"riderPhone": "13800138000",
"deliveryVendor": "闪送",
"deliveryNo": "SS2026042200001",
"remark": "闪送 - done",
"traceId": "NT20260422103000a1b2",
"sign": "a1b2c3d4e5f6..."
}delivery_exception — 配送异常{
"event": "delivery_exception",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1200,
"timestamp": "2026-04-22 10:30:00",
"riderName": "张三",
"riderPhone": "13800138000",
"deliveryVendor": "顺丰同城",
"deliveryNo": "SF2026042200001",
"remark": "顺丰同城 - exception",
"reason": "骑手长时间未取货",
"traceId": "NT20260422103000a1b2",
"sign": "a1b2c3d4e5f6..."
}delivery_failed — 配送失败{
"event": "delivery_failed",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1200,
"timestamp": "2026-04-22 10:30:00",
"riderName": "",
"riderPhone": "",
"deliveryVendor": "顺丰同城",
"deliveryNo": "SF2026042200001",
"remark": "顺丰同城 - failed",
"reason": "商家地址无法找到",
"traceId": "NT20260422103000a1b2",
"sign": "a1b2c3d4e5f6..."
}delivery_cancelled — 配送取消{
"event": "delivery_cancelled",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1100,
"timestamp": "2026-04-22 10:30:00",
"riderName": "",
"riderPhone": "",
"deliveryVendor": "闪送",
"deliveryNo": "SS2026042200001",
"remark": "闪送 - cancelled",
"reason": "客户主动取消订单",
"traceId": "NT20260422103000a1b2",
"sign": "a1b2c3d4e5f6..."
}deliveryVendor 固定为 "驻店骑手",且不包含 deliveryNo 字段。rider_accepted — 驻店骑手接单{
"event": "rider_accepted",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1200,
"timestamp": "2026-04-22 10:30:00",
"riderName": "李四",
"riderPhone": "13900139000",
"deliveryVendor": "驻店骑手",
"traceId": "NT20260422103000a1b2",
"sign": "a1b2c3d4e5f6..."
}rider_pickup — 驻店骑手取餐{
"event": "rider_pickup",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1200,
"timestamp": "2026-04-22 10:30:00",
"riderName": "李四",
"riderPhone": "13900139000",
"deliveryVendor": "驻店骑手",
"traceId": "NT20260422103000a1b2",
"sign": "a1b2c3d4e5f6..."
}rider_delivered — 驻店骑手送达{
"event": "rider_delivered",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1300,
"timestamp": "2026-04-22 10:30:00",
"riderName": "李四",
"riderPhone": "13900139000",
"deliveryVendor": "驻店骑手",
"traceId": "NT20260422103000a1b2",
"sign": "a1b2c3d4e5f6..."
}{"code": 0, "result": "SUCCESS"} 格式、或请求超时,系统将自动重试:| 重试次数 | 延迟时间 |
|---|---|
| 第 1 次重试 | 5 秒后 |
| 第 2 次重试 | 30 秒后 |
| 第 3 次重试 | 120 秒后 |
建议:请确保您的回调接口具备高可用性,收到通知后先快速返回 200,再异步处理业务逻辑。
traceId 做去重,同一次通知的所有重试共用同一个 traceId,避免重复处理sign 字段,防止伪造请求traceId,建议在日志中记录,便于问题排查时与 MCake 技术支持协同定位mcakeOrderNo 和 orderNo 有什么区别?mcakeOrderNo 是 MCake 系统内部的订单号,orderNo 是您下单时传入的三方订单号。建议使用 orderNo 与您的系统关联。traceId 有什么用?traceId 是每次通知的唯一标识,同一次通知的所有重试都使用相同的 traceId。当您遇到通知接收异常时,提供 traceId 给 MCake 技术支持可以快速定位问题。orderStatus 代表什么?orderStatus 是订单状态码,用于标识订单的当前状态。curl --location 'https://tinterface.mcake.com/三方提供的通知地址' \
--header 'Content-Type: application/json' \
--data '{
"traceId": "NT20260422103000a1b2",
"event": "order_accepted",
"mcakeOrderNo": "202604220005036112",
"orderNo": "DIST20260422001",
"orderStatus": 1100,
"timestamp": "2026-04-22 10:30:00",
"remark": "商家已接单",
"sign": "a1b2c3d4e5f6..."
}'{
"code": 0,
"result": "SUCCESS"
}