开发实战

场馆SaaS怎么接美团运动场馆预订直连, 必接消息与退款审核, 无限聚核

核销服务由无限聚核提供,美团、抖音团购核销一站式接入。

目录(8 节)
  1. 一、先分清:预订直连要接哪些消息
  2. 二、商品发布:创建/提交成功 ≠ 可订
  3. 三、5810033 库存:同一次回调答完
  4. 四、5810017 开始预订:204 确认 ≠ 接单
  5. 五、5810013 退款审核 ≠ 5810001 取消预订
  6. 六、reply_recorded、completed、unknown
  7. 七、联调最小闭环
  8. 常见问题

预订直连是什么: 商户系统把场馆时段库存接到美团后,用户在美团店页「预订」里直接选日期/场地/时段下单支付,不必另找团购券核销才能订场。团购仍可同页并存;订场走预订直连消息与答复,不走验券核销。

商户接上后,用户怎么看到: 店页出现「预订」能力与日期/起价;点进选场次后是场地×时段网格,已订灰显、可订显示价格,再提交订单支付。下图为京体运动中心望京南湖羽毛球馆在美团 C 端的真实界面(截图日期约 2026-11-01)。

美团店页预订 Tab:场馆预订羽毛球、日期条与起价,下方仍有团购区
美团店页「预订」Tab(京体运动中心望京南湖羽毛球馆):场馆预订(羽毛球)展示日期与起价;同页下方仍有团购区。
选场次弹层:日期与1至4号场时段网格,已订与可订价,底部提交订单
选场次弹层:按日期展开 1~4 号场与各时段;已订灰显、可订显示价格,选好后点「提交订单」。

开发者要接的不是概念,是这三类 Webhook 模式:

mode 回调里做什么 要不要另调答复 API
query/command 同一次 HTTP 响应返回业务 JSON(成功 code=0) 否;禁止先 204 再补答
decision 先可靠保存,回 HTTP 204(只表示收到) 是:再调答复预订结果/答复退款审核
notification 可靠保存,回 HTTP 2xx(建议 204) 否

无限聚核在中间做鉴权、门店归属、验签转发与答复投递;接单/拒单/库存数字/同意退款仍由场馆系统决定。查阅日期 2026-11-03,字段与枚举以当期公开体育馆 API 为准。

三栏示意:订场路径、必接消息、规则退与非规则退
总览示意(2026-11-03)。下文四张时序图与公开体育馆文档站流程一致:商品发布、5810033 库存、5810017 接单、5810013 退款审核。

一、先分清:预订直连要接哪些消息

团购验券、商品上下架、订场接单是三套能力。本文内核是预订直连 Webhook + 答复 API。商品直连只作为接订场前的前置(没有可订商品/规则,C 端无场可卖);团购核销另文。

msgType 名称 mode 回调 HTTP 另调答复?
5810033 多商品库存批量查询 query 200 + code/data 库存数组 否
5810001 取消预订 command 200 + 业务结果 否(同步出结果)
5810023 核销状态查询 query 200 + 核销状态 否
5810017 开始预订 decision 保存后 204 是:答复预订结果
5810013 取消预订审核 decision 保存后 204 是:答复退款审核
5910003 商品流程状态变更 notification 204 否
5910049 商品上下架状态变更 notification 204 否
5810003 预订结果同步 notification 204 否
5810005 用户撤销退款通知 notification 204 否
5810031 预订核销同步 notification 204 否

只会收到已开通并订阅的事件。同步 query/command 有连接超时预算(公开说明约 3 秒总预算,以消息里 data.deadlineAt 为准);这是技术超时,不是订单业务期限。decision 不提供本地 deadlineAt,也不要把最终接单/同意退款写在回调响应体里冒充答复。

同步响应体协议(必须遵守): 最外层只允许 code、message、data;code 为整数,成功为 0。不要塞 success、msg、traceId 等字段,不要套统一 Result,不要对 query/command 回空 204。HTTP 200 只表示网络层有响应,字段不合规仍会被拒绝。

二、商品发布:创建/提交成功 ≠ 可订

订场前通常要先有商品与预订规则。流程是:创建商品 → 提交商品 → 等平台流程/上下架通知。接口成功只表示请求被受理,不等于审核通过或已上架可售。

商品发布与状态通知时序:开发者经无限聚核创建提交商品,美团回 productId,再经 5910003/5910049 Webhook 通知
文档站「商品发布与状态通知」流程:5910003/5910049 为 notification,保存后 HTTP 204 即可;上架状态以通知与查询为准,不要用创建接口回包当可售。

三、5810033 库存:同一次回调答完

5810033 是 query。美团查库存 → 无限聚核打签名 Webhook → 你查本地日期/时段库存 → 在当前 HTTP 响应返回 code=0 与 data 数组 → 网关转成美团原生同步响应。

不能:先 204/空 body,再另开接口补库存;不能套异步 /reply。连接超时或协议不合规时,C 端常见后果是时段显示无库存或不可订。

5810033 库存查询时序:同一次 HTTP 回调返回 code=0 与 data 数组
文档站「库存查询:在同一次回调内应答」。同步 query 以 data.deadlineAt 为技术截止;超时不要伪造库存。

落地要点:

  1. 按消息里的商品/日期/时段查可售量,与本地锁场一致;
  2. 严格 code/message/data 三字段;
  3. 商家页打开时的库存可被平台侧缓存,提交订单还会再查——两边都要答得对、答得快;
  4. 「场馆实时库存」类主动查询 API 用于校准,不能代替 5810033 回调。

四、5810017 开始预订:204 确认 ≠ 接单

5810017 是 decision。正确两步:

  1. 验签 → 持久化 → HTTP 204(只确认收到);
  2. 本地判断能否接单后,另调 答复预订结果(请求带 platform、shopId、requestId,biz.orderId 取自消息 payload)。

requestId/shopId/orderId 必须来自该条已验签消息,禁止串单。

美团业务枚举(由平台判定):接单 biz.bookStatus=2 且 biz.code=200;拒单 biz.bookStatus=3 且 biz.code 为 40001~40007。可选 appOrderId 作你侧单号。

payload 关键字段常见:orderId、appProductId、begintime、endtime、quantity(原生小写 begintime/endtime,与部分通知里的 beginTime/endTime 不同,不要自行改名)。

5810017 预订接单时序:先 HTTP 2xx 确认,再答复预订结果,reply_recorded 后查提交状态
文档站「预订接单:接收确认与业务答复分开」。不要把接单/拒单只写在回调 HTTP 正文里。

五、5810013 退款审核 ≠ 5810001 取消预订

两条容易混:

消息 mode 你怎么答
5810001 取消预订 command 同一次 HTTP 200 返回实际处理结果
5810013 取消预订审核 decision 先 204,再另调 答复退款审核

非规则退走 5810013:payload 常见 orderId,可能含 reason、type、isTieredRefund 等。答复里 biz.auditResult=2 通过、3 未通过(枚举交美团判定)。requestId/shopId/biz.orderId 必须来自对应审核消息。

规则退按已同步的预订规则自动处理;非规则退要你审。审核超时未答复时,平台侧默认拒绝退款。提交审核答复成功 ≠ 用户已到账。

5810013 退款审核时序:先确认接收,再答复退款审核;提交答复不等于退款到账
文档站「退款审核:另调审核答复接口」。退前按必接要求处理核销状态查询(5810023);已核销单不要按未履约退。

六、reply_recorded、completed、unknown

业务答复接口成功时,常见 data.status=reply_recorded:只表示消息中心已保存本次答复,并会为该次答复建提交任务。

接着用 查询消息处理状态(按同一 requestId)看最近一次 submission:

状态 含义 你该做什么
reply_recorded 答复已落消息中心 可查 submission;不要当成用户已预订成功
completed 最近一次答复已成功提交美团 仍不等于历史每次都完成,也不等于订单终态
unknown 最近一次调用结果未知 不要自动换幂等键重试;先核实平台结果再决定

写接口(创建商品、答复类等)出现 data.outcome=unknown 时,服务端不会自动重试;重复提交可能造成重复业务操作。接单/退审同样:204 或 reply_recorded 都不是 C 端「预订成功/退款成功」的充分条件,以查单与平台订单为准。

直连写接口(创建/更新/提交商品、同步规则、商家取消、到店核销等)公开说明不按 Idempotency-Key 复用结果;decision 答复靠正确的 requestId 关联消息,而不是靠你方随意换键硬刷。

七、联调最小闭环

步骤 通过标准
订阅 5810033/5810017/5810013 等必接已开;验签通过
商品 创建→提交→能收到 5910003/5910049;可售以通知/查询为准
库存 5810033 同回调 code=0+数组;故意超时能复现无库存
接单 5810017 → 204 → 答复 bookStatus 2/3 → 查到 completed
退审 5810013 → 204 → 答复 auditResult 2/3;与 5810001 分路
未知态 模拟 unknown后不换键重放;有查单路径
身份 shopId/授权按门店隔离,禁止串店

场馆 SaaS/收银只需把上述状态机嵌进本场地订单:库存与锁场、接单队列、审核超时告警。团购准备/核销/撤销仍走团购接口族,不要抄进预订 Webhook。

常见问题

5810033 能不能先回 204,再异步把库存推上去?

不能。5810033 是同步 query,库存必须出现在当次回调的 HTTP 200 业务 JSON 里。先 204 再补答会被当成失败;超时后 C 端常表现为无库存。

5810017 回调里直接返回 bookStatus 算接单成功吗?

不算。decision 回调只需持久化后 HTTP 204;接单/拒单必须另调答复预订结果。只写在回调正文里的业务 JSON 不能代替答复接口。

reply_recorded 是不是表示预订已经成功?

不是。它只表示答复已写入消息中心。要用查询消息处理状态看最近一次是否 completed(已提交美团),再结合订单查询看用户侧是否已预订成功。

5810013 和 5810001 有什么区别?

5810001 取消预订是 command,同步在当次响应返回处理结果。5810013 取消预订审核是 decision,先 204,再调答复退款审核。非规则退走后者;不要混用两条链路。

outcome 或提交状态为 unknown 时要不要自动重试?

不要自动换键重试。unknown 表示结果未知,不等于失败,服务端不会替你重放。先查平台/消息状态,确认未生效再按规范补答,避免重复接单或重复审核提交。

商品创建接口 success 了为什么 C 端还是订不了?

创建/提交成功不等于审核通过或上架。要等 5910003/5910049(或查询商品)确认可售,并且 5810033 能返回有效库存、5810017 能完成接单答复。

文中消息号、mode、应答字段与时序摘自无限聚核公开体育馆 API 说明(与文档站流程图一致),美团侧 bookStatus/auditResult 等业务枚举以平台判定为准,查阅日期 2026-11-03。

免费接入 · 按次计费

把美团、抖音团购核销接进你的业务

无限聚核提供美团、抖音、大众点评团购核销 API:不收接入费、无需保证金,核销成功才计费。

技术支持无限聚核白水客户经理联系名片及微信二维码