Skip to content

快速开始 ​

照着这一页做,大约 30 分钟就能用沙箱完成第一个签名调用、让测试玩家进入游戏、转入测试币并读回注单。沙箱使用测试币与模拟器桌,不会产生任何费用。

你需要

  • 一台能发出 HTTPS 请求的服务器(或本机电脑)。API 只能由服务器调用,Secret 绝不可以放在浏览器或 App。
  • 一个收得到信的 Email(Console 密码会寄到这里)。

1. 注册 ​

打开 /signup,填写:

字段说明
公司名称显示在 Console 与账单上
公司代码3–16 个字母或数字,自动转成大写,例如 ACME;注册后不能更改
EmailConsole 的登录账号,也是账单联系人
时区报表与每日汇总(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. 取得沙箱密钥 ​

  1. 登录 Console,打开 上线与对接 → API 密钥。
  2. 找到「环境:沙箱」的那一列,密钥 ID 形如 ek_s_1a_XXXXXXXXXXXXXXXX。
  3. 按「显示」或「拷贝」取得 Secret(形如 es_ 加 40 个字母或数字)。显示密钥前需要先验证双因子(TOTP):在 我的账号 → 双因子验证(TOTP) 绑定一次,之后 30 分钟内可以连续显示与拷贝。
    • 也可以按「添加密钥 → 沙箱」创建一把新的沙箱密钥,创建当下会直接显示 Secret。
  4. 把密钥 ID 与 Secret 设成服务器的环境变量,例如 ELITE_KEY_ID、ELITE_SECRET。

保管 Secret

Secret 只能放在服务器端(环境变量或秘密管理服务),不要写进代码库、前端或 App。外泄时请在 Console「轮替」(旧密钥 24 小时后失效)或「禁用」(立即失效)。

3. 第一个签名调用 ​

所有 API 都在 https://elite.ewin888.com/api/tenant/v1。沙箱密钥与正式密钥使用同一个主机,系统依密钥 ID 判断是哪个租户。

每个请求都带四个头部,签名规则是:

text
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)。

bash
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"
js
// 使用〈认证与签名〉的 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。玩家不存在时会自动创建,不需要另外注册:

json
{ "username": "test001", "lang": "CHT", "device": "pc" }

响应:

json
{ "ok": true, "data": { "url": "https://elite.ewin888.com/Launch?t=…", "expiresIn": 60 } }

在 60 秒内用浏览器打开 url(只能使用一次),就会进入游戏大厅,看得到模拟器桌。正式对接时,由你的网站在玩家按下「进入游戏」时调用 launch,再把玩家导向(或以 iframe 打开)这个网址,详见游戏启动。

5. 转入测试币、下注 ​

新玩家余额是 0。用 POST /wallet/deposit 转入测试币,currency 填你注册时选的币种:

json
{ "username": "test001", "txnId": "qs-0001", "amount": "1000", "currency": "TWD" }

txnId 是你的转账单号,也是幂等键:同一个 txnId 重送不会重复入账(响应的 duplicate 为 true)。回到游戏(需要时重新 launch)就能在模拟器桌下注。转账的完整规则见钱包(转账)。

6. 读回注单 ​

每局结算后,注单可以用 GET /bets 读回:

text
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

按「立即重新检查」,全部通过会显示「可上线」。

8. 切换到正式环境 ​

  • 你的系统已完成:launch、转入与转出(含超时重送同一个 txnId)、注单游标同步(以 (slipId, rev) 去重)。
  • 把密钥换成正式密钥(ek_l_…),主机不变。
  • 在 上线与对接 → IP 白名单与 Webhook 设置服务器的对外 IP(建议)。
  • 在 桌台 → 桌台选择 选好要开放给玩家的桌(免费方案最多 2 桌)。
  • 在 品牌与登录 设置语言与「返回大厅网址」。
  • 正式营运前到 方案与账单 充值并升级付费方案,免费展示方案的限制见限流与配额与计费说明。
  • (付费方案)需要实时通知时设置 Webhook。

elite 租户集成 API v1