Skip to content

从 v2 迁移到 v3

受众: 维护现有 v2 集成的工程师

v2 和 v3 是独立的端点——v2 保持不变地继续工作,因此你可以按自己的节奏迁移。不存在自动转换:调用方直接发送 v3 契约。

变更概览

方面v2v3
端点/v2/s2s/event/v2/s2s/batch/v3/s2s/event/v3/s2s/batch
认证头X-API-KEYX-API-KEY(不变)
载荷形态扁平对象信封event · timestamp · identity · context
事件字段event_nameevent
timestampUnix Unix 毫秒(13 位数字)
Identity顶层的 client_user_ididentity{}——client_user_id / anonymous_id 之一为最少
归因顶层的 click_ididentity.click_id
事件特定字段顶层context
PII(无)context.privacy.* 下哈希(SHA-256)
事件名称自由字符串已登记的目录事件(型别化并校验)
批量JSON 数组JSON 数组,最多 600
成功200202{ "status": "accepted", ... }
错误纯文本结构化的 code + violations[]400 / 422 / 429

载荷转换

同一个 deposit 事件,转换前后对比:

json
{
  "client_user_id": "user_001",
  "click_id": "clk_998877",
  "event_name": "deposit",
  "timestamp": 1702963200,
  "ip_address": "203.0.113.1",
  "transaction_id": "tx_554433",
  "amount": 50.00,
  "currency": "USD"
}
json
{
  "event": "deposit",
  "timestamp": 1702963200000,
  "identity": {
    "client_user_id": "user_001",
    "click_id": "clk_998877"
  },
  "context": {
    "ip_address": "203.0.113.1",
    "transaction_id": "tx_554433",
    "amount": 50.00,
    "currency": "USD"
  }
}

字段映射

v2(扁平)v3(信封)
event_nameevent
timestamp(秒)timestamp(× 1000 → 毫秒)
client_user_ididentity.client_user_id
click_ididentity.click_id
ip_addresscontext.ip_address
amountcurrencytransaction_idis_crypto、…context.*
(v3 新增)identity.anonymous_idcontext.privacy.email_hash、…

游戏:投注结算

v3 将一笔已结算的投注建模为一个单独的 bet 事件,其中内嵌 bet_resultbet_result_amount——不存在独立的 win / loss 事件。如果你的 v2 集成发送了单独的结算事件,请将它们合并为每张票据一个 bet。参见 iGaming 事件 → bet

切换步骤

  1. 确认你的 X-API-KEY 在 v3 下可用(同一密钥、同一基础 URL)。对于 iGaming 事件,确认你的产品已订阅
  2. 将端点从 /v2/... 切换到 /v3/...
  3. 将载荷重构为信封(event / timestamp / identity / context)。
  4. timestamp 从秒转换为毫秒
  5. 将 PII 移到 context.privacy.*,作为 SHA-256 哈希。
  6. 使用测试模式X-Test-Mode: true)进行校验——修复任何 violations[]
  7. 一次切换一种事件类型;在 v3 验证通过之前保持 v2 运行。

参考