Платформага Live оюндарынын API байланышы кандай иштейт
1) жалпы архитектура жана компоненттеринин ролу
Оператор платформасы (Casino Platform): эсептер, капчык, бонустук кыймылдаткыч, лимиттер, KYC/AML, транзакциялар журналы.
Live-оюн провайдери (Studio/Provider): студиялар, дилерлер, видео агымдар (WebRTC/Low-Latency HLS), раунддун оюн сервери.
Агрегатор (кээде): ондогон провайдерлерге бирдиктүү API, валюталарды/лимиттерди/окуяларды унификациялоо.
Кардар Frontend: UI коюмдар менен веб/мобилдик кардар, Video Player, чат, жергиликтүү кеңештер.
Көмөкчү кызматтар: Risk/Anti-fraud, логика, аналитика, билдирүү кезектери (Kafka/RabbitMQ), мониторинг.
Типтүү топология: кардар → (JWT) → платформа → (server-to-server) → провайдер, ошол эле учурда кардар CDN/медиа-серверлердин пулунан видео агымын алат.
2) оюнчу жана сессиянын жашоо цикли
2. 1. Логин жана "оюн токени"
1. Оюнчу платформада авторизацияланат.
2. Платформа провайдерден CreateGameSession чакырат (S2S), берет 'player _ id', 'currency', 'country', 'bet _ limits', жооптуу оюндун желектери.
3. Провайдер бир жолу колдонулуучу game_token жана launch_url кайтарат.
4. Кардар 'game _ token' кошуу менен iframe/жаңы өтмөктө 'launch _ url' ачат (же акыркы URL оюнда 302 алат).
S2S-суроо мисал: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"
}
}
Провайдердин жообу:
json
{
"game_token": "gtkn_7f0...e2a", "launch_url": "https://live. provider. com/launch/roulette", "expires_in": 900
}
2. 2. Алдыңкы аутентификация
Оюн жүктөлүп, бекенд аркылуу 'game _ token' тастыктайт.
Коюмдар/окуялар үчүн оюн серверине WebSocket орнотулат.
Video агымы WebRTC (төмөн кечигүү 0. 5-2 с) же LL-HLS (2-5 с).
3) Акча жана коюм: Wallet API жана демпотенттик
3. 1. Баланс жана дебет/кредит
Провайдер оюнчунун "акчасын" сактабайт - ал Platform Wallet API чакырат:- `GET /wallet/balance? player_id' → учурдагы жеткиликтүү.
- 'POST/wallet/debit' → ченди эсептен чыгаруу.
- 'POST/wallet/credit' → утуп/кайтарып алуу.
- 'POST/wallet/rollback' → раундду жокко чыгарууда транзакцияны кайтаруу.
Маанилүү: бардык акча операциялары 'transaction _ id '/' round _ id' боюнча демпотенттик. Бир эле суроону кайталоо натыйжаны өзгөртпөйт.
Дебеттин мисалы (коюм):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. Таймингдер жана статустар
WINDOW_OPEN → WINDOW_CLOSING → WINDOW_CLOSED. Кийин 'WINDOW _ CLOSED' провайдер жаңы дебеттерге тыюу салат.
Кеч коюмдар 'LATE _ BET' коду менен четке кагылат.
Байланыш үзүлгөндө кардар коюмду кайра жөнөтө алат - сервер Idempotency-Key боюнча дубликатты айырмалай билиши керек.
Транзакциялардын статусу: 'PENDING', 'SETTLED', 'ROLLED _ BACK', 'REJECTED'.
4) Раунддун окуялары: модель жана кезек
4. 1. WebSocket боюнча окуялар схемасы
`round. started '→ келет' round _ id ', таймер коюм.
`bet. accepted/rejected '→ ар бир чен боюнча ырастоо.
`round. closed '→ коюмдар мындан ары кабыл алынат.
`round. result '→ натыйжасы (рулетка сектору/карта/сөөк).
`payout. created '→ оюнчу боюнча утуш суммасы.
`round. settled '→ акыркы абалы, контролдук суммасы.
Жыйынтык окуясы: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. Шайкештик жана контролдук суммалар
Ар бир иш-чара 'seq' жана 'signature' (mTLS + өтүнүч денесинин кол тамгасы) менен камсыз кылынат.
reconciliation үчүн 'payout _ checksum' деп көрсөтүлөт - 'round _ id' боюнча бардык кредиттердин суммасы биригиши керек.
5) Video агымы жана кечигүү
WebRTC коюмдар үчүн "тирүү колу" (blackjack/баккара/рулетка) - кардар үчүн катуу кечигүү бюджети <2 с.
көрүүчүлөр/масштабы үчүн LL-HLS/DASH, 2-5 с жол берет.
убакыт синхрондоштуруу: NTP/chrony, PayLoad - 'video _ ts' репликалар жана талаш-тартыштар үчүн.
Folback: WebRTC → кеч чендерди бөгөттөө менен LL-HLS үчүн auto которуу деградация менен.
6) Каталар, retrailer, таймауттар
Жалпы эрежелер:- Бардык S2S чалуулар 800-1500 ms, экспоненциалдык тыныгуу жана Jitter менен retrais, бирок акча кайра эсептен жок (idempotentity).
- `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) Бонустар, Frispins, камсыздандыруу
8) жоопкерчиликтүү оюн жана чектөөлөр
Сессиянын желектери: 'self _ excluded', 'cooldown _ until', 'loss _ limit _ left', 'time _ limit _ left'.
Провайдер ар бир дебеттин алдында 'validate _ limits' деп сурай алат.
Платформа force_close_session башташы мүмкүн: оюнчу четтетилди/лимиттен ашты → провайдер коюмдардын терезесин жаап, ойнобогон коюмдарды кайтарып берет.
9) Коопсуздук жана комплаенс
mTLS S2S үчүн, HSTS, катуу IP-allowlist.
JWT/JWS frontal токендер үчүн кыска TTL менен, audience/issuer текшерүү.
Интернет-провайдердин кол тамгасы (дененин үстүнөн HMAC-SHA256).
Дилерлердин иш-аракеттеринин логдору, раунддардын репликалары, өзгөрүлбөгөн аудит (WORM-сактоо).
Жеке маалыматтарды сактоо - PII минималдаштыруу, 'player _ id' токендештирүү, юрисдикция боюнча сактоо мөөнөтү (GDPR жана аналогдор).
CreateGameSession деъгээлинде гео-кулпу жана юрисдикция боюнча тыюу салуулар.
10) Reconciliation жана каржы
10. 1. Сааттык/күнүмдүк отчеттор
Провайдер 'round _ id → total_bets, total_wins, fees' боюнча отчет берет. платформа кыскартат:- Дебеттердин суммасы = Σ коюмдар, Кредиттердин суммасы = Σ утуштар + кайтарымдар, Delta = GGR (бонустарды/джекпотторду/комиссияларды эске алуу менен).
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 сценарийлери
Video/storyboard → round. cancelled: провайдер раунддагы бардык коюмдарга 'rollback' жөнөтөт.
Платформада кармалган кош дебетти иштетүү → 'DUPLICATE _ TRANSACTION' жана ошол эле натыйжа менен 200 OK.
11) Чат, модерация жана UI окуялар
Чат окуялары өзүнчө канал аркылуу өтөт (WebSocket № 2) токтоочу сөздөр боюнча чыпкалар менен.
Системалык кулактандыруулар (close bets, winner list) - провайдердин ишенимдүү булагынан гана кол коюлган/таймстампацияланган.
12) тестирлөө жана күбөлүк
Sandbox провайдер: белгиленген натыйжалары, күч 'round мүмкүнчүлүгү. result`.
Контур QA: кыскартылган чендердин терезелери менен сыноо таблицасы (5-8 с) жана тездетилген флоу.
Жүктөө: тууроо 5-10 мин. Бир убакта оюнчулар, секундасына жогорку дебаттар (TPS) ≥ пландаштырылган × 1. 5.
Интеграцияны сертификациялоо: демпотенттүүлүк, валюталар, тегеректөө, өчүрүүлөрдү иштетүү, лимиттерге шайкештик жана өзүн-өзү пайдалануу боюнча чек баракчалары.
13) Метрика жана SLO
Алар: median/95p latency үчүн 'debit/credit', WebSocket round-trip, убакыт синхрондоштуруу ката, drop-rate WebRTC.
Продукт: bet acceptance rate, late-bet rate, dispute rate, chargeback rate, session duration, retention, ARPU/LTV.
SLO мисалдар:99. 5% `debit` ≤ 1. 2 с, 99. 9% жеткирүү 'round. result '≤ 300 ms кийин бекитүү, Video колдоо ≤ 2. 5 үчүн 95p WebRTC.
14) Көп валюта, салыктар, локалдаштыруу
Конвертация - провайдерден тышкары: оюн катуу сессиянын валютасында иштейт.
Салыктар/чегерүүлөр - платформа тарабында 'credit' ('witholding' талаасы).
Локализация: 'lang', сандар/валюта форматы, таймерлер жана отчеттор үчүн убакыт зонасы.
15) Интеграция параметрлери
1. Direct-to-Provider: максималдуу контролдоо жана fich, бирок айрым келишимдер/күбөлөндүрүү.
2. Агрегатор аркылуу: провайдерлер тарабынан тез жабуу, бирдиктүү схемалар, кээде ийкемдүүлүк азыраак.
3. Гибрид: топ-столдор түздөн-түз, калганы агрегатор аркылуу.
16) Mini Specification (жалпы)
16. 1. WebSocket кириш (кардардан провайдерге)
json
{ "type":"bet. place", "bet":{
"amount": 25, "selection":"17", "table_id":"ru-11"
}, "idempotency_key":"c3a2-...-001" }
16. 2. WebSocket жөнөтүүлөр (провайдерден кардарга)
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 (платформа, провайдер)
'POST/wallet/debit'- 'POST/wallet/credit'
- 'POST/wallet/rollback'
HMAC кол, 'Timestamp', 'Nonce', кайталоо коргоо (TTL ≤ 60 c).
17) Четки учурларда жана аларды жабуу үчүн кантип
Ойноткучтун байланышы үзүлдү: коюм жөнөтүлдү, ырастоо жок → ошол эле "Idempotency-Key" менен кайталоо; Server мурунку статусу менен жооп берет.
айлампасы боюнча дилер/табак өзгөртүү: автоматтык жокко чыгаруу жана толук 'rollback'.
Валютанын дал келбегендиги: 'CURRENCY _ MISMATCH' + окуя журналы; оюн сессиянын кайра чыгаруу чейин бөгөттөлгөн.
оюн учурунда өзүн-exclusion: токтоосуз 'force _ close _ session', ойнобогон кайтаруу.
Video сапатын өзгөртүү: гана кардар, убакыт/чендерди таасир жок.
Re-Хендшейк WebSocket: тартипти жоготпостон - "seq" менен окуялардын кезеги, сагынгандардын "догонкасы".
18) Production-ишке чек тизмеси
Коопсуздук
- mTLS + PIN күбөлүк, IP-allowlist.
- Бардык webhook's кол & текшерүү 'Timestamp '/' Nonce'.
- Mini PII: гана 'player _ id' (токендүү).
Ишенимдүүлүк
- Бардык акча операцияларынын идемпотенттүүлүгү.
- тегерек репликалары жана өзгөрүлбөгөн аудит.
- Auto-folback WebRTC → LL-HLS.
Продукт
- Чектөөлөр/жоопкерчиликтүү оюн реалдуу убакыт колдонулат.
- Коюмдун учурундагы жергиликтүү кеңештер.
- Dashbord SLO + alerty 24/7.
Live оюндарынын API интеграциясы - бул билдирүүлөрдүн тартибине, таймингдерге жана коопсуздукка катуу талаптар коюлган төмөн агымдын, окуя шинасынын жана идемпотенттик капчыктын байланышы. Ийгиликтүү ишке ашыруу төмөнкүлөргө таянат: коюмдардын жана раунддардын катуу жашоо цикли, текшерилүүчү консистенттүүлүк (reconciliation), маалыматтарды коргоо жана жоопкерчиликтүү оюндун лимиттери - жана "кооз трансляцияны" ишенимдүү, тастыкталган финансылык продуктуга айландырат.