الاحتمالات والمراهنات وقسائم اللعب — الوثائق الفنية لواجهة API
يحتوي هذا الملف على الحد الأدنى من البرنامج النصي المستقل للاتصال بنظام حساب القسيمة SportAPI. التفاصيل والحالات النادرة موجودة في الوثائق الكاملة.
POST /api/partner/login
POST /api/partner/coupons/place
GET /api/partner/coupons/calculated?time=10 1. ما تحتاج إلى الحصول عليه من المدير
- واجهة برمجة تطبيقات URL الأساسية؛
- تسجيل الدخول إلى حساب العميل وكلمة المرور؛
- عند استخدام رد الاتصال - قم بتمكين الوظيفة والعبارة السرية
callback_secret.
تستخدم الأمثلة عنوانًا شرطيًا:
BASE_URL="https://coupon-api.example.com"
في الإنتاج، استخدم HTTPS. يتم إرسال كافة التواريخ كطابع زمني لنظام Unix بالمللي ثانية، ويتم إرسال القيم النقدية كأرقام عشرية دون دقة ثابتة.
2. تنسيق استجابة API
النجاح:
{
"code": 1,
"body": {},
"error_code": null,
"error_message": null,
"date": 1784970000000,
"time_ms": 5,
"path": "/api/partner/example"
}
عادةً ما يأتي خطأ العمل أيضًا مع HTTP 200:
{
"code": 0,
"body": null,
"error_code": 1002,
"error_message": "Not all params",
"date": 1784970000000,
"time_ms": 5,
"path": "/api/partner/example"
}
تحقق دائمًا من رمز HTTP، ثم code، ثم error_code. لا تستخدم النص error_message كمفتاح برنامج.
3. إذن
POST /api/partner/login
Content-Type: application/json
{
"username": "partner-demo",
"password": "strong-password"
}
يتم دعم الحقل login كاسم مستعار متوافق username.
الاستجابة الناجحة:
{
"code": 1,
"body": {
"token": "<jwt-token>",
"user_id": 17,
"username": "partner-demo"
},
"error_code": null,
"error_message": null
}
في كافة الطلبات المحمية، قم بتمرير:
Authorization: Bearer <jwt-token>
أخطاء تسجيل الدخول الأساسية:
| الكود | السبب |
|---|---|
1002 | لم يتم إرسال تسجيل الدخول أو كلمة المرور. |
1003 | تسجيل الدخول غير معروف أو كلمة المرور غير صحيحة. |
1004 | تم تعطيل حساب العميل. |
1006 | لقد انتهى تاريخ الوصول. |
1007 | رصيد العميل صفر أو سلبي. |
يتم إرجاع هذه الأخطاء من HTTP 200، code = 0. يعني HTTP 401 للطريقة المحمية أن JWT مفقود أو غير صالح أو منتهية الصلاحية أو ملغى؛ قم بتسجيل الدخول مرة أخرى. HTTP 403 يعني أن الدور غير المناسب أو تم رفض الوصول.
4. مؤشر المعدل
يتم إرسال كل نتيجة محددة كخط جاهز من الخط الرياضي:
line_type#game_id#group_id#type_id#rate#coefficient[#player_id]
أمثلة:
line#737779544#1#1#0#1.85
live#738917381|119|5869|0.5#3.6#149439538
line_type:lineأوlive؛rate: معلمة الإجمالي/العائق أو0؛player_id: معرف اللاعب الاختياري؛- المحددات
#و|مدعومة.
لا تجمع المؤشر أو تصححه يدويًا - قم بتمرير القيمة التي تم الحصول عليها من السطر دون تغيير.
5. إنشاء قسيمة
POST /api/partner/coupons/place
Authorization: Bearer <jwt-token>
Content-Type: application/json
{
"list_bets": [
"line#737779544#1#1#0#1.85"
],
"amount": 10,
"currency": "USD",
"callback_url": "https://partner.example.com/api/coupon-result",
"lang": "en",
"mode": "reject",
"mode_type": null,
"multi": false
}
| الميدان | إلزامية | الغرض |
|---|---|---|
list_bets | نعم | مؤشر واحد أو أكثر. |
amount | نعم | المبلغ الإيجابي للقسيمة الواحدة التي يتم إنشاؤها. |
currency | لا | أي تسمية سلسلة، بما في ذلك العملة الافتراضية. |
callback_url | لا | رد اتصال URL؛ بدون رد اتصال لا يمكنك إرساله، يمكنك تمرير null أو سلسلة فارغة أو مجال موقع. |
lang | لا | رمز مكون من حرفين لواحدة من حوالي 50 لغة مدعومة. لغة الأسماء ثابتة عند الخلق. |
mode | لا | reject أو accept؛ الافتراضي reject. |
mode_type | ل accept | الاتجاه المسموح به لتغير المعامل. |
multi | لا | قسيمة عامة واحدة أو قسيمة فردية؛ الافتراضي false. |
الصعاب
| الإعدادات | السلوك |
|---|---|
mode = reject | رفض الإنشاء عندما يتغير المعامل. |
mode = accept، mode_type = 1 | قبول العروض الترويجية فقط. |
mode = accept، mode_type = 2 | قبول خفض الرتبة فقط. |
mode = accept، mode_type = 3 | قبول أي تغيير. |
عادي، صريح وmulti
| طلب | النتيجة | شطب رصيد العميل |
|---|---|---|
| نتيجة واحدة | واحدة عادية | amount |
نتائج متعددة، multi = false | واحد صريح | amount |
نتائج متعددة، multi = true | واحدة منفصلة لكل نتيجة | amount × عدد القسائم التي تم إنشاؤها |
لا يمكن أن يحتوي القطار السريع الواحد على أكثر من 15 حدثًا. لا يمكنك الجمع بين رهانات متعددة على نفس المباراة، بما في ذلك المباراة الرئيسية، الشوطين، الفترات، الضربات الركنية، الأخطاء والأحداث الفرعية الأخرى ذات الصلة. تُرجع هذه المجموعة 506.
6. تأكيد القسيمة وإنشاء العطاء
استجابة ناجحة كاملة مع القسيمة وبيانات الرهان المقبولة داخل events_data:
{
"code": 1,
"body": {
"coupons": [
{
"coupon_code": "000000000272",
"amount": 10,
"win": 18.5,
"potential_win": 18.5,
"real_win": null,
"coef": 1.85,
"original_coef": 1.85,
"calculate_coef": null,
"has_return": false,
"date": 1784970000000,
"status": 0,
"asian": false,
"calculate_date": null,
"coupon_type": 1,
"events_count": 1,
"events_data": [
{
"id": 912,
"game_id": 737779544,
"main_game_id": 737779544,
"is_sub_game": false,
"parent_game_id": null,
"sub_game_key": null,
"raw_pointer": "line#737779544#1#1#0#1.85",
"line_type": "line",
"is_live": false,
"bet_group_id": 1,
"bet_group_name": "Match result",
"bet_id": 1,
"bet_name": "First team to win",
"sport_id": 1,
"sport_name": "Football",
"tournament_id": 10001,
"tournament": "National League",
"event_date": 1784971800000,
"status": 0,
"opp1": "Team A",
"opp2": "Team B",
"coef": 1.85,
"calc_coef": null,
"bet_score": "line#737779544#1#1#0#1.85",
"calculate_date": null,
"calculate_score": null,
"settlement_reason_code": null,
"settlement_reason": null,
"placement_score_full": null,
"placement_score_periods": null,
"calculation_score_full": null,
"calculation_score_periods": null,
"timer": null,
"dop_name": null,
"rate": "0",
"sgame_id": null,
"game_num": null,
"stat_id": null,
"team1_id": 101,
"team2_id": 102,
"opp_icon1": 101,
"opp_icon2": 102
}
]
}
]
},
"error_code": null,
"error_message": null,
"date": 1784970000015,
"time_ms": 45,
"path": "/api/partner/coupons/place"
}
حقول القسيمة
كل عنصر body.coupons[] عبارة عن قسيمة منفصلة تم إنشاؤها.
| الميدان | اكتب | معنى |
|---|---|---|
coupon_code | string | رمز القسيمة العام المكون من 12 رقمًا. قم بالتخزين كسلسلة لتجنب فقدان الأصفار البادئة. |
amount | number | مبلغ القسيمة المحول عند الإنشاء. |
win | number | المبلغ الفائز الحالي المعروض. |
potential_win | number | المكاسب المحتملة قبل التسوية النهائية. |
real_win | number/null | مبلغ الدفع الفعلي بعد الحساب؛ قبل الحساب - null. |
coef | number | نسبة القسيمة الحالية أو النهائية. |
original_coef | number | المعامل الإجمالي للقسيمة وقت إنشائها. |
calculate_coef | number/null | المعامل المحسوب النهائي؛ قبل الحساب - null. |
has_return | boolean | true، إذا كانت القسيمة تحتوي على رهان بحالة استرداد. |
date | integer | تاريخ إنشاء القسيمة، الطابع الزمني لنظام Unix بالمللي ثانية. |
status | integer | حالة القسيمة الحالية. القيم موضحة في قسم “القسيمة وحالة العطاء”. |
asian | boolean | علامة على وجود تسوية آسيوية منها نصف المكاسب أو الخسائر. |
calculate_date | integer/null | تاريخ حساب القسيمة بالمللي ثانية؛ قبل الحساب - null. |
coupon_type | integer | نوع القسيمة: 1 - عادي، 2 - سريع. |
events_count | integer | عدد الرهانات داخل القسيمة. |
events_data | array | المجموعة الكاملة من الرهانات المدرجة في القسيمة. |
حقول العطاء
يصف كل عنصر من عناصر events_data[] رهانًا محددًا مقبولًا داخل القسيمة.
| الميدان | اكتب | معنى |
|---|---|---|
id | integer/null | المعرف الداخلي للرهان المقبول. يُستخدم مع coupon_code للبحث عن سعر داخل قسيمة. |
game_id | integer | معرف الحدث أو الحدث الفرعي الذي تم وضع الرهان عليه. |
main_game_id | integer/null | معرف المباراة الرئيسية التي ينتمي إليها الحدث أو الحدث الفرعي. |
is_sub_game | boolean | true، إذا كان الرهان يتعلق بنصف أو فترة أو مجموعة أو زوايا أو حدث فرعي آخر. |
parent_game_id | integer/null | معرف الحدث الأصلي المباشر، إن وجد. |
sub_game_key | string/null | المفتاح الفني لحدث فرعي أو فترة. |
raw_pointer | string | مؤشر السعر الأصلي المقبول من قبل API. |
line_type | string | نوع الخط: line - ما قبل المباراة، live - حدث في الوقت الفعلي. |
is_live | boolean | true، إذا تم إنشاء الرهان على خط مباشر. |
bet_group_id | integer | معرف مجموعة الرهان أو السوق. |
bet_group_name | string/null | الاسم المحلي لمجموعة الرهان. |
bet_id | integer | معرف الاختيار المحدد ضمن مجموعة الرهان. |
bet_name | string/null | الاسم الكامل المترجم للتحديد المحدد. |
sport_id | integer/null | معرف الرياضة. |
sport_name | string/null | الاسم المحلي للرياضة. |
tournament_id | integer/null | معرف البطولة |
tournament | string/null | الاسم المحلي للبطولة. |
event_date | integer/null | تاريخ بدء الحدث، الطابع الزمني لنظام Unix بالمللي ثانية. |
status | integer | حالة حساب المعدل الحالي. لا ينبغي الخلط بينه وبين حالة القسيمة. |
opp1 | string/null | اسم الفريق الأول أو المشارك. |
opp2 | string/null | اسم الفريق الثاني أو المشارك. |
coef | number | احتمالات الرهان التي تم قبول الرهان عليها. |
calc_coef | number/null | مضاعف الرهان المحسوب؛ قبل الحساب - null. |
bet_score | string | حقل متوافق مع Legacy API يحتوي على مؤشر الرهان بدلاً من نتيجة المباراة. |
calculate_date | integer/null | تاريخ حساب المعدل بالمللي ثانية؛ قبل الحساب - null. |
calculate_score | string/null | الحساب المستخدم لحساب الرهان. |
settlement_reason_code | string/null | رمز الجهاز المستقر لسبب الدفع أو الإرجاع؛ قبل الحساب - null. |
settlement_reason | string/null | نص توضيحي لسبب الدفع أو الإرجاع؛ قبل الحساب - null. |
placement_score_full | string/null | إجمالي نقاط الحدث في وقت إنشاء الرهان، إذا كان ذلك متاحًا. |
placement_score_periods | string/null | النتيجة حسب الفترة في وقت إنشاء الرهان، إذا كان ذلك متاحًا. |
calculation_score_full | string/null | النتيجة الإجمالية للحدث في وقت تسوية الرهان. |
calculation_score_periods | string/null | الحساب حسب الفترة في وقت حساب السعر. |
timer | integer/null | مؤقت الحدث في وقت حفظ البيانات، إذا كان متاحًا. |
dop_name | string/null | اسم الحدث الفرعي: النصف، الفترة، المجموعة، الشوط، إلخ. |
rate | string | معلمة النتيجة، على سبيل المثال، قيمة الإجمالي أو الإعاقة؛ للحصول على نتيجة بدون معلمة - "0". |
sgame_id | string/null | المفتاح الخارجي للحدث الفرعي. |
game_num | integer/null | رقم اللعبة إذا ذكره المصدر. |
stat_id | string/null | معرف الحدث الإحصائي الخارجي. |
team1_id | integer/null | معرف الفريق الأول أو المشارك. |
team2_id | integer/null | معرف الفريق الثاني أو المشارك. |
opp_icon1 | integer/null | المعرف المتوافق لرمز الأمر الأول؛ يطابق team1_id. |
opp_icon2 | integer/null | معرف رمز الفريق الثاني المتوافق؛ يطابق team2_id. |
تعتبر القيمة null طبيعية بالنسبة للبيانات التي لم يتم حسابها بعد أو غير المتوفرة. لا تقم باستبدالها تلقائيًا بـ 0 أو السلسلة الفارغة.
اعتبر القسيمة مقبولة فقط في حالة وجود code = 1 وكائنات في body.coupons. قبل ذلك، تكون السلة خيارًا أوليًا: يمكن أن يختفي الاختيار أو يتم حظره أو تتغير الاحتمالات.
بعد النجاح:
- حفظ كافة كائنات
body.coupons، وليس الكائن الأول فقط؛ - قم بتخزين
coupon_codeكسلسلة ذات أصفار بادئة؛ - حفظ البيانات المطلوبة من
events_data؛ - مطابقة القسيمة مع المستخدم النهائي؛
- تسجيل المعاملات المالية للمستخدم في نظام الشريك.
المعرفات:
| الميدان | الغرض |
|---|---|
coupon_code | رمز القسيمة العامة. |
events_data[].id | معرف الرهان المقبول المحدد داخل القسيمة. |
رد الاتصال events_data[].uuid | نفس معرف العطاء، تم تمريره كسلسلة. |
batchId | معرف إصدار حزمة رد الاتصال، وليس القسيمة أو السعر. |
لم يتم إرجاع currency في النموذج الكامل ورد الاتصال. إذا كانت العملة مطلوبة، فاحفظ القيمة من طلب الإنشاء.
7. أخطاء الخلق
| الكود | السبب | العمل |
|---|---|---|
10 | لا توجد هيئة الطلب. | تصحيح الطلب. |
11 | المؤشر غير صالح. | الحصول على المؤشر الحالي من السطر. |
12 | amount غير صالح. | تمرير رقم إيجابي. |
501 | لقد تغير المعامل. | إظهار قيمة جديدة أو تغيير mode. |
502 | ليس هناك نتيجة. | إزالة/تحديث العطاء في سلة التسوق. |
503 | تم حظر النتيجة. | الإبلاغ عن عدم التوفر المؤقت. |
504 | خطأ في التحقق من النتيجة. | لا تعتبر القسيمة مقبولة؛ كرر لاحقا. |
506 | في الرهانات السريعة مباراة واحدة. | اترك نتيجة واحدة أو استخدم فرديًا منفصلاً. |
507 | عدم كفاية رصيد العميل. | قم بزيادة رصيدك أو تقليل المبلغ الإجمالي. |
1002 | مجموعة المعلمات غير صالحة. | المعلمات الصحيحة. |
10000 | خطأ داخلي. | سجل الخطأ وتحقق من النتيجة قبل إعادة المحاولة. |
بالنسبة إلى 501–504، تقوم واجهة برمجة التطبيقات (API) الجديدة بإرجاع المعدلات التي بها مشاكل في body.changes[]. الحقل change_type: 1 - زاد المعامل، 2 - انخفض، null - الاتجاه غير قابل للتطبيق.
لا تقم بإعادة محاولة POST /coupons/place بشكل أعمى بعد انتهاء المهلة: ربما تم قبول الطلب الأول وستؤدي إعادة المحاولة إلى إنشاء نسخة مكررة.
8. تلقي كوبونات
| العملية | نقطة النهاية | النتيجة |
|---|---|---|
| قسيمة واحدة | GET /api/partner/coupons/get?coupon_code={code} | قسيمة في body. |
| نشط | GET /api/partner/coupons/active | صفيف في body[]. |
| الحسابات الأخيرة | GET /api/partner/coupons/calculated?time=10 | صفيف في body[]؛ الحد الأقصى 120 دقيقة. |
| حسب الرمز/الفترة | POST /api/partner/coupons/results | صفيف في body.coupons. |
| رصيد العميل | GET /api/partner/balance | body.balance. |
يمكنك نقل ما يصل إلى 100 قيمة باستخدام الرموز:
{
"coupon_ids": ["000000000272", "000000000273"]
}
أو اجتياز فترة الإنشاء بما لا يزيد عن 24 ساعة:
{
"start_date": 1784880000000,
"end_date": 1784966400000
}
لا تقم بدمج coupon_ids والتواريخ في نفس الاستعلام. تقوم results بتصفية البيانات حسب وقت الإنشاء، وتصفية calculated حسب وقت التسوية النهائية.
9. حالات القسيمة والرهان
حالات القسيمة:
| الكود | معنى | نهائي |
|---|---|---|
0 | نشطة أو مستقرة جزئيا. | لا |
2 | فاز. | نعم |
4 | ضائع. | نعم |
8 | ردها بالكامل. | نعم |
15 | عاد لإعادة الحساب. نتوقع نتيجة جديدة. | لا |
حالات العطاء:
| الكود | معنى | calc_coef |
|---|---|---|
0 | غير محسوبة. | null |
1 | الفوز. | المعامل الأصلي |
2 | خسارة. | 0 |
3 | العودة. | 1 |
4 | في انتظار إعادة الحساب. | null |
21 | نصف المكاسب. | (coef + 1) / 2 |
22 | نصف الخسارة. | 0.5 |
23 | ادفع. | 1 |
للحصول على الاستحقاق المالي للمستخدم النهائي، استخدم real_win الجاهزة. لا تستخدم potential_win ولا تقم بإعادة حساب الدفعة بنفسك. قبل الحساب، real_win، calculate_coef، calc_coef وcalculate_date تساوي null، وليس 0.
في الحالة الأولى للقسيمة 15، إذا تمت معالجة النتيجة السابقة ماليًا بالفعل، يقوم الشريك مرة أخرى بخصم amount من المستخدم النهائي، ويتوقع حالة نهائية جديدة ويفرض رسوم real_win جديدة. حماية العمليات من إعادة المعالجة.
10. سبب الحساب
يحتوي كل رهان في النموذج الكامل ورد الاتصال على:
| الميدان | الغرض |
|---|---|
settlement_reason_code | رمز سبب الدفع/الاسترداد المستقر. |
settlement_reason | نص المصدر التوضيحي. |
قبل الحساب، كلا الحقلين يساوي null. للحصول على إشعار مترجم، استخدم رمزًا مثل:
MATCH_POSTPONED- تم تأجيل المباراة؛MATCH_CANCELLED- تم إلغاء المباراة؛MARKET_PUSH- الإرجاع وفقًا لقواعد السوق.
إذا كان الرمز غير معروف، فاحفظه واستخدم settlement_reason غير الفارغ كنص احتياطي. لا تحسب الدفع حسب السبب - استخدم الحالات وreal_win.
تشرح هذه الحقول الحساب أو الإرجاع الذي تم إجراؤه بالفعل، وهي ليست خلاصة منفصلة في الوقت الفعلي لحالة المطابقة.
11. رد الاتصال
رد الاتصال اختياري. لا يمكن للشريك العمل إلا من خلال الاقتراع. بالنسبة لرد الاتصال، يجب على المدير تمكين الوظيفة وإنشاء callback_secret؛ يتم إرسال عنوان URL في كل قسيمة يتم إنشاؤها.
يحدد الشريك عنوان URL لرد الاتصال بشكل مستقل. في الإنتاج يجب أن يستخدم https://؛ في بيئة الاختبار، يُسمح بـ http://.
يرسل النظام:
POST {callback_url}
Content-Type: application/json
X-Coupon-Signature: sha256=<hex_hmac_sha256>
الحمولة القصيرة:
{
"event": "coupons.settled",
"batchId": "d407e986f3a64d9d36a77bf532322ef8",
"couponCount": 1,
"coupons": [
{
"coupon_code": "000000000272",
"realWin": 18.5,
"calculate_coefficient": 1.85,
"status": 2,
"calculate_date": 1784973600000,
"events_data": [
{
"uuid": "912",
"status": 1,
"calculate_coefficient": 1.85,
"calculate_date": 1784973600000,
"calculate_score": "2:1",
"settlement_reason_code": "REMOTE_WIN",
"settlement_reason": "Win",
"timer": 0
}
]
}
]
}
القواعد الإلزامية:
- حساب
sha256=<hex(HMAC-SHA256(raw_body, callback_secret))>من بايتات المصدر الدقيقة للنص قبل تحليل JSON ومقارنة التوقيعات بطريقة آمنة؛ - معالجة كافة العناصر
coupons، يمكن أن تحتوي الحزمة على ما يصل إلى 100 قسيمة؛ - تخزين
batchIdبفهرس فريد؛ - يجب ألا يكرر
batchIdالشطب أو الاستحقاق؛ - يمكن أن يأتي
coupon_codeمعbatchIdمختلفًا أثناء الحساب التدريجي وإعادة الحساب؛ - لا تُرجع HTTP
200إلا بعد تخزين الحزمة بالكامل بشكل آمن.
الحد الأدنى للاستجابة الناجحة هو HTTP 200 فارغ. متقدم:
{
"success": true,
"processed": 1
}
يجب أن يساوي processed couponCount. لا تعتبر الاستجابات 201 و202 و204 ناجحة.
يتم إجراء عمليات الإعادة فقط في حالة انتهاء المهلة أو خطأ النقل أو HTTP 500، 502، 503، 504: على الفور، ثم بعد 1 و5 و15 و60 دقيقة - بما لا يزيد عن خمس عمليات إرسال. لا توجد إعادة محاولة تلقائية على HTTP 200 باستخدام success: false أو processed الجزئي.
12. الاقتراع الاحتياطي
حتى مع رد الاتصال، تحقق بشكل دوري من النتائج:
GET /api/partner/coupons/calculated?time=10
بعد استراحة لأكثر من 120 دقيقة، استخدم POST /api/partner/coupons/results على coupon_ids المحفوظة أو فترات الإنشاء التي تصل إلى 24 ساعة. إن الحصول على نفس الثروة مرة أخرى لا ينبغي أن يكرر المعاملات المالية.
13. الأمن والتخزين
- تخزين تسجيل الدخول وكلمة المرور وJWT و
callback_secretفقط على الخادم؛ - لا تمرر JWT في عنوان URL ولا تكتب الرمز المميز الكامل في السجلات؛
- استخدام النوع العشري مقابل المال؛
- قم بتخزين
coupon_codeكسلسلة؛ - حفظ
amount، وبيانات العطاء المطلوبة وcurrency، في حالة استخدامها؛ - التمييز بين حالات القسيمة وعروض الأسعار؛
- قبول الحقول غير المعروفة ورموز الأسباب دون أخطاء؛
- جعل جميع المعاملات المالية للمستخدم النهائي غير فعالة.
14. واجهة برمجة التطبيقات القديمة والسحب النقدي
يستمر دعم المسارات القديمة، ولكن يجب أن تستخدم عمليات التكامل الجديدة /api/partner/**. الإجابات والأخطاء القديمة لها تنسيقات مختلفة. لتحديث عميل موجود، استخدم ملفًا واحدًا “الترحيل من واجهة برمجة التطبيقات القديمة”.
Cashout قيد التطوير، ولم يتم اختباره بالكامل ولا يوصى بإنتاجه.
15. قائمة المراجعة النهائية
- تم استلام
BASE_URLوتسجيل الدخول وكلمة المرور. - يتم إرسال JWT كرمز مميز لحامله.
- يتم أخذ المؤشرات من السطر دون تعديل.
- يتم حفظ سلة التسوق كقسيمة مقبولة فقط بعد
code = 1. - تمت معالجة
multi، والقيود والأخطاء السريعة501–507. - وقد تم أخذ الشطب التلقائي لرصيد العميل بعين الاعتبار.
- يتم حفظ جميع معرفات
coupon_codeومعرفات العطاءات. - يتم أخذ العائد النهائي من
real_win. - يتم التحقق من رد الاتصال مقابل وحدات البايت المصدر وإلغاء تكراره باستخدام
batchId. - تم تكوين الاقتراع الاحتياطي.
- رصيد المستخدم منفصل عن رصيد العميل SportAPI.
تبدأ الوثائق التفصيلية بـ نظرة عامة على واجهة برمجة التطبيقات. خريطة نقطة النهاية الكاملة موجودة في يدويًا.