快速开始
照着这一页做,大约 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 |
按「立即重新检查」,全部通过会显示「可上线」。