چگونه API برای اتصال بازی های زنده به پلت فرم کار می کند
1) معماری مشترک و نقش جزء
پلت فرم اپراتور (پلت فرم کازینو): حساب ها، کیف پول، موتور پاداش، محدودیت ها، KYC/AML، ورود به سیستم معامله.
ارائه دهنده بازی زنده (استودیو/ارائه دهنده): استودیوها، نمایندگی مجاز و فروش، جریان های ویدئویی (WebRTC/Low-Latency HLS)، دور سرور بازی.
Aggregator (گاهی اوقات): یک API واحد برای ده ها تن از ارائه دهندگان، اتحاد ارزها/محدودیت ها/رویدادها.
ظاهر مشتری: مشتری وب/تلفن همراه با UI شرط بندی، پخش ویدئو، چت، پیشنهادات محلی.
خدمات کمکی: ریسک/ضد تقلب، ورود به سیستم، تجزیه و تحلیل، صف پیام (Kafka/RabbitMQ)، نظارت.
توپولوژی معمولی: → مشتری (JWT) → پلت فرم (سرور به سرور) → ارائه دهنده، به موازات، مشتری یک جریان ویدئویی از استخر سرور CDN/رسانه دریافت می کند.
2) چرخه عمر بازیکن و جلسات
2. 1. ورود و «نشانه بازی»
1. بازیکن به پلت فرم وارد می شود.
2. این پلت فرم CreateGameSession را از ارائه دهنده (S2S) فراخوانی می کند، «player _ id»، «currency»، «country»، «bet _ limits»، پرچم های بازی مسئول را انتقال می دهد.
3. ارائه دهنده یک بار game_token و launch_url را برمی گرداند.
4. مشتری «launch _ url 'in an iframe/new tab» را باز می کند، با اضافه کردن «game _ token» (یا 302 را به URL نهایی بازی می دهد).
نمونه ای از یک درخواست S2S:وب سایت
POST/API/V1/جلسات
نوع محتوا: کاربرد/json
مجوز: حامل <platform_api_key>
{
"player_id": "u-918273"، "session_id": "sess-5f3b2"، "ارز": "EUR"، "کشور": "DE"، "lang": "de"، "bet_limits": {"min": 0. 5, "max": 2000} ", responsible_gaming": {"self _ excluded": غلط, "deposit_limit_left": 150} ", callback_urls": {
"تعادل": "https ://platform. به عنوان مثال. com/wallet/balance, "دبیت": "https ://platform. به عنوان مثال. com/wallet/debit», «اعتباری»: «https ://platform. به عنوان مثال. com/wallet/credit», «بازگشت «: «https ://platform. به عنوان مثال. com/wallet/rollback», «رویدادها»: «https ://platform. به عنوان مثال. کام/بازی/رویدادها"
}
}
پاسخ ارائه دهنده:
جی سون
{
"game_token": "gtkn_7f0...e2a," "launch_url": "https ://live. ارائه دهنده کام/راه اندازی/رولت», «expires_in": 900
}
2. 2. احراز هویت در جلو
بازی «game _ token» را از طریق backend خود تأیید می کند.
WebSocket به سرور بازی برای شرط/حوادث نصب شده است.
جریان ویدئو اجرا می شود بیش از WebRTC (تاخیر کم 0. 5-2 s) یا LL-HLS (2-5 s).
3) پول و شرط: API کیف پول و idemotence
3. 1. تعادل و بدهی/اعتبار
ارائه دهنده «پول» بازیکن را ذخیره نمی کند - آن را API پلت فرم کیف پول می نامد:- GET/کیف پول/تعادل ؟ player_id' → در حال حاضر در دسترس است.
- 'POST/کیف پول/بدهی → نوشتن کردن شرط.
- 'POST/wallet/credit' → برنده اعتبار/بازده.
- 'POST/wallet/rollback' → بازگرداندن یک معامله زمانی که یک دور لغو شده است.
مهم: تمام معاملات پولی 'transaction _ id '/' round _ id' است. تکرار همان سؤال نتیجه را تغییر نمی دهد.
مثال بدهی (نرخ):وب سایت
پست/کیف پول/بدهی
Idempotency-کلید: trx-7a2df-001
نوع محتوا: کاربرد/json
{
« :» u-918273 «،» : « »: «trx-7a2df-001»، «مقدار»: 25. 00، "ارز": "یورو"، "bet_type": "roulette_straight," "متا": {"جدول _ id":" ru-11"، "انتخاب":" 17"، "شانس": 35}
}
3. 2. زمان بندی و وضعیت شرط بندی
WINDOW_OPEN → WINDOW_CLOSING → WINDOW_CLOSED پس از «WINDOW _ CLOSED»، ارائه دهنده بدهی های جدید را ممنوع می کند.
پیشنهادات دیرهنگام با کد «LATE _ BET» رد می شوند.
اگر اتصال قطع شود، مشتری می تواند شرط را دوباره ارسال کند - سرور باید بتواند تکراری را با Idempotency-Key تشخیص دهد.
وضعیت معاملات: «در انتظار»، «حل و فصل»، «ROLLED _ BACK»، «رد شد».
4) رویدادهای دور: مدل و سفارش
4. 1. طرح رویداد WebSocket
دور میزند. آغاز شده است → می آید round _ id، تایمر شرط.
خوب شد. پذیرش/رد → تایید برای هر پیشنهاد.
دور میزند. شرط ها دیگر پذیرفته نمی شوند.
دور میزند. نتیجه → نتیجه (رولت/کارت/بخش استخوان).
تمام شد. ایجاد شده → مقدار برنده شده توسط بازیکن.
دور میزند. حل و فصل → وضعیت نهایی، checksum.
مثالی از یک نتیجه:جی سون
{
"نوع": "دور. نتیجه" "round_id": "r-2025-10-18-12:30:15Z-001," "table_id": "ru-11"، "بارگیری": {
«رولت»: {«شماره»: 17، «رنگ «:» سیاه»}، «هش»: «sha256: 8a7b... d1c»، «video_ts": «2025-10-18T12:30:23. 450Z"
}
}
4. 2. سازگاری و چک سام
هر رویداد با «seq» و «امضا» (mTLS + امضای بدن درخواست) عرضه می شود.
برای آشتی، «payout _ checksum» مشخص شده است - مجموع تمام اعتبارات «round _ id» باید همگرا باشد.
5) جریان ویدئو و تاخیر
WebRTC برای شرط بندی دست زندگی می کنند (بزور و با تهدید/یکنوع بازی ورق/رولت) - بودجه تاخیر سخت <2 بازدید کنندگان به مشتری.
LL-HLS/DASH برای بینندگان/مقیاس، اجازه می دهد 2-5 c.
هماهنگ سازی زمان: NTP/chrony، در payload - 'video _ ts' برای تکرار و اختلافات.
Folback: هنگامی که WebRTC کاهش می یابد، تغییر خودکار به LL-HLS → با مسدود کردن شرط های اواخر.
6) خطاها، Retras، زمان بندی
قوانین عمومی:- تمام تماس های S2S با وقفه 800-1500 ms، با مکث نمایشی و Jitter، اما بدون بازپرداخت پول (idempotency)، بازپرداخت می شود.
- «ناکافی _ بودجه»، «حد _ بیش از حد»، «حساب _ قفل شده»، «تکراری _ معامله»، «LATE _ BET»، «ارز _ عدم تطابق».
جی سون
{
"خطا": "INSUFFICIENT_FUNDS," "پیام": "تعادل 18. 00 <مورد نیاز 25. 00»، «transaction_id": «trx-7a2df-001»
}
7) پاداش، freespins، بیمه
8) بازی مسئولانه و محدودیت ها
پرچم های جلسه: «self _ excluded»، «cooldown _ until»، «loss _ limit _ left»، «time _ limit _ left».
ارائه دهنده می تواند درخواست کند «validate _ limits» قبل از هر بدهی.
این پلت فرم می تواند force_close_session را آغاز کند: بازیکن از حد مجاز حذف شده/فراتر رفته است ؛ ارائه دهنده پنجره شرط بندی را می بندد و در شرط های پخش نشده بازپرداخت می کند.
9) ایمنی و انطباق
mTLS برای S2S، HSTS، سخت IP allowlist.
JWT/JWS با TTL کوتاه برای توکن های جلویی، تأیید مخاطب/صادر کننده.
امضای webhooks ارائه دهنده (HMAC-SHA256 بر روی بدن).
سیاهههای مربوط به فعالیت فروشنده، پخش دور، حسابرسی غیر قابل تغییر (ذخیره سازی WORM).
ذخیره سازی اطلاعات شخصی - به حداقل رساندن PII، 'player _ id' tokenization، دوره های نگهداری صلاحیت (GDPR و آنالوگ ها).
مسدود کردن جغرافیایی و ممنوعیت های صلاحیت در سطح CreateGameSession.
10) آشتی و امور مالی
10. 1. گزارش های ساعتی/روزانه
ارائه دهنده گزارشی در مورد «round _ id → total_bets، total_wins، هزینه ها» ارائه می دهد. پلت فرم ترکیبی:- Debits = Σ شرط، اعتبار = Σ برنده + بازده، دلتا = GGR (از جمله پاداش/جکپات/کمیسیون).
جی سون
{
«تاریخ»: «2025-10-18»، «ارز»: «EUR»، «جداول»: [{
"table_id": "ru-11"، "دور": 1260، "total_bets": "45230. 00، total_payouts": 43012. 50، jackpot_contrib": 302. 00، provider_fee": 2. 5%"
}]
}
10. 2. سناریوهای برگشت
ویدئو/استوری بورد → دور شکست خورد. لغو شد: ارائه دهنده «بازگشت» را برای همه شرط ها در دور می فرستد.
پردازش دبیت دو گرفتار بر روی پلت فرم → 'DUPLICATE _ TRANSACTION' و 200 OK با همان نتیجه.
11) چت، اعتدال و رویدادهای UI
رویدادهای چت از طریق یک کانال جداگانه (WebSocket # 2) با فیلترهای متوقف می شوند.
اطلاعیه های سیستم (شرط های نزدیک، لیست برنده) - فقط از یک منبع ارائه دهنده قابل اعتماد، امضا شده/زمان بندی شده.
12) تست و صدور گواهینامه
ارائه دهنده Sandbox: نتایج ثابت، توانایی force 'round. نتیجه ".
QA contour: جدول تست با پنجره های شرط بندی کوتاه (5-8 c) و جریان سریع.
بار: شبیه سازی 5-10 هزار بازیکن به طور همزمان، بدهی اوج در ثانیه (TPS) ≥ × برنامه ریزی شده 1. 5.
صدور گواهینامه ادغام: چک لیست برای idempointency، ارز، گرد، قطع پردازش، انطباق با محدودیت ها و خود حذفی.
13) معیارها و SLO
کسانی که: متوسط/تاخیر 95p برای «بدهی/اعتباری», WebSocket رفت و برگشت, خطای هماهنگ سازی زمان, WebRTC قطره نرخ.
Продукт: نرخ پذیرش شرط, نرخ اواخر شرط, نرخ اختلاف, نرخ شارژ, مدت زمان جلسه, حفظ, ARPU/LTV.
مثال های SLO:99. 5٪ «بدهی» ≤ 1. 2 ثانیه، 99. 9٪ تحویل 'گرد. نتیجه '≤ 300 میلی ثانیه پس از تثبیت، تاخیر ویدئو ≤ 2. 5 ثانیه برای 95p WebRTC.
14) چند ارزی، مالیات، محلی سازی
تبدیل - خارج از ارائه دهنده: بازی کار می کند به شدت در ارز جلسه.
مالیات/کسر - در سمت پلت فرم با «اعتبار» (زمینه «خودداری»).
محلی سازی: «لنگ»، فرمت شماره/ارز، منطقه زمانی برای تایمر و گزارش.
15) گزینه های ادغام
1. مستقیم به ارائه دهنده: حداکثر کنترل و ویژگی، اما قراردادها/گواهینامه های جداگانه.
2. از طریق جمع کننده: پوشش سریع توسط ارائه دهندگان، طرح های یکپارچه، گاهی اوقات انعطاف پذیری کمتر.
3. Hybrid: جداول بالا به طور مستقیم، بقیه از طریق یک جمع کننده.
16) مینی مشخصات (مجموع)
16. 1. WebSocket ورودی (مشتری به ارائه دهنده)
جی سون
{"نوع ":" شرط. محل"، "شرط": {
«مقدار»: 25، «انتخاب»:» 17»، «table_id":"ru-11»
«idempotency_key":"c3a2-...-001»
16. 2. WebSocket خروجی (ارائه دهنده به مشتری)
جی سون
{"نوع ":" شرط. پذیرفته شده"، "bet_id":"b-8821," "seq ": 12031}
{"نوع ":" دور. بسته"، "round_id":"r-...001," "seq ": 12050}
{"نوع ":" دور. نتیجه" "نتیجه ": {"شماره ": 17،" رنگ":" سیاه"}، "seq ": 12070}
{"نوع ":" پرداخت. ایجاد شده"، "مقدار": 875، "ارز":" EUR"، "SEQ ": 12075}
16. 3. S2S کیف پول (ارائه دهنده ↔ پلت فرم)
'POST/wallet/debit' (idempotent)- 'POST/کیف پول/اعتبار' (idempotent)
- 'POST/wallet/rollback' (بی نظیر)
امضای HMAC، «زمان بندی»، «Nonce»، تکرار حفاظت (TTL ≤ 60 c).
17) موارد لبه و نحوه بستن آنها
قطع ارتباط بازیکن: شرط ارسال شده، بدون تأیید → تکرار با همان 'Idempotency-Key' ؛ سرور با همان وضعیت پاسخ خواهد داد.
تغییر فروشنده/عرشه در دور: لغو خودکار و کامل 'بازگشت'.
عدم تطابق ارز: «CURRENCY _ MISMATCH» + ورود به سیستم رویداد ؛ بازی مسدود شده است تا زمانی که جلسه دوباره منتشر شود.
خود حذفی در زمان بازی: فوری 'force _ close _ session', return unplayed.
تغییر در کیفیت ویدئو: فقط مشتری، بدون تاثیر بر تایمر/شرط.
WebSocket دوباره دست دادن: بدون از دست دادن نظم - صف حوادث با «seq»، «گرفتن» از دست رفته.
18) چک لیست راه اندازی تولید
امنیت و ایمنی
- mTLS + گواهی پینینگ، IP-allowlist.
- همه وب سایت ها را امضا کنید و «Timestamp »/« Nonce» را بررسی کنید.
- مینی PII: فقط 'player _ id' (tokenized).
قابلیت اطمینان
- هویت تمام معاملات پولی.
- تکرار دور و حسابرسی غیر قابل تغییر.
- WebRTC → LL-HLS بازگشت خودکار.
تولید - محصول
- محدودیت/بازی مسئولانه در زمان واقعی اعمال می شود.
- بومی در زمان شرط بندی می کند.
- داشبورد SLO + هشدار 24/7.
API یکپارچه سازی بازی زنده یک بسته نرم افزاری از جریان کم تاخیر، اتوبوس رویداد و کیف پول idemotent با شرایط سخت برای سفارش پیام، زمان بندی و امنیت است. اجرای موفقیت آمیز متکی بر: یک چرخه زندگی دقیق از شرط و دور، سازگاری قابل اثبات (آشتی)، حفاظت از داده ها و محدودیت های بازی مسئول - و تبدیل «پخش زیبا» به یک قابل اعتماد، محصول مالی گواهی شده است.