Platforma canlı oyunların API bağlantıları necə işləyir
1) Ümumi memarlıq və komponentlərin rolu
Operator platforması (Casino Platform): hesablar, cüzdan, bonus mühərriki, limitlər, KYC/AML, əməliyyat jurnalı.
Canlı oyun provayderi (Studio/Provider): studiyalar, dilerlər, video axınlar (WebRTC/Low-Latency HLS), oyun serverləri.
Aqreqator (bəzən): onlarla provayderə vahid API, valyuta/limit/hadisələrin unifikasiyası.
Müştərinin önü: UI bahisləri, video player, chat, yerli ipuçları ilə veb/mobil müştəri.
Köməkçi xidmətlər: Risk/Anti-fraud, loging, analitika, mesaj növbələri (Kafka/RabbitMQ), monitorinq.
Tipik topologiya: müştəri → (JWT) → platforma → (server-to-server) → provayder, paralel olaraq müştəri CDN/media server hovuzundan video axını alır.
2) Oyunçu və sessiya həyat dövrü
2. 1. Giriş və «oyun tokeni»
1. Oyunçu platformaya daxil olur.
2. Platforma provayderdən CreateGameSession (S2S) çağırır, 'player _ id', 'currency', 'country', 'bet _ limits', cavabdeh oyunun bayraqlarını ötürür.
3. Provayder birdəfəlik game_token və launch_url qaytarır.
4. Müştəri 'game _ token' əlavə edərək iframe/yeni sekmədə 'launch _ url' açır (və ya oyunun son URL-də 302 alır).
S2S sorğu nümunəsi: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"
}
}
Provayderin cavabı:
json
{
"game_token": "gtkn_7f0...e2a", "launch_url": "https://live. provider. com/launch/roulette", "expires_in": 900
}
2. 2. Cəbhədə autentifikasiya
Oyun yüklənir, backend vasitəsilə 'game _ token' təsdiqləyir.
Bahislər/hadisələr üçün oyun serverinə WebSocket quraşdırılır.
Video axını WebRTC (aşağı gecikmə 0. 5-2 s) və ya LL-HLS (2-5 s).
3) Pul və bahislər: Cüzdan API və idempotentlik
3. 1. Balans və debet/kredit
Provayder oyunçunun «pulunu» saxlamır - Platform Wallet API çağırır:- `GET /wallet/balance? player_id' → mövcud.
- 'POST/wallet/debit' → dərəcəsi silin.
- 'POST/wallet/credit' → qazanmaq/geri almaq.
- 'POST/wallet/rollback' → tur ləğv edildikdə əməliyyatın geri qaytarılması.
Mühüm: bütün pul əməliyyatları idempotentdir 'transaction _ id '/' round _ id'. Eyni sorğunun təkrarlanması nəticəni dəyişmir.
Debet nümunəsi (bahis):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. Tayminq və status dərəcələri
WINDOW_OPEN → WINDOW_CLOSING → WINDOW_CLOSED. 'WINDOW _ CLOSED' sonra provayder yeni debet qadağan edir.
Gec dərəcələr 'LATE _ BET' kodu ilə rədd edilir.
Əlaqə kəsildikdə, müştəri yenidən bir bahis göndərə bilər - server Idempotency-Key ilə təkrarlanmanı ayırd edə bilməlidir.
Əməliyyatların statusları: 'PENDING', 'SETTLED', 'ROLLED _ BACK', 'REJECTED'.
4) Raund hadisələri: model və növbə
4. 1. WebSocket hadisə sxemi
`round. started '→ gəlir' round _ id ', bahis taymer.
`bet. accepted/rejected '→ hər bahis üçün təsdiq.
`round. closed '→ bahislər artıq qəbul edilmir.
`round. result '→ nəticə (rulet/kart/sümük sektoru).
`payout. created '→ oyunçu üzrə qazanılan məbləğ.
`round. settled '→ son status, nəzarət məbləği.
Nəticə hadisəsinin nümunəsi: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. Uyğunluq və nəzarət məbləğləri
Hər bir hadisə 'seq' və 'signature' (mTLS + sorğu bədən imzası) ilə təmin edilir.
reconciliation üçün 'payout _ checksum' göstərilir - 'round _ id' üzrə bütün kreditlərin məbləği birləşməlidir.
5) Video axını və gecikmə
WebRTC «canlı əl» bahisləri üçün (blackjack/bakara/rulet) - müştəriyə ciddi gecikmə büdcəsi <2 c.
LL-HLS/DASH tamaşaçılar/miqyaslı, 2-5 c imkan verir.
Vaxt sinxronizasiyası: NTP/chrony, payload - 'video _ ts' replay və mübahisələr üçün.
Folback: WebRTC deqradasiyasında → LL-HLS-ə gec bahislərin bloklanması ilə avtomatik keçid.
6) Səhvlər, retrajlar, vaxtlar
Ümumi qaydalar:- Bütün S2S zəngləri 800-1500 ms, eksponent fasilə və Jitter ilə retras, lakin yenidən pul silinmədən (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, frispinlər, sığortalar
8) Məsuliyyətli oyun və məhdudiyyətlər
Seans bayraqları: 'self _ excluded', 'cooldown _ until', 'loss _ limit _ left', 'time _ limit _ left'.
Hər debetdən əvvəl provayder 'validate _ limits' tələb edə bilər.
Platforma force_close_session başlaya bilər: oyunçu kənarlaşdırıldı/limiti aşdı → provayder bahis pəncərəsini bağlayır və oynanılmamış bahislər üzrə geri qaytarmalar edir.
9) Təhlükəsizlik və uyğunluq
S2S, HSTS, ciddi IP-allowlist üçün mTLS.
JWT/JWS ön tokenlər üçün qısa TTL ilə, audience/issuer yoxlama.
Provayderin webhook imzası (HMAC-SHA256 üzərində).
Dilerlərin hərəkətləri, tur repleyləri, dəyişməz audit (WORM-saxlama).
Şəxsi məlumatların saxlanması - PII-nin minimuma endirilməsi, 'player _ id' tokenizasiyası, yurisdiksiya üzrə saxlama müddəti (GDPR və analoqlar).
CreateGameSession səviyyəsində geo-bloklama və yurisdiksiya qadağaları.
10) Reconciliation və maliyyə
10. 1. Saatlıq/gündəlik hesabatlar
Provayder hesabat verir 'round _ id → total_bets, total_wins, fees'. Platforma aşağıdakıları birləşdirir:- Debetlərin miqdarı = Σ dərəcələr, Kreditlərin miqdarı = Σ uduşlar + geri qaytarmalar, Delta = GGR (bonuslar/cekpotlar/komissiyalar nəzərə alınmaqla).
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 ssenariləri
Video/ekran görüntüsü uğursuz → round. cancelled: provayder raunddakı bütün bahislərə 'rollback' göndərir.
Platformada tutulan ikiqat debet emalı → 'DUPLICATE _ TRANSACTION' və əvvəlki nəticə ilə 200 OK.
11) Chat, moderasiya və UI hadisələri
Söhbət hadisələri stop-söz filtrləri ilə ayrı bir kanaldan (WebSocket № 2) keçir.
Sistem elanları (close bets, winner list) - yalnız etibarlı bir provayder mənbəyindən, imzalanmış/zamanlanmış.
12) Test və sertifikatlaşdırma
Sandbox provayder: sabit nəticələr, 'round məcbur etmək imkanı. result`.
QA konturu: kəsilmiş bahis pəncərələri (5-8 c) və sürətləndirilmiş flow ilə test cədvəli.
Yük: təqlid 5-10 min eyni zamanda oyunçu, pik debet saniyə (TPS) ≥ planlaşdırılan × 1. 5.
İnteqrasiya sertifikatlaşdırma: idempotentlik, valyutalar, yuvarlaqlaşdırma, kəsilmələrin emalı, limitlərə uyğunluq və self-exclusion üzrə yoxlama vərəqələri.
13) Metrika və SLO
Tech: median/95p latency üçün 'debit/credit', WebSocket round-trip, vaxt sinxronizasiya səhv, drop-rate WebRTC.
Продукт: bet acceptance rate, late-bet rate, dispute rate, chargeback rate, session duration, retention, ARPU/LTV.
SLO nümunələri:99. 5% `debit` ≤ 1. 2 s, 99. 9% çatdırılma 'round. result '≤ 300 ms sonra fiksasiya, Video dəstək ≤ 2. 5 üçün 95p WebRTC.
14) Multivalyuta, vergilər, lokalizasiya
Konvertasiya - provayderdən kənarda: oyun ciddi şəkildə sessiyanın valyutasında işləyir.
Vergilər/tutulmalar - platformanın tərəfində 'credit' ('witholding' sahəsi).
Lokalizasiya: 'lang', rəqəmlər/valyuta formatı, taymerlər və hesabatlar üçün saat zonası.
15) İnteqrasiya variantları
1. Direct-to-Provider: maksimum nəzarət və phic, lakin ayrı-ayrı müqavilələr/sertifikatlaşdırma.
2. Aqreqator vasitəsilə: provayderlər tərəfindən sürətli örtük, vahid sxemlər, bəzən daha az çeviklik.
3. Hibrid: üst masalar birbaşa, qalan aqreqator vasitəsilə.
16) Mini spesifikasiya (ümumi)
16. 1. WebSocket daxil olanlar (müştəridən provayderə)
json
{ "type":"bet. place", "bet":{
"amount": 25, "selection":"17", "table_id":"ru-11"
}, "idempotency_key":"c3a2-...-001" }
16. 2. WebSocket (provayderdən müştəriyə)
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 platforması)
'POST/wallet/debit' (idempotent)- 'POST/wallet/credit' (idempotent)
- 'POST/wallet/rollback' (idempotent)
İmza HMAC, 'Timestamp', 'Nonce', təkrarlama qorunması (TTL ≤ 60 c).
17) Regional hallar və onları necə bağlamaq olar
Oyunçu əlaqəsinin kəsilməsi: bahis göndərilib, təsdiq yoxdur → eyni 'Idempotency-Key' ilə təkrar; server əvvəlki statusla cavab verəcəkdir.
Raundda diler/palodların dəyişdirilməsi: avtomatik ləğv və tam 'rollback'.
Valyuta uyğunsuzluğu: 'CURRENCY _ MISMATCH' + hadisə jurnalı; oyun seans yenidən buraxılana qədər bloklanır.
Oyun zamanı özünü-exclusion: dərhal 'force _ close _ session', oynanılmamış geri qaytarılması.
Video keyfiyyətinin dəyişdirilməsi: yalnız müştəri, zamanlayıcılara/bahislərə təsir etmədən.
Re-hendshake WebSocket: nizam itkisiz - 'seq', 'doqonka' ilə hadisələr növbəsi.
18) Production-buraxılış çek siyahısı
Təhlükəsizlik
- mTLS + pinning sertifikat, IP-allowlist.
- Bütün webhook 'ların imzası və yoxlanılması 'Timestamp '/' Nonce'.
- Mini-PII: yalnız 'player _ id' (tokenləşdirilmiş).
Etibarlılıq
- Bütün pul əməliyyatlarının idempotentliyi.
- Tur repleylər və dəyişməz audit.
- Auto-folback WebRTC → LL-HLS.
Məhsul
- Limitlər/məsuliyyətli oyun real vaxt tətbiq olunur.
- Bahis anında yerli ipuçları.
- SLO Dashbord + 24/7 Alert.
Canlı oyunların API inteqrasiyası - mesajlaşma, tayminq və təhlükəsizlik qaydalarına ciddi tələbləri olan aşağı axın, hadisə şinləri və idempotent pul kisəsinin bir dəstidir. Uğurlu reallaşma: bahislərin və raundların ciddi həyat dövrünə, yoxlanılan sabitliyə (reconciliation), məlumatların qorunmasına və məsuliyyətli oyunun limitlərinə əsaslanır və «gözəl yayımı» etibarlı, sertifikatlı maliyyə məhsuluna çevirir.