Hayot o’yinlarini platformaga ulash uchun API qanday ishlaydi
1) Umumiy arxitektura va komponentlarning roli
Operator platformasi (Casino Platform): akkauntlar, hamyon, bonus dvigateli, limitlar, KYC/AML, tranzaksiyalar jurnali.
Live-o’yinlar provayderi (Studio/Provider): studiyalar, dilerlar, video oqimlar (WebRTC/Low-Latency HLS), raundlar o’yin serverlari.
Agregator (ba’zan): o’nlab provayderlarga yagona API, valyuta/limit/hodisalarni birxillashtirish.
Mijozning frontendi: UI stavkali veb/mobil mijoz, video pleyer, chat, mahalliy maslahatlar.
Yordamchi xizmatlar: Risk/Anti-fraud, logografiya, tahlil, xabar navbatlari (Kafka/RabbitMQ), monitoring.
Namunaviy topologiya: mijoz → (JWT) → platforma → (server-to-server) → provayder, parallel ravishda mijoz CDN/media-serverlar hovuzidan video oqimini oladi.
2) O’yinchining va sessiyaning hayot sikli
2. 1. Login va «o’yin tokeni»
1. Oʻyinchi platformaga kirish huquqiga ega.
2. Platforma CreateGameSessionni provayderga (S2S) chaqiradi,’player _ id’,’currency’,’country’,’bet _ limits’, javobgar o’yin bayroqlarini uzatadi.
3. Provayder bir martalik game_token va launch_url qaytaradi.
4. Mijoz’game _ token’qoʻshish orqali iframe/yangi tabda’launch _ url’ochadi (yoki oxirgi URL oʻyiniga 302 oladi).
S2S soʻrovi misoli: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"
}
}
Provayderning javobi:
json
{
"game_token": "gtkn_7f0...e2a", "launch_url": "https://live. provider. com/launch/roulette", "expires_in": 900
}
2. 2. Frontdagi autentifikatsiya
O’yin yuklanadi va’game _ token’ni o’z bekend orqali tasdiqlaydi.
Bahis/hodisalar uchun oʻyin serveriga WebSocket oʻrnatilmoqda.
Video oqimi WebRTC (past kechikish 0. 5-2 s) yoki LL-HLS (2-5 s).
3) Pul va stavkalar: Wallet API va idempotentlik
3. 1. Balans va debet/kredit
Provayder o’yinchining «pullarini» saqlamaydi - u Platform Wallet APIni chaqiradi:- `GET /wallet/balance? player_id' → joriy mavjud.
- ’POST/wallet/debit’ → stavkasini hisobdan chiqarish.
- ’POST/wallet/credit’ → yutuq/qaytarish.
- ’POST/wallet/rollback’ → raund bekor qilinganda tranzaksiyani qaytarish.
Muhim: barcha pul operatsiyalari’transaction _ id ’/’ round _ id’bo’yicha idempotentdir. Bir so’rovni takrorlash natijani o’zgartirmaydi.
Debet namunasi (stavka):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. Tayminglar va stavkalarning maqomlari
WINDOW_OPEN → WINDOW_CLOSING → WINDOW_CLOSED. ’WINDOW _ CLOSED’ dan keyin provayder yangi debetlarni taqiqlaydi.
Kech stavkalar «LATE _ BET» kodi bilan rad etiladi.
Agar aloqa uzilsa, mijoz uni qayta yuborishi mumkin - server dublikatni Idempotency-Key orqali farqlay olishi kerak.
Tranzaksiya maqomlari:’PENDING’,’SETTLED’,’ROLLED _ BACK’,’REJECTED’.
4) Raund voqealari: model va navbat
4. 1. WebSocket voqealari sxemasi
`round. started’→ keladi’round _ id’, stavkalar taymeri.
`bet. accepted/rejected’→ har bir stavka bo’yicha tasdiqlash.
`round. closed’→ stavkalari endi qabul qilinmaydi.
`round. result’→ natija (ruletka/xarita/suyak sektori).
`payout. created’→ o’yinchi bo’yicha yutuq summasi.
`round. settled’→ yakuniy maqomi, nazorat summasi.
Natija hodisasi misoli: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. Muvofiqlik va nazorat summalari
Har bir tadbir’seq’va’signature’bilan ta’minlanadi (mTLS + so’rov tanasining imzosi).
reconciliation uchun’payout _ checksum’ko’rsatiladi -’round _ id’bo’yicha barcha kreditlar summasi bir-biriga mos kelishi kerak.
5) Video oqim va kechikish
WebRTC «tirik qo’l uchun» (blekjek/bakkara/rulet) - mijozgacha <2 c kechiktirishning qat’iy budjeti.
LL-HLS/DASH tomoshabinlar/masshtab uchun, 2-5 s ruxsat beradi.
Vaqt sinxronizatsiyasi: NTP/chrony, to payload -’video _ ts’uchun replay va bahslar.
Folbek: WebRTC degradatsiyasida → kech stavkalarni blokirovka qilgan holda LL-HLSga avtomatik o’tish.
6) Xatolar, retralar, taymautlar
Umumiy qoidalar:- 800-1500 ms vaqtga ega barcha S2S-qo’ng’iroqlar, eksponensial pauzali retralar va Jitter, lekin pulni qayta hisobdan chiqarmasdan (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, frispinlar, sug’urtalar
8) Mas’uliyatli o’yin va cheklovlar
Seans bayroqlari:’self _ excluded’,’cooldown _ until’,’loss _ limit _ left’,’time _ limit _ left’.
Provayder har bir debetdan oldin’validate _ limits’soʻrashi mumkin.
Platforma force_close_session boshlashi mumkin: o’yinchi cheklangan/chegaradan oshib ketgan → provayder o’yinlar oynasini yopadi va o’ynalmagan stavkalar bo’yicha qaytarish qiladi.
9) Xavfsizlik va komplayens
S2S uchun mTLS, HSTS, qatʼiy IP-allowlist.
JWT/JWS front tokenlari uchun TTL qisqacha, audience/issuer tekshirish.
Provayderning webhook’lari imzosi (HMAC-SHA256 ustida).
Dilerlar harakatlarining loglari, raundlar repleyalari, o’zgarmas audit (WORM-saqlash).
Shaxsiy ma’lumotlarni saqlash - PII ni minimallashtirish,’player _ id’tokenlashtirish, yurisdiksiya bo’yicha saqlash muddatlari (GDPR va analoglar).
CreateGameSession darajasidagi yurisdiksiyalar boʻyicha geo-blokirovka va taqiqlar.
10) Reconciliation va moliya
10. 1. Soatbay/sutkalik hisobotlar
Provayder’round _ id → total_bets, total_wins, fees’boʻyicha hisobot beradi. Platforma quyidagilarni jamlaydi:- Debetlar summasi = Σ stavkalar, Kreditlar summasi = Σ yutuqlar + qaytarishlar, Delta = GGR (bonuslar/jekpotlar/komissiyalar hisobga olingan holda).
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 stsenariylari
Video/rasmlar muvaffaqiyatsiz tugadi → round. cancelled: provayder raunddagi barcha stavkalarga’rollback’yuboradi.
Debetni ikki marta qayta ishlash →’DUPLICATE _ TRANSACTION’va 200 OK platformasida ushlangan.
11) Chat, moderatsiya va UI voqealari
Suhbat voqealari alohida kanal orqali (WebSocket № 2) to’xtash so’zlari bilan filtrlanadi.
Tizim e’lonlari (close bets, winner list) - faqat provayderning ishonchli manbaidan olingan, imzolangan/taymstamplangan.
12) Test sinovi va sertifikatlashtirish
Provayderning Sandbox: belgilangan natijalar,’round’ni majburlash imkoniyati. result`.
QA konturi: stavkalarning qisqartirilgan oynalari (5-8 s) va tezlashtirilgan flou bo’lgan test-jadval.
Yuk: bir vaqtning o’zida 5-10 ming o’yinchini taqlid qilish, sekundiga eng yuqori debetlar (TPS) ≥ rejali × 1. 5.
Integratsiyani sertifikatlashtirish: idempotentlik, valyutalar, yaxlitlash, uzilishlarni qayta ishlash, limitlarga muvofiqlik va self-exclusion bo’yicha chek-varaqlar.
13) Metrika va SLO
Tech: median/95p latency uchun’debit/credit’, WebSocket round-trip, vaqtni sinxronlashtirish xatosi, drop-rate WebRTC.
Продукт: bet acceptance rate, late-bet rate, dispute rate, chargeback rate, session duration, retention, ARPU/LTV.
SLO misollari:99. 5% `debit` ≤ 1. 2 s, 99. 9% yetkazib berish’round. result’≤ 300 ms yozib olingandan so’ng, Videoyozuv ≤ 2. 95p WebRTC uchun 5 s.
14) Multivalyuta, soliqlar, mahalliylashtirish
Konvertatsiya - provayderdan tashqarida: o’yin qat’iy ravishda sessiya valyutasida ishlaydi.
Soliqlar/chegirmalar -’credit’(’witholding’maydoni) da platforma tomonida.
Lokalizatsiya:’lang’, raqam/valyuta formati, taymerlar va hisobotlar uchun vaqt zonasi.
15) Integratsiya variantlari
1. Direct-to-Provider: maksimal nazorat va fich, lekin alohida kontraktlar/sertifikatlash.
2. Agregator orqali: provayderlar tomonidan tez qoplash, unifikatsiyalangan sxemalar, ba’zan kamroq moslashuvchanlik.
3. Gibrid: top-stollar to’g’ridan-to’g’ri, qolganlari agregator orqali.
16) Mini-spetsifikatsiya (jami)
16. 1. WebSocket (mijozdan provayderga)
json
{ "type":"bet. place", "bet":{
"amount": 25, "selection":"17", "table_id":"ru-11"
}, "idempotency_key":"c3a2-...-001" }
16. 2. WebSocket (provayderdan mijozga)
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 (provayder platformasi)
’POST/wallet/debit’ (idempotent)- ’POST/wallet/credit’ (idempotent)
- ’POST/wallet/rollback’ (idempotent)
Imzo HMAC,’Timestamp’,’Nonce’, takrorlashlardan himoya qilish (TTL ≤ 60 c).
17) Chekka keyslar va ularni qanday yopish kerak
O’yinchining ulanishi uzildi: stavka jo’natildi, tasdiqlash yo’q → o’sha’Idempotency-Key’bilan takrorlash; server avvalgi holati bilan javob beradi.
Raundda diler/kolodlarni almashtirish: avtomatik bekor qilish va toʻliq’rollback’.
Valyuta nomuvofiqligi:’CURRENCY _ MISMATCH’+ hodisa jurnali; o’yin sessiya qayta chiqarilgunga qadar bloklanadi.
O’yin paytida self-exclusion: darhol’force _ close _ session’, o’ynalmaganlarni qaytarish.
Video sifatini o’zgartirish: faqat mijoz, taymer/stavkalarga ta’sir qilmaydi.
Re-hendsheyk WebSocket: tartibni yo’qotmasdan - o’tkazib yuborilganlarning «seq», «dogonka» bilan voqealar navbati.
18) Ishlab chiqarish-ishga tushirish chek-varaqasi
Xavfsizlik
- mTLS + pinning sertifikati, IP-allowlist.
- Barcha webhook’larning imzosi va’Timestamp ’/’ Nonce’ni tekshirish.
- Mini-PII: faqat’player _ id’(tokenlashtirilgan).
Ishonchlilik
- Barcha pul operatsiyalarining idempotentligi.
- Raundlarning nusxalari va o’zgarmas audit.
- Avto-folbek WebRTC → LL-HLS.
Mahsulot
- Limitlar/mas’uliyatli o’yin real vaqtda qo’llaniladi.
- Stavka paytida mahalliy maslahatlar.
- Dashbordlar SLO + alertlar 24/7.
Hayot o’yinlari integratsiyasining API - bu past ta’minotli oqim, hodisa shinasi va xabarlar tartibi, tayminglar va xavfsizlik talablari qat’iy bo’lgan idempotent hamyon. Muvaffaqiyatli amalga oshirish: stavkalar va raundlarning qat’iy hayot sikli, tekshiriladigan konsistentlik (reconciliation), ma’lumotlarni himoya qilish va mas’uliyatli o’yin limitlariga tayanadi va «chiroyli translyatsiya» ni ishonchli, sertifikatlanadigan moliyaviy mahsulotga aylantiradi.