取得單局回放連結
針對玩家已經玩過的某一局,你可以向平台請求一個連結,打開後會回放那一局的過程——reels 轉動、餘額更新,和玩家當時看到的視覺順序一致。適合用於客服支援(「讓我看看這筆下注實際發生了什麼」)或爭議處理。
運作原理
平台本身從未看到一局的視覺結果——它只看到廠商透過錢包 API 提交的資金異動(BET/WIN/ROLLBACK)。錄製與渲染一局的回放畫面,完全是廠商自己的責任。這個介面的職責比較窄:驗證這一局確實屬於你,然後把連結交給你,連結指向廠商自己的回放頁面。
你(已簽名) 平台 廠商的遊戲伺服器
────────────── ──────── ───────────────────────
POST /v1/operator/rounds/replay
{ roundId, gameId } ──▶ 檢查這一局是否屬於你
且屬於這個遊戲
鑄造一個短時效 token
◀── { replayUrl }
在瀏覽器開啟 replayUrl ──────────────────────────────────────▶ 解析 token,
查詢自己針對
這一局的
錄製資料,
渲染回放頁面正因如此,回放功能是按遊戲選配(opt-in)的——請檢查 GameSummary.replayBaseUrl(見獲取遊戲目錄):如果是空值,代表這個遊戲的廠商還沒有實作錄製功能,這個介面會回傳 400。只有廠商加入錄製功能之後發生的局才能回放——沒有辦法回溯錄製功能開啟之前發生的局,因為重建畫面所需的資料從一開始就沒有被擷取。
簽名並呼叫介面
ts
const path = '/v1/operator/rounds/replay'
const body = JSON.stringify({
roundId, // 你自己記錄的這一局交易所使用的 roundId
gameId,
})
const headers = signRequest('POST', path, operatorSecret, body, operatorId)
const res = await fetch(`${platformUrl}${path}`, {
method: 'POST',
headers: { ...headers, 'Content-Type': 'application/json' },
body,
})
if (!res.ok) {
// 400(不支援/缺少參數)、404(不是你的局)、401/429 —— 見運營商 API 參考
throw new Error(`replay request failed: ${res.status} ${await res.text()}`)
}
const { replayUrl } = await res.json()
// 直接開啟 replayUrl(例如在你的後台工具裡 window.open(replayUrl)),
// 或是把它傳給需要審核這一局的人。精確的請求/回應結構與錯誤情況,見運營商 API 參考。
連結會過期
replayUrl 內嵌一個短時效 token(預設 15 分鐘)——每次需要時重新請求一個新連結,不要把 replayUrl 本身存起來留待之後使用。你自己交易記錄裡本來就有的 roundId 才是該保留的東西;連結則是即時生成的。