Durmuş oýunlaryny platforma birikdirmegiň API-leri nähili işleýär
1) Umumy arhitektura we komponentleriň rollary
Operator platformasy (Casino Platform): hasaplar, gapjyk, bonus hereketlendirijisi, çäklendirmeler, KYC/AML, amallar magazineurnaly.
Live-oýun üpjün edijisi (Studio/Provider): studiýalar, dilerler, wideo akymlary (WebRTC/Low-Latency HLS), tapgyrlaryň oýun serweri.
Agregator (käwagt): onlarça üpjün edijä ýeke-täk API, walýutalary/çäkleri/wakalary birleşdirmek.
Müşderiniň öň tarapy: UI nyrhlaryndan web/ykjam müşderi, wideo oýunçy, söhbetdeşlik, ýerli maslahatlar.
Kömekçi hyzmatlar: Töwekgelçilik/Anti-fraud, logistika, analitika, habar nobatlary (Kafka/RabbitMQ), gözegçilik.
Adaty topologiýa: müşderi → (JWT) → platforma → (server-to-server) → üpjün ediji, şol bir wagtyň özünde müşderi CDN/media serwer howuzundan wideo akymyny alýar.
2) Oýunçynyň we sessiýanyň durmuş sikli
2. 1. Giriş we "oýun belligi"
1. Oýunçy platformada ygtyýarnama alýar.
2. Platforma CreateGameSession-y üpjün edijiden (S2S) çagyrýar, 'player _ id', 'currency', 'country', 'bet _ limits', jogapkär oýnuň baýdaklaryny berýär.
3. Üpjün ediji bir gezek ulanylýan game_token we launch_url yzyna gaýtarýar.
4. Müşderi 'game _ token' goşmak bilen iframe/täze tabda 'launch _ url' açýar (ýa-da oýnuň ahyrky URL-sine 302 alýar).
S2S soragynyň mysaly:http
POST /api/v1/sessions
Content-Type: application/json
Authorization: Bearer <platform_api_key>
{
"player_id": "u-918273", "session_id": "sess-5f3b2", "currency": "EUR", "country": "DE", "lang": "de", "bet_limits": {"min": 0. 5, "max": 2000}, "responsible_gaming": {"self_excluded": false, "deposit_limit_left": 150}, "callback_urls": {
"balance": "https://platform. example. com/wallet/balance", "debit": "https://platform. example. com/wallet/debit", "credit": "https://platform. example. com/wallet/credit", "rollback":"https://platform. example. com/wallet/rollback", "events": "https://platform. example. com/game/events"
}
}
Üpjün edijiniň jogaby:
json
{
"game_token": "gtkn_7f0...e2a", "launch_url": "https://live. provider. com/launch/roulette", "expires_in": 900
}
2. 2. Öňdäki tassyklama
Oýun ýüklenýär, 'game _ token' -ni öz nokendiniň üsti bilen tassyklaýar.
Jedeller/wakalar üçin oýun serwerine WebSocket gurulýar.
Wideo akymy WebRTC (pes gijikdirme 0. 5-2 s) ýa-da LL-HLS (2-5 s).
3) Pul we nyrhlar: Wallet API we idempotentlik
3. 1. Balans we debet/karz
Üpjün ediji oýunçynyň "puluny" saklamaýar - Platform Wallet API çagyrýar:- `GET /wallet/balance? player_id' → häzirki bar.
- 'POST/wallet/debit' → stawkany hasapdan çykarmak.
- 'POST/wallet/credit' → Ýeňşi/yzyna almak.
- 'POST/wallet/rollback' → tapgyry ýatyrylanda geleşigiň yzyna gaýtarylmagy.
Möhüm: Ähli pul amallary 'transaction _ id '/' round _ id' boýunça deňdir. Şol bir haýyşyň gaýtalanmagy netijäni üýtgetmeýär.
Debet mysaly (nyrh):http
POST /wallet/debit
Idempotency-Key: trx-7a2df-001
Content-Type: application/json
{
"player_id": "u-918273", "round_id": "r-2025-10-18-12:30:15Z-001", "transaction_id": "trx-7a2df-001", "amount": 25. 00, "currency": "EUR", "bet_type": "roulette_straight", "meta": {"table_id":"ru-11", "selection":"17", "odds":35}
}
3. 2. Taýmingler we nyrhlaryň ýagdaýlary
WINDOW_OPEN → WINDOW_CLOSING → WINDOW_CLOSED. 'WINDOW _ CLOSED' -den soň üpjün ediji täze karzlary gadagan edýär.
Giç nyrhlar "LATE _ BET" kody bilen ret edilýär.
Aragatnaşyk kesilen halatynda müşderi stawkany gaýtadan iberip biler - serwer dublikaty Idempotency-Key boýunça tapawutlandyryp bilmelidir.
Geleşikleriň ýagdaýlary: 'PENDING', 'SETTLED', 'ROLLED _ BACK', 'REJECTED'.
4) Tapgyryň wakalary: model we nobatlylyk
4. 1. WebSocket
`round. started '→' round _ id ', jedelleriň taýmeri gelýär.
`bet. accepted/rejected '→ her nyrh boýunça tassyklama.
`round. closed '→ nyrhlar indi kabul edilmeýär.
`round. result '→ netije (rulet/kartoçka/süňk pudagy).
`payout. created '→ oýunçy boýunça ýeňijiniň mukdary.
`round. settled '→ soňky ýagdaýy, gözegçilik mukdary.
Netije wakasynyň mysaly:json
{
"type": "round. result", "round_id": "r-2025-10-18-12:30:15Z-001", "table_id": "ru-11", "payload": {
"roulette": {"number":17, "color":"black"}, "hash": "sha256:8a7b...d1c", "video_ts": "2025-10-18T12:30:23. 450Z"
}
}
4. 2. Ylalaşyklylyk we gözegçilik pullary
Her bir waka 'seq' we 'signature' bilen üpjün edilýär (mTLS + haýyşnamanyň bedeniniň goly).
Reconciliation üçin 'payout _ checksum' görkezilýär - 'round _ id' boýunça ähli karzlaryň möçberi birleşmeli.
5) Wideo akymy we gijä galmak
"Diri eli" (blackjack/bakkara/rulet) jedelleri üçin WebRTC - müşderä çenli <2 c gijikdirmegiň berk býudjeti.
Tomaşaçylar/masştab üçin LL-HLS/DASH, 2-5 c rugsat berýär.
Wagt sinhronizasiýasy: NTP/chrony, içinde payload - 'video _ ts' üçin repleýler we jedeller.
Folbek: WebRTC bozulanda → giç nyrhlary blokirlemek bilen LL-HLS-e awto geçiş.
6) Ýalňyşlyklar, retralar, wagtlar
Umumy düzgünler:- S2S jaňlarynyň hemmesi 800-1500 ms wagt bilen, eksponensial arakesme we Jitter bilen retralar, ýöne pullary gaýtadan hasaplamazdan (idempotentlik).
- `INSUFFICIENT_FUNDS`, `LIMIT_EXCEEDED`, `ACCOUNT_LOCKED`, `DUPLICATE_TRANSACTION`, `LATE_BET`, `CURRENCY_MISMATCH`.
json
{
"error": "INSUFFICIENT_FUNDS", "message": "Balance 18. 00 < required 25. 00", "transaction_id": "trx-7a2df-001"
}
7) Bonuslar, frispinler, ätiýaçlandyrmalar
8) Jogapkärçilikli oýun we çäklendirmeler
Sessiýanyň baýdaklary: 'self _ excluded', 'cooldown _ until', 'loss _ limit _ left', 'time _ limit _ left'.
Üpjün ediji her bir debetden öň 'validate _ limits' sorap biler.
Platforma force_close_session başlap biler: oýunçy aýryldy/çäginden geçdi → üpjün ediji jedelleriň penjiresini ýapýar we oýnalmadyk jedeller boýunça yzyna gaýtarylýar.
9) Howpsuzlyk we gabat gelmek
mTLS S2S, HSTS, berk IP-allowlist.
JWT/JWS front bellikleri üçin gysgaça TTL, audience/issuer barlagy.
Üpjün edijiniň webhook goly (bedeniň üstünde HMAC-SHA256).
Dilerleriň hereketleriniň ýazgylary, tapgyrlaryň göçürmeleri, üýtgemeýän audit (WORM-ammar).
Şahsy maglumatlaryň saklanylmagy - PII-iň minimallaşdyrylmagy, 'player _ id' tokenizasiýasy, ýurisdiksiýa boýunça saklanyş möhletleri (GDPR we analoglar).
CreateGameSession derejesinde geo-blokirleme we ýurisdiksiýa gadaganlyklary.
10) Reconciliation we maliýe
10. 1. Sagatlyk/gündelik hasabatlar
Üpjün ediji 'round _ id → total_bets, total_wins, fees' boýunça hasabat berýär. Platforma gysgaldýar:- Debetleriň jemi = Σ stawkalar, Karzlaryň mukdary = Σ ýeňişler + yzyna gaýtarmalar, Delta = GGR (bonuslary/jekpotlary/komissiýalary hasaba almak bilen).
json
{
"date": "2025-10-18", "currency": "EUR", "tables": [{
"table_id": "ru-11", "rounds": 1260, "total_bets": "45230. 00", "total_payouts": "43012. 50", "jackpot_contrib": "302. 00", "provider_fee": "2. 5%"
}]
}
10. 2. Rollback ssenarileri
Wideo hatasy → round. cancelled: üpjün ediji 'rollback' -ni tapgyrdaky ähli nyrhlara iberýär.
Şol bir netije bilen → 'DUPLICATE _ TRANSACTION' we 200 OK platformasynda tutulan debeti goşa gaýtadan işlemek.
11) Söhbetdeşlik, moderasiýa we wakalar UI
Söhbetdeşlik wakalary aýratyn kanal (WebSocket No. 2) arkaly durgun sözler boýunça süzgüçler bilen geçýär.
Ulgam bildirişleri (close bets, winner list) - diňe üpjün edijiniň ynamdar çeşmesinden, gol çekilen/taýtstamplanan.
12) Synag we sertifikatlaşdyrmak
Üpjün edijiniň Sandbox: kesgitlenen netijeler, 'round' zorlamak ukyby. result`.
Kontury QA: gysgaldylan stawka penjireleri (5-8 c) we çaltlaşdyrylan flowly synag tablisasy.
Ýük: bir wagtyň özünde 5-10 müň oýunçynyň imitasiýasy, sekuntda iň ýokary debetler (TPS) ≥ meýilleşdirilen × 1. 5.
Integrasiýa şahadatnamasy: deňlik, walýutalar, tegeleklemek, öçürmeleri gaýtadan işlemek, çäklere laýyklyk we öz-özüňi görkezmek boýunça çek-listler.
13) Metrikler we SLO
Tech: median/95p latency for 'debit/credit', WebSocket round-trip, wagt senkronizasiýa ýalňyşlygy, WebRTC drop-rate.
Продукт: bet acceptance rate, late-bet rate, dispute rate, chargeback rate, session duration, retention, ARPU/LTV.
SLO mysallary:99. 5% `debit` ≤ 1. 2 s, 99. 9% eltip bermek 'round. result '≤ 300 ms düzedilenden soň, Wideo goldaw ≤ 2. 95p WebRTC üçin 5 s.
14) Köp walýuta, salgytlar, lokalizasiýa
Konwersiýa - üpjün edijiden daşarda: oýun sessiýanyň walýutasynda berk işleýär.
Salgytlar/aýyrmalar - "credit" -de ("witholding" meýdany) platforma tarapynda.
Lokalizasiýa: 'lang', san/walýuta formaty, taýmerler we hasabatlar üçin wagt zolagy.
15) Integrasiýa wariantlary
1. Direct-to-Provider: iň ýokary gözegçilik we piç, ýöne aýry-aýry şertnamalar/şahadatnamalar.
2. Agregator arkaly: üpjün edijiler tarapyndan çalt örtmek, birleşdirilen shemalar, käwagt çeýeligi az.
3. Gibrid: top stollar göni, galanlary agregator arkaly.
16) Kiçi aýratynlyklar (jemi)
16. 1. WebSocket girişi (müşderiden üpjün edijä)
json
{ "type":"bet. place", "bet":{
"amount": 25, "selection":"17", "table_id":"ru-11"
}, "idempotency_key":"c3a2-...-001" }
16. 2. WebSocket gidişleri (üpjün edijiden müşderä)
json
{ "type":"bet. accepted", "bet_id":"b-8821", "seq":12031 }
{ "type":"round. closed", "round_id":"r-...001", "seq":12050 }
{ "type":"round. result", "result":{"number":17,"color":"black"}, "seq":12070 }
{ "type":"payout. created", "amount":875, "currency":"EUR", "seq":12075 }
16. 3. Wallet S2S (üpjün ediji platforma)
'POST/wallet/debit' (idempotent)- 'POST/wallet/credit' (idempotent)
- 'POST/wallet/rollback' (idempotent)
HMAC, 'Timestamp', 'Nonce' goly, gaýtalanmakdan goramak (TTL ≤ 60 c).
17) Kenarýaka haltalary we olary nädip ýapmaly
Oýunçynyň baglanyşygy kesildi: nyrh iberildi, tassyklama ýok → şol bir "Idempotency-Key" bilen gaýtalamak; Serwer öňki ýagdaýy bilen jogap berer.
Tapgyrda diler/palodlary üýtgetmek: awtomatiki ýatyrmak we doly 'rollback'.
Walýuta deňsizligi: 'CURRENCY _ MISMATCH' + waka magazineurnaly; oýun sessiýa täzeden çykýança petiklenýär.
Öz-exclusion: derrew 'force _ close _ session', oýnamadyklaryň yzyna gaýtarylmagy.
Wideo hiliniň üýtgemegi: diňe müşderi, taýmerlere/nyrhlara täsir etmezden.
Re-hendsheyk WebSocket: tertip-düzgüni ýitirmezden - "seq", "dogona" bilen wakalaryň nobaty.
18) Önümçilik-uçuryş çek-sanawy
Howpsuzlyk
- mTLS + pinning sertifikat, IP-allowlist.
- Webhook 'laryň hemmesiniň goly we barlagy' Timestamp '/' Nonce '.
- Mini-PII: diňe 'player _ id' (tokenlenen).
Ygtybarlylyk
- Ähli pul amallarynyň idempotenti.
- Tapgyrlaryň göçürmeleri we üýtgemeýän audit.
- Awto-folbek WebRTC → LL-HLS.
Önüm
- Çäklendirmeler/jogapkär oýun hakyky wagtda ulanylýar.
- Jedeliň pursatyndaky ýerli maslahatlar.
- Daşbordlar SLO + alertler 24/7.
Durmuş oýunlarynyň integrasiýasynyň API-leri, habarlaryň, taýmingleriň we howpsuzlygyň tertibine berk talaplary bolan pes göwrümli akymyň, waka tekeriniň we idempotent gapjygyň bir toparydyr. Üstünlikli durmuşa geçirmek: jedelleriň we tapgyrlaryň berk durmuş sikline, barlanylýan yzygiderlilige (reconciliation), maglumatlary goramaga we jogapkärli oýnuň çäklerine esaslanýar we "owadan ýaýlymy" ygtybarly, kepillendirilen maliýe önümine öwürýär.