스튜디오와 플랫폼 간의 API 통합 작동 방식
스튜디오 (게임 제공 업체) 와 플랫폼/애그리 게이터의 통합은 세션, 지갑, 스핀 결과 및 이벤트 원격 측정 주위의 동기 및 비동기 호출 체인입니다. 아래는 개발자와 규정 준수에 대한 고통없이 모든 것이 어떻게 연결되는지에 대한 간략하지만 실용적인지도
1) 손바닥에있는 건축
배우:- Studio RGS (원격 게임 서버) - 게임 로직, RNG, 보너스, 잭팟.
- 플랫폼/Aggregator-라우팅, 청구, 프로모션, 규정 준수.
- 운영자-플레이어의 지갑, KYC/RG, 쇼케이스.
- 클라이언트-웹/모바일 게임 컨테이너 (iframe/webview/native).
- 동기화 API: 세션, 지갑, 결과.
- 동기화/이벤트 버스: 스핀 이벤트, 보너스, 잭팟, RG, 기술 오류.
- 메타 데이터/카탈로그: 게임, 시장 구축, RTP 프로필, 로케일.
2) 프로토콜 및 기본 솔루션
전송: HTTPS/JSON (이벤트 버스/월렛의 경우 gRPC).
버전: '수락: 응용 프로그램/vnd. rgs. v1 + json '또는 '/v1/...'; 새 버전을 통해서만 호환성 저하.
식별: 'game _ id', 'build _ hash', 'operator _ id', 'sesion _ id', 'round _ id', 'spin _ id'.
시간: 엄격히 UTC, ISO-8601 (밀리 초).
통화: ISO-4217 + 정확도 (사소한 단위). FX-운영자/애그리 게이터 측.
3) 인증 및 인증
서버 간 서버: OAuth2 클라이언트 자격 증명 및 HMAC-
플레이어 세션: 수명이 짧은 JWT (사인 플랫폼) c 'sub', 'geo', 'rg _ flags', 'exp', 'aud = studio'.
액세스 목록: IP는 프로덕션 루프에 + mTLS를 허용합니다.
4) 지갑 모델: 직불/신용 대 전송
A) 직불/신용 (즉석):1. 플랫폼은 RGS라고 부릅니다. 'SpinRequest (스테이크)' → RGS는 결과 → 수익률 '승리' 를 계산합니다.
2. 동시에 플랫폼은 운영자 자리에서 '직불 (스테이크)' 및 '신용 (승리)' 을 만듭니다.
장점: 간단한 부기. 단점: 더 많은 네트워크 호출, demempotency에 대한 엄격한 요구 사항.
B) 전송 (세션 잔액):1. 세션이 시작될 때 플랫폼은 RGS에서 '트랜스퍼 인 (금액)' 을 수행합니다.
2. 스핀 동안 RGS 자체는 세션의 균형을 유지합니다. 완료시- '트랜스퍼 아웃 (남은)'.
장점: 지갑 채팅 횟수가 적습니다. 단점: "RGS 측의 돈", 추가 위험 및 조정을 설명합니다.
권장 사항:- 슬롯의 경우 demempotent 키가있는 직불/크레딧이 더 자주 사용됩니다.
5) 이념과 일관성
각 돈 단계에는 고유 한 'demempotency _ key' (예: 'round _ id' 또는 'spin _ id') 가 있어야합니다.
듀플리케이트 ('TH 409/425') 는 "이미 실행 된 오류" 가 아닌 동일한 결과를 반환합니다.
정확히 한 번은 달성하기 어렵 기 때문에 적어도 한 번은 + demempotency를 구축합니다.
Idempotence는 'debit', 'credit', 'jackpot _ regiveness', 'bonus _ award' 로 확장됩니다.
6) 키 쿼리 체계 (약칭)
6. 1. 세션 시작
json
POST/rgs/v1/세션
{
"sesion _ id": "s-", "operator _ id": "op-"..., "player _ id": "p-"..., "game _ id": "g-BookOf"..., "sha256:..." jwt ":" eyJhbci "...," geo ":" DE ", EUR", "(PHP 3 = 3.0.6, PHP 4)
}
6. 2. 스핀 (직불/크레딧)
json
POST/rgs/v1/스핀
{
"spin _ id": "spin-"..., "round _ id": "rnd-"..., "sesion _ id": "s-"..., "stake": {"amount": 1. 00, "통화": "EUR"}, "spin _ style": "cash", "demempotency _ key": "spin-"...
}
답변:
json
{
"spin _ id": "spin-"..., "결과": {
"승리": {"금액": 3. 40, "통화": "EUR"}, "기능": [{"유형": "보너스 _ 트리거", "이름": "FreeSpins", "count": 10}], "기호": "불투명 또는 생략"
}, "rgs _ txns": [
{"유형": "잭팟 _ 기여", "양": 0. 01}
], "telemetry _ ref": "evt-"...
}
6. 3. 이벤트 버스
json
POST/rgs/v1/이벤트/배치
{
"이벤트": [
{
"유형": "spin _ finished", "ts": "2025-10-20T11: 22:33. 123Z "," spin _ id ":" spin- "...," round _ id ":" rnd- "...," stake ": 1. 00, "승리": 3. 40, "통화": "EUR", "game _ id": "g-"..., "build _ hash": "sha256:...", "player _ id": "p-...", operator _ id ":" op- "...," spin _ style ":" cash "
}
]
}
7) Versioning 빌드 및 시장 빌드
'build _ hash' (Ś-256) -각 이벤트에 필요합니다.
글로벌 vs 시장 구축: 언어, 경고, 요율 제한, RTP 프로필.
플랫폼은 "현재 특정 국가의 인증서와 일치하는 빌드입니다".
매트릭스: 'game _ id × country × rtp _ pro필 × build _ hash'.
8) RNG, 수학 및 재생
RNG는 RGS에 살고 있습니다. 비즈니스 논리는 즉각적인 기회를 바꾸지 않습니다.
법의학: 라운드/스핀 + 메커니즘 버전 당 '시드/논'.
재생: 'spin _ id '/' seed' 에 의해 RGS는 결과를 재현하고 감사 흔적을 제공합니다.
9) 책임있는 게임 (RG) 및 규정 준수 후크
시간/제한의 고리: '세션 _ time _ ms', "알림", 타임 아웃; 이벤트 버스에서 'rg _ event'.
자체 제외/블록: 플래그가있는 즉시 '403 RG _ BLOCKED'.
UI 불변: 플랫폼은 클라이언트가 시장 구축에서 경고/연령 태그를 표시하는지 확인합니다.
10) 버그, 배송 및 SLA
코드: '400' (검증), '401/403' (인증/RG), '409' (demotency 충돌), '422' (비즈니스 오류), '429' (속도 제한), '5xx' (임시).
재 트레이 정책: 지수, dempotent 키 및 수신기에서의 중복 제거.
SLA 소 99 API 가용성. 9%, '스핀' 에 대한 p95 대기 시간
11) 관찰 및 감사
로그: 상관 관계 'trace _ id' 가있는 자르지 않은 서버 로그.
측정 항목: p95/p99 대기 시간, 방법별 오류율, RTP/보너스 주파수 편차, "탄성 스핀" 비율.
경고: SLA, 수학 이상, 지갑 오류 증가.
감사: 베팅/결과 이벤트를위한 WORM 스토리지; 주문형 수출.
12) 안전
mTLS + TLS 1. 2 +, HSTS, 클라이언트 로더의 엄격한 CORS.
키 회전, 짧은 TTL 토큰, JTI/nonce 확인.
클라이언트 변조 방지: 자산 서명, 무결성 확인, 디버거 보호.
비밀-비밀 관리자에게만; "게임 구성의 핵심" 이 없습니다.
13) 테스트 환경 및 인증
샌드 박스: 가상의 지갑, 결정 론적 RNG (고정 시드), RG 시나리오의 자동 고장.
준비: 실제 돈이없는 prod-infra의 사본.
실험실 용 패키지: GDD/수학, RNG 서류, 로그 다이어그램, 반복 가능한 빌드 및 해시.
14) API의 프로모션 및 잭팟
무료 스핀: 패킷 전송: 'grant _ free _ spins (count, bet _ size, rtp _ profile?)'; 이벤트는 RGS에서 사용되며 기록됩니다.
토너먼트: 이벤트 버스에서 속성 'spin _ style = 토너먼트' + 개별 집계.
잭팟: 별도의 거래로서 '잭팟 _ 기여' 및 '잭팟 _ 윈'; demempotency 및 "서명 된" 이벤트를 통한 일관성.
15) 보고 및 청구
지정하십시오. 'spins _ total', 'japiable _ spins', 'turnover', 'ggr', 'netwin', 'jackpot _ contrib', 'borness _ cost', 'royalty _ due'.
스핀 당/회전율 수수료: '적격 _ 스핀' 또는 '가격 스테이크 × 비율' 을 계정하십시오.
Rev-share: '폭포' 보유 후 'NetWin' 에서; FX/예외에 대한 분기 별 실적.
16) 전형적인 시퀀스 (단어 차트)
스핀 (직불/크레딧):- 클라이언트 → 플랫폼: 스타트 라운드 → 플랫폼 → RGS: 스핀 → RGS → 플랫폼: 결과 → 플랫폼 → 월렛: 신용 → 플랫폼 → 클라이언트: 결과 → 플랫폼 → EventBus: spin _ finished.
- 플랫폼 → RGS: GrantFreeSpins → 클라이언트: 시작 → RGS: 각 이벤트 버스: 스핀 _ 완료 (스핀 _ 유형 = 무료).
17) 변경 관리 및 상호 운용성
계약 우선: OpenAPI/ProtoSuf는 단일 스키마 소스입니다.
SemVer: 필드 만 추가하십시오. / v2에서 삭제/수정
인증 된 프로필만을 통한 기능 플래그 사용 옵션 (Bonus Buy/Ante).
거부: 비활성 영역에서 → 유예 기간 → 종료 발표.
18) 점검표
스튜디오 → 플랫폼
- OpenAPI/gRPC 사양 및 샘플 페이로드.
- IDempotency '스핀/직불/크레딧/잭팟'.
- 'build _ hash' 및 마켓 빌드 레지스트리.
- RNG 복제품 및 감사 로그.
- RG 후크 및 오류 '403 RG _ BLOCKED'.
- 수정 시드, 테스트 지갑 및 자동 스크립트가있는 샌드 박스.
플랫폼 → 스튜디오
- 짧은 TTL, 허용리스트 IP, mTLS가있는 JWT 서명.
- 시장 구축 및 인증서의 검증자.
- 이벤트 버스 및 대시 보드 (대기 시간/오류/RTP 드리프트).
- 정직한 피드백 '429-Recuded-After' 를 사용한 쿼타 및 요율 제한.
- SLA/사건/링크 24 × 7.
19) 30-60-90 출시 계획
0-30 일
API 계약 및 이벤트 체계에 동의하고 지갑 모델을 선택하십시오.
샌드 박스 올리기: 고정 시드 RNG, 테스트 지갑, demopotency 자동화.
레지스트리 'build _ hash' 및 기본 행렬 시장 빌드.
31-60 일
지갑 및 스핀 통합; 이벤트 버스 및 대시 보드 활성화
로드 테스트 (p95/p99), retrai/idempotency, 네트워크 혼돈 시나리오.
준수: RG- 후크, 로케일, 연령 라벨; 실험실에 포장하십시오.
61-90 일
1-2 명의 운영자를위한 파일럿, 프로모션을위한 A/B (무료 스핀/토너먼트).
실제/보고에 들어가면 RTP 드리프트 알림/보너스 프리크.
v2 개선 준비: 배치 이벤트, 지갑 용 gRPC, 지리 라우팅.
20) 짧은 FAQ
RTP/버전은 어디에서 확인됩니까? 플랫폼에서: 'build _ hash' 인증서 인증서 국가.
RTP를 동적으로 변경할 수 있습니까? 아니요, 그렇지 않습니다. 사전 인증 된 프로필 만 있고 시장 구축 만 전환합니다.
"이중 직불 결제" 를 해결하는 방법? 이데올로기 키 + 트랜잭션 상태 저장; 결과를 다시 반환합니다.
gRPC가 필요합니까? 대량의 지갑/이벤트에 유용합니다. 메타 데이터/관리자 패널에는 REST가 남아 있습
안정적인 통합은 계약 + demempotency + 관찰 가능성입니다. 투명한 이벤트 체계, 빌드/마켓 제어, RG 후크 및 버전 규율은 처음에 90% 의 위험을 제거합니다. 또한 프로모션 및보고 자동화, 하드 SLA 및 "파괴" 변경없이 API의 신중한 개발.