快速開始
照著這一頁做,大約 30 分鐘就能用沙箱完成第一個簽章呼叫、讓測試玩家進入遊戲、轉入測試幣並讀回注單。沙箱使用測試幣與模擬器桌,不會產生任何費用。
你需要
- 一台能發出 HTTPS 請求的伺服器(或本機電腦)。API 只能由伺服器呼叫,Secret 絕不可以放在瀏覽器或 App。
- 一個收得到信的 Email(Console 密碼會寄到這裡)。
1. 註冊
開啟 /signup,填寫:
| 欄位 | 說明 |
|---|---|
| 公司名稱 | 顯示在 Console 與帳單上 |
| 公司代碼 | 3–16 個英數字,自動轉成大寫,例如 ACME;註冊後不能更改 |
| Console 的登入帳號,也是帳單聯絡人 | |
| 時區 | 報表與每日彙總(GET /bets/summary)的日期依這個時區計算 |
| 幣別 | 玩家的預設幣別:USD、TWD、CNY、HKD、THB、VND、PHP、MYR、JPY、KRW |
送出後系統會自動開通,並把 Console 密碼寄到你的 Email(72 小時內有效)。第一次登入 /Console/ 就完成 Email 驗證;72 小時內都沒有登入的註冊會自動停用。
開通時會一併建立:
- 正式租戶(公司代碼
ACME):免費展示方案,附註冊贈送的預付額度。 - 沙箱租戶(公司代碼
ACME-SBX):測試幣、已啟用所有模擬器桌(S01、S02百家樂,S03龍虎,N01牛牛),模擬器桌 24 小時自動開局。可建立 500 個測試玩家,API 每秒 20 次(見限流與配額)。 - 兩把 API 金鑰:沙箱金鑰(
ek_s_…)與正式金鑰(ek_l_…)。
2. 取得沙箱金鑰
- 登入 Console,開啟 上線與串接 → API 金鑰。
- 找到「環境:沙箱」的那一列,金鑰 ID 形如
ek_s_1a_XXXXXXXXXXXXXXXX。 - 按「顯示」或「複製」取得 Secret(形如
es_加 40 個英數字)。顯示金鑰前需要先驗證雙因子(TOTP):在 我的帳號 → 雙因子驗證(TOTP) 綁定一次,之後 30 分鐘內可以連續顯示與複製。- 也可以按「新增金鑰 → 沙箱」建立一把新的沙箱金鑰,建立當下會直接顯示 Secret。
- 把金鑰 ID 與 Secret 設成伺服器的環境變數,例如
ELITE_KEY_ID、ELITE_SECRET。
保管 Secret
Secret 只能放在伺服器端(環境變數或祕密管理服務),不要寫進程式碼庫、前端或 App。外洩時請在 Console「輪替」(舊金鑰 24 小時後失效)或「停用」(立即失效)。
3. 第一個簽章呼叫
所有 API 都在 https://elite.ewin888.com/api/tenant/v1。沙箱金鑰與正式金鑰使用同一個主機,系統依金鑰 ID 判斷是哪個租戶。
每個請求都帶四個標頭,簽章規則是:
X-Signature = hex( HMAC-SHA256( secret,
METHOD + "\n" + PATH_AND_QUERY + "\n" + X-Timestamp + "\n" + X-Nonce + "\n" + hex(SHA-256(body)) ) )先用 GET /tables 試一次(GET 沒有本文,本文雜湊固定是空字串的 SHA-256)。
KEY_ID="$ELITE_KEY_ID"; SECRET="$ELITE_SECRET"
BASE='https://elite.ewin888.com'
PATH_AND_QUERY='/api/tenant/v1/tables'
TS=$(date +%s)
NONCE=$(openssl rand -hex 16)
BODY_HASH=$(printf '' | openssl dgst -sha256 -hex | sed 's/^.* //')
SIG=$(printf 'GET\n%s\n%s\n%s\n%s' "$PATH_AND_QUERY" "$TS" "$NONCE" "$BODY_HASH" \
| openssl dgst -sha256 -hmac "$SECRET" -hex | sed 's/^.* //')
curl -sS "$BASE$PATH_AND_QUERY" \
-H "X-Api-Key: $KEY_ID" -H "X-Timestamp: $TS" -H "X-Nonce: $NONCE" -H "X-Signature: $SIG"// 使用〈認證與簽章〉的 sign.js(call 會自動簽章)
import { call } from './sign.js';
const auth = { keyId: process.env.ELITE_KEY_ID, secret: process.env.ELITE_SECRET };
const { tables } = await call('GET', '/api/tenant/v1/tables', undefined, auth);
console.log(tables.map((t) => `${t.tableId} ${t.game} enabled=${t.enabled}`));成功時回應 {"ok": true, "data": {"tables": [...]}},沙箱的 S01、S02、S03、N01 都是 "enabled": true。收到 UNAUTHORIZED 時,把同樣的輸入貼到簽章除錯器逐行比對;常見原因見認證與簽章。
4. 讓測試玩家進入遊戲
呼叫 POST /player/launch。玩家不存在時會自動建立,不需要另外註冊:
{ "username": "test001", "lang": "CHT", "device": "pc" }回應:
{ "ok": true, "data": { "url": "https://elite.ewin888.com/Launch?t=…", "expiresIn": 60 } }在 60 秒內用瀏覽器開啟 url(只能使用一次),就會進入遊戲大廳,看得到模擬器桌。正式串接時,由你的網站在玩家按下「進入遊戲」時呼叫 launch,再把玩家導向(或以 iframe 開啟)這個網址,詳見遊戲啟動。
5. 轉入測試幣、下注
新玩家餘額是 0。用 POST /wallet/deposit 轉入測試幣,currency 填你註冊時選的幣別:
{ "username": "test001", "txnId": "qs-0001", "amount": "1000", "currency": "TWD" }txnId 是你的轉帳單號,也是冪等鍵:同一個 txnId 重送不會重複入帳(回應的 duplicate 為 true)。回到遊戲(需要時重新 launch)就能在模擬器桌下注。轉帳的完整規則見錢包(轉帳)。
6. 讀回注單
每局結算後,注單可以用 GET /bets 讀回:
GET /api/tenant/v1/bets?limit=100把回應的 nextCursor 存起來,下一次呼叫帶 ?cursor=<nextCursor> 就會從上次的位置繼續。完整的同步迴圈、版次(rev)與作廢處理見注單同步。
7. 上線檢核清單
Console 的 上線與串接 → 上線檢核清單 會以你的沙箱金鑰實際呼叫五個端點,確認沙箱租戶、金鑰與權限都正常:
| 項目 | 端點 |
|---|---|
| 簽章呼叫 | GET /tables |
| 啟動遊戲 | POST /player/launch |
| 轉入 | POST /wallet/deposit |
| 轉出 | POST /wallet/withdraw |
| 注單同步 | GET /bets |
按「立即重新檢查」,全部通過會顯示「可上線」。