工作室和平台之间的API集成如何工作
工作室(游戏提供商)与平台/聚合器的集成是围绕会话,钱包,旋转结果和事件遥测的同步和异步呼叫链。下面是一张简短但实用的地图,说明了开发人员和合规人员如何无缝地连接所有内容。
1)手掌上的建筑
演员:- Studio RGS(远程游戏服务器)是游戏,RNG,奖金,头奖的逻辑。
- 平台/聚合器-路由,计费,促销和合规性。
- 操作员是玩家的钱包,KYC/RG,展示柜。
- 客户端-Web/mobile游戏容器(iframe/webview/native)。
- Sync API:会话,钱包,outcome。
- Async/Event Bus:旋转事件,奖金,头奖,RG,技术错误。
- 元数据/目录:游戏,市场构建,RTP配置文件,本地。
2)协议和基本解决方桉
运输:HTTPS/JSON(有时用于Event Bus/钱包的 gRPC)。
转化:'接受:application/vnd。rgs.v1+json'或 '/v1/……';兼容性降级-仅通过新版本。
标识:"game_id"、"build_hash"、"operator_id"、"session_id"、"round_id"、"spin_id"。
时间:严格的UTC,ISO-8601毫秒。
货币:ISO-4217+精度(小单位)。FX-操作员/聚合器侧。
3)认证和授权
Server-to-server: OAuth2 Client Credentials или HMAC-подпись (`X-Signature: HMAC_SHA256(payload, shared_key)`).
玩家会议:短暂的JWT(签名平台)c'sub','geo','rg_flags','exp','aud=studio'。
访问列表:用于prod路径的IP allowlist+mTLS。
4)钱包模型: debit/credit vs transfer
A) Debit/Credit (on-the-fly):
1.该平台调用RGS:"SpinRequest(stake)"→ RGS计算结果→返回"赢"。
2.同时,平台在运营商中进行"debit(stake)"和"credit(win)"。
优点:简单的会计。缺点:更多网络呼叫,强硬的等效性要求。
B) Transfer (session balance):
1.在会话开始时,该平台在RGS上进行"转移(amount)"。
2.在RGS旋转期间,它本身负责会议的平衡。完成时-"transferOut(remaining)"。
优点:钱包聊天较少。缺点:考虑到"RGS一侧的钱",额外的风险和回收。
建议:- 对于插槽,通常使用具有等效键的debit/credit。
5)相同性和一致性
每个货币步骤都必须具有唯一的"idempotency_key"(例如"round_id"或"spin_id")。
重复("HTTP409/425")返回相同的结果而不是"已执行错误"。
Exactly-once很难实现,因此我们建立了at-least-once+等效性。
我们扩展到:"debit","credit","jackpot_contribution","bonus_award"。
6)关键查询方案(缩写)
6.1.会议开始
json
POST /rgs/v1/sessions
{
"session_id": "s-…", "operator_id": "op-…", "player_id": "p-…", "game_id": "g-BookOf…", "build_hash": "sha256:…", "jwt": "eyJhbGci…", "geo": "DE", "currency": "EUR", "rg_flags": {"self_excluded": false, "time_limit_min": 60}
}
6.2.旋转(debit/credit)
json
POST /rgs/v1/spins
{
"spin_id": "spin-…", "round_id": "rnd-…", "session_id": "s-…", "stake": {"amount": 1.00, "currency": "EUR"}, "spin_type": "cash", "idempotency_key": "spin-…"
}
答案是:
json
{
"spin_id": "spin-…", "outcome": {
"win": {"amount": 3.40, "currency": "EUR"}, "features": [{"type":"bonus_trigger","name":"FreeSpins","count":10}], "symbols": "opaque-or-omitted"
}, "rgs_txns": [
{"type":"jackpot_contribution","amount":0.01}
], "telemetry_ref": "evt-…"
}
6.3.活动日志(活动巴士,蹦床格式)
json
POST /rgs/v1/events/batch
{
"events":[
{
"type":"spin_finished", "ts":"2025-10-20T11:22:33.123Z", "spin_id":"spin-…", "round_id":"rnd-…", "stake":1.00,"win":3.40,"currency":"EUR", "game_id":"g-…","build_hash":"sha256:…", "player_id":"p-…","operator_id":"op-…", "spin_type":"cash"
}
]
}
7)票据和市场建设
"build_hash" (SHA-256)是每个事件的必修课。
全球vs市场建设:语言,警告,投注限制,RTP配置文件。
该平台验证: "现在是否正在播放符合给定国家证书的法案。"
矩阵:'game_id × country × rtp_profile × build_hash'。
8)RNG,数学和反射
RNG居住在RGS上;商业逻辑不会改变"即时"的机会。
对于forenzika: "seed/nonce" to round/旋转+版本的力学。
Replay:通过"spin_id"/"seed" RGS复制结果并给出审计跟踪。
9) Responsible Gaming (RG)和Complaence-hooks
时间/限量曲线:Event Bus中的"session_time_ms","提醒",timeouts;"rg_event"。
自我判断/障碍:在旗帜下-立刻'403 RG_BLOCKED'。
UI不变性:平台检查客户显示市场构建的警告/年龄标签。
10)错误,撤退和SLA
编码:'400'(验证),'401/403'(身份验证/RG),'409'(幂等性冲突),'422'(业务错误),'429'(限制率),'5xx'(时间)。
Retrais Policy:指数,在接收器上具有偶数键和重复数据消除功能。
SLA: API可用性≥99。9%,"spin"的p95 latency ≤200-300 ms(区域),Event Bus-near-real-time <60 s。
11)可观察性和审计
Logs:带有"trace_id"语句的未剪切服务器日志。
度量标准:p95/p99 latency,方法错误率,RTP/奖金频率偏差,"eligible spins"份额。
Alerts:根据SLA,关于数学异常,关于钱包故障的增长。
审计:WORM存储费率/结果事件;按需出口。
12)安全性
mTLS + TLS 1.2+、HSTS、严格CORS在客户机上。
Kay轮换,TTL代币短,JTI/非测试。
针对客户的反垃圾箱:asset签名,完整性检查,debagger防护。
秘密-仅在秘密管理者中;没有"游戏中的钥匙"。
13)测试环境和认证
Sandbox:虚拟钱包,确定性的RNG(固定种子),自动失败的RG脚本。
Staging:一个没有真钱的prod-infra副本。
实验室包:GDD/数学,RNG档案,log方案,可重复构建和散列。
14) API中的促销和头奖
Free Spins:包传输:"grant_free_spins(计数,bet_size,rtp_profile?)";事件在RGS中花费和计算。
比赛:"spin_type=tournament"属性+Event Bus中的单个单元。
头奖:"jackpot_contribution"和"jackpot_win"作为单独的交易;通过偶数和"签名"事件的一致性。
15)报告和计费
Блоки выгрузок: `spins_total`, `eligible_spins`, `turnover`, `ggr`, `netwin`, `jackpot_contrib`, `bonus_cost`, `royalty_due`.
Per-spin/turnover-fee:通过"eligible_spins"或"Σ stake × rate"得分。
Rev-share:"瀑布"保留后的"NetWin";FX/异常的季度真值。
16)类型序列(言语图)
Spin (debit/credit):- Client → Platform: StartRound → Platform → RGS: Spin → RGS → Platform: Outcome → Platform → Wallet: Debit → Platform → Wallet: Credit → Platform → Client: Result → Platform → EventBus: spin_finished.
- Platform → RGS: GrantFreeSpins → Client: Start → RGS: Consume/Log each → EventBus: spin_finished (spin_type=free).
17)变更管理和互操作性
合同第一(合同第一):OpenAPI/Protobuf是电路的单一来源。
SemVer:仅添加字段;删除/更改-在/v2中。
功能标志:包含选项(Bonus Buy/Ante)-仅通过认证配置文件。
Deprecation: announce → grace period →在非活动区域关闭。
18)支票单
工作室→平台
- OpenAPI/gRPC spacks和近似的pailoads。
- "spin/debit/credit/jackpot"。
- "build_hash"和市场建设登记册。
- RNG反馈和审核日志。
- RG-hooki和错误'403 RG_BLOCKED'。
- 带有假种子、测试钱包和汽车价格标签的Sandbox。
平台→工作室
- 带有短TTL、allowlist IP、mTLS的JWT签名。
- 市场建设验证器和证书。
- Event Bus和dashbords (latency/error/RTP drift)。
- 配额和等级限制,带有诚实的反馈"429-Retry-After"。
- SLA/事件/通信渠道 24 × 7。
19) 30-60-90启动计划
0-30天
协调API合同和事件模式,选择钱包模型.
提高sandbox:固定种子RNG,测试钱包,自动等效性测试。
"build_hash"注册表和市场构建的主要矩阵。
31-60天
钱包和旋转集成;启用Event Bus和dashbords。
负载测试(p95/p99),retrai/等效性,网络混沌场景。
合规性:RG-hooks,localis,年龄标签;一个包裹到实验室。
61-90天
飞行员有1-2名操作员,A/B参加促销活动(免费旋转/锦标赛)。
输入true-up/报告,alerta RTP 漂移/bonus-freq。
准备v2改进:战斗事件,gRPC用于钱包,geo-routing。
20)简短的FAQ
RTP/版本在哪里验证?在平台上:"build_hash" ↔证书↔国家/地区。
RTP可以动态更改吗?没有。仅通过预先认证的配置文件,并且仅通过切换市场来构建。
如何解决"双重辩论"?等效密钥+交易状态存储;重播-返回结果。
需要gRPC吗?对于高容量的钱包/活体很有用;REST仍用于元数据/管理。
稳定集成是合同+相等性+可观察性。透明的事件方案,法案/市场控制,RG钩和版本纪律在开始时消除了90%的风险。接下来是促销和报告自动化,强硬的SLA和精益的API开发而不必进行"中断"更改。