📱 توثيق دمج هدايا Lucky & Returnable
يحدد هذا المستند المتطلبات التقنية لدمج ميزات هدايا Lucky و Returnable الجديدة في التطبيق، مع التركيز على الأداء العالي والنتائج اللحظية.
1. API إرسال الهدايا (Sending Gifts)
يوصى باستخدام الـ Endpoint السريع للألعاب التي تتطلب استجابة فورية.
/api/v1/instant-send
البديل (المخزن): /api/v1/users/{user_id}/decorations/send
المעاملات (Request Parameters - Instant Send):
| Parameter | Type | Required | Description |
|---|---|---|---|
u_id |
Integer | Yes | ID of the sender (Authenticated User). |
decoration_id |
Integer | Yes | ID of the gift being sent. |
user_id |
Array | Yes | Array of receiver IDs, e.g., [123]. |
quantity |
Integer | Yes | Number of gifts to send. |
room_id |
Integer | Yes | Current room ID/UID. |
is_bag |
Boolean | Optional | Set to 1 if sending from user inventory. |
with_encryption |
Boolean | Optional | Set to 1 for encrypted socket response. |
2. معالجة رد الـ API (Response Handling)
عند إرسال Lucky Gift عبر instant-send، يقوم الـ API بإرجاع نتيجة "اللعبة السحرية" فوراً في استجابة الـ HTTP.
مثال للاستجابة الناجحة (Success Response):
{
"data": {
"diamonds": 100250,
"lucky_result": {
"code": 200,
"data": {
"gift_id": 576,
"gift_price": 100,
"OrderList": [
{
"order_id": "9df3b0e5-...",
"is_win": 1,
"reward_num": 390
}
]
}
}
}
}
حقول هامة لواجهة الموبايل:
diamonds: رصيد الماس المحدث للمستخدم. يجب تحديث العداد في الواجهة فوراً.lucky_result.data.OrderList: إذا كانتis_win == 1، قم بإظهار أنيميشن الفوز مع عدد المكافأةreward_num.
3. التنبيهات اللحظية (System Socket)
يجب على التطبيق الاستماع لأحداث Socket محددة (خارج Pusher) لإظهار الإعلانات الفائزة.
lucky-big-win
النطاق: خاص بالغرفة (Room Context).
الشرط: المكافأة >= 5,000 ماسة.
lucky-big-win-all
النطاق: عام على مستوى التطبيق (Global).
الشرط: المكافأة >= 10,000 ماسة.
one-to-room:lucky-gift-sent
النطاق: خاص بالغرفة (Room Context).
الوصف: أنيميشن الإرسال المتتالي (يتصفر بعد توقف 6 ثوانٍ).
هيكل البيانات (Payload Structure):
{
"user": {
"id": 1,
"name": "User Name",
"uid": "12345",
"current_profile_image_url": "..."
},
"reward": 15000,
"decoration": {
"id": 576,
"name": "Fire Eagle",
"image_path": "..."
}
}
هيكل بيانات متتالي الحظ (lucky-gift-sent Payload):
{
"id": "7607b9cb7d82e18a71d0346f915d3bf8",
"totalcost": 100,
"gift": {
"id": 576,
"name": "Fire Eagle",
"image_path": "..."
},
"times": 5,
"senderid": 297,
"receiversids": ["300"],
"currencycount": 20,
"quantity": 1,
"roomuid": "1134370",
"win": 150,
"last_update": "2026-04-16 18:40:00"
}
4. ملخص قواعد العمل (Business Rules)
🎁 هدايا Lucky
- عمولة أدمن الغرفة: 0%.
- نقاط الكأس (Trophy): 0.
- دخل المستلم (ذهب/هدف): 10% من القيمة.
♻️ هدايا Returnable
تُعامل تماماً مثل هدايا Lucky (دخل المستلم 10%، لا توجد حصة للغرفة أو نقاط).
✨ الهدايا القياسية
تظل القواعد كما هي دون تغيير (دخل المستلم 100%، حصة الغرفة 3%).
5. توصيات تجربة المستخدم (UI/UX Recommendations)
- السرعة هي الأهم: استخدم
instant-sendلضمان عودة نتيجة الفوز قبل وصول رسالة الـ Socket، مما يمنع حدوث لاغ (UI Lag). - التبعية البصرية: يجب أن يظهر
lucky-big-winأنيميشن داخل الغرفة، بينماlucky-big-win-allيفعل بنر علوي يراه الجميع. - فك تشفير الأصول: في حال استخدام
with_encryption، يجب على التطبيق فك تشفير مسارات الصور والفيديو باستخدام منطقrot41المعتمد.