上線檢查清單
在服務第一個真實資金玩家 session 之前,過一遍這份簡短的檢查清單。每一項都連結回它在文件裡被完整解釋的地方。
憑證與密鑰
- [ ] 你的運營商租戶 ID 和 HMAC 金鑰只存放在伺服端——絕不出現在瀏覽器打包產物、行動應用程式,或任何客戶端可見的設定裡。見簽名與身份驗證。
- [ ] 金鑰是從密鑰管理服務或環境變數讀取的,沒有提交進原始碼版本控制。
時鐘與網路
- [ ] 簽名你發出的呼叫(並驗證收到的錢包回調)的那台伺服器,時鐘已透過 NTP 同步。時鐘偏差是造成莫名其妙的
401最常見的原因——見環境與基礎網址:時鐘同步。 - [ ] 你連的是你真正打算上線的那個環境對應的平台
baseUrl,而不是預備環境——見環境與基礎網址。
已在平台完成註冊
- [ ] 你的錢包回調基礎網址已經透過租戶的自助入口網站註冊,而且在你儲存它之前,該網址已經對應到一個實際在運行的實作——見註冊你的錢包回調 URL。
- [ ] 如果你的錢包回應時間通常接近或超過 5000ms,你已經向平台管理團隊提出調高回調逾時時間的請求,而不是等到正式環境裡出現
TIMED_OUT才發現問題。
錢包回調實作
- [ ]
POST /v1/wallet/transaction和GET /v1/wallet/balance在信任請求之前都會驗證平台的簽名(完整 URI,不只是路徑)——見簽名與身份驗證:校驗平台的簽名(錢包回調)。 - [ ] 用同一個
transactionId重複呼叫時,會回傳一模一樣的快取回應,而不是重新套用一次餘額變動——見冪等性。這是整個整合裡最舉足輕重的一項屬性。 - [ ]
DECLINED只會在BET上出現——WIN、ROLLBACK和ADJUSTMENT要嘛以OK成功,要嘛讓這次 HTTP 呼叫直接失敗。 - [ ]
GET /v1/wallet/balance夠快、夠可靠——它會被遊戲廠商透過平台即時呼叫,而不只是一個背景檢查。 - [ ] 你已經至少跑過一次
ROLLBACK,而不只是BET/WIN——這是最容易被一次順利的 demo 忽略掉的路徑。
啟動整合
- [ ] 在呼叫啟動之前,
currency(以及如果有用到的language)已經對照目標遊戲的GameSummary做過驗證,這樣不匹配時會在你自己這一側就快速失敗,而不是以一個含糊的400冒出來。 - [ ] 你已經處理了
403風控回應——見POST /v1/operator/games/launch——並顯示給玩家看的訊息,而不只是一個通用錯誤。 - [ ] 你對
429的處理遵循Retry-After標頭,而不是立即重試——見錯誤與重試。
Shell 端橋接
- [ ] 你的
postMessage監聽器在信任一則訊息之前,會驗證event.origin、event.source和 envelope 標記——見 Shell 端橋接。 - [ ]
SESSION_REVOKED和EXIT_GAME的處理方式不同——玩家在遊戲進行中被踢出(無論是你踢的,還是風控踢的)時,會看到明確的提示,而不是被悄悄地送回你的大廳。
在你的第一個真實 session 之前
- [ ] 你已經針對平台的預備環境(如果有的話)完整跑過一次端到端的
REAL模式 session——簽名一次啟動、嵌入、下注、確認你的錢包結算了它、確認BET_END裡的餘額和你的帳本一致。見測試:上線前先跑一次真實的端到端流程。