c5game 中文文档 下载 App

C5GAME 订单回调通知服务——让你的系统自动感知交易状态变化

什么是回调通知?

当你通过 C5GAME API 发起一笔交易后,你需要知道这笔交易当前的状态是什么——是还没发货、已经发货了、还是交易完成了。有两种方式获取状态:

方式一:主动查询(Pull)

方式二:回调通知(Push / Webhook)

C5GAME 开放平台提供了完整的回调通知服务,覆盖了订单生命周期的主要状态变更。

回调通知的工作流程

1. 你在 C5GAME 开放平台配置一个回调 URL(你的服务器地址)
2. 通过 API 发起交易
3. 交易生命周期中状态发生变化时:
   - 买家付款成功 → C5GAME 推送通知到你的回调 URL
   - 卖家发货(Steam 报价发出)→ C5GAME 推送通知
   - 买家接受报价 → C5GAME 推送通知
   - 交易完成 → C5GAME 推送通知
   - 订单取消或失败 → C5GAME 推送通知
4. 你的服务器接收 POST 请求,解析 JSON 数据,处理后续逻辑
5. 处理完后返回一个成功响应(HTTP 200)给 C5GAME

回调通知的状态字段详解

C5GAME 回调通知里最关键的是 status 字段,它告诉你订单当前处于什么状态:

status 值含义发生时机
1等待发货买家付款成功后
3等待收货卖家已发 Steam 报价,等待买家在 Steam 接受
5交易完成买家接受 Steam 报价
7等待取消(中间状态)订单正在取消处理中
11订单取消或失败各种取消/失败场景

不同版本的开放平台可能还有更多状态值,以最新文档为准。

回调通知的重试策略

网络不可靠——你的服务器可能临时宕机、网络抖动、或者处理超时。为了保证通知最终送达,C5GAME 采用了指数退避重试机制:

重试时间间隔:1 分钟 → 2 分钟 → 5 分钟 → 10 分钟 → 30 分钟

如果你连续 N 次(通常 5 次)都没有成功接收(返回非 200 状态码或超时),C5GAME 会停止重试。

你的接收端需要做什么?

要正确接收和处理 C5GAME 的回调通知,你的服务器需要:

1. 暴露一个公网可访问的 HTTP POST 端点

2. 正确处理 POST 请求

3. 做签名验证(重要!)

4. 返回正确的响应

5. 做好幂等处理

回调数据结构示例

根据 C5GAME 公开文档,回调通知的数据大致结构如下(简化版):

{
  "status": 3,
  "orderId": "C52025010112345678",
  "actualPay": 14800,
  "sellerInfo": {
    "nickName": "全自动秒出",
    "avatar": "https://c5game.oss-cn...avatar.jpg"
  },
  "offerId": "OFFER_12345",
  "time": 1735776000
}

各字段含义:

接入回调的注意事项

常见问题

Q:为什么我收不到回调? A:按这个顺序排查:①回调 URL 是否公网可达;②服务器防火墙/安全组是否放行了 C5GAME 的请求 IP;③你的处理端是否在 5 秒内返回了 200;④签名是否正确。

Q:同一个状态收到多次回调怎么办? A:这是正常的(重试机制)。你需要在处理逻辑里做幂等——比如用 (orderId, status) 作为联合键,已处理的直接跳过。

Q:回调通知会延迟吗? A:正常情况下 C5GAME 状态变化后几秒内就会推送。但网络波动、C5GAME 服务器繁忙等情况可能导致延迟。超过 1 分钟没收到可以主动查询。