Skip to main content

بنية استجابة الخطأ

تتبع جميع الأخطاء تنسيقًا موحدًا:

رموز حالة HTTP

رموز الخطأ الشائعة

MISSING_ACCESS_TOKEN

  • الرسالة: Access token is required
  • السبب: ترويسة X-Access-Token مفقودة
  • الإجراء: أدرج مفتاح API في الترويسة

INVALID_ACCESS_TOKEN / ERR_AUTH

  • الرسالة: The provided access token is invalid
  • السبب: مفتاح API غير صحيح أو منتهي الصلاحية أو ملغى
  • الإجراء:
    • تحقق من صحة مفتاح API
    • أنشئ مفتاحًا جديدًا إذا لزم الأمر
    • لا تسجّل قيم المفاتيح الحساسة
    • تواصل مع الدعم إذا استمرت المشكلة

NO_BALANCE / INSUFFICIENT_BALANCE

  • الرسالة: Insufficient balance
  • السبب: رصيد الحساب منخفض جدًا
  • الإجراء:
    • تحقق من الرصيد عبر /v3/account/balance قبل العمليات
    • اعرض الرصيد الحالي للمستخدم
    • اعرض خيار الشحن
    • لا تعيد المحاولة دون إضافة أموال

DUPLICATED_REF

  • الرسالة: This reference ID is already in use
  • السبب: تم استخدام المرجع في طلب سابق
  • الإجراء:
    • تحقق من حالة الطلب الموجود
    • أنشئ مرجعًا فريدًا جديدًا
    • لا تنشئ طلبات مكررة

IP_BLOCKED

  • الرسالة: Your IP has been temporarily blocked
  • السبب: محاولات مصادقة فاشلة كثيرة جدًا
  • الإجراء:
    • انتظر 15 دقيقة لإلغاء الحظر التلقائي
    • تحقق من صحة مفتاح API
    • تواصل مع الدعم إذا استمر الأمر

IP_NOT_ALLOWED

  • الرسالة: Your IP address is not whitelisted
  • السبب: قائمة IP البيضاء مفعّلة
  • الإجراء: أضف عنوان IP الخاص بك إلى القائمة البيضاء في لوحة التحكم

ERR_VALIDATION

  • الرسالة: Validation error
  • السبب: معلمات الطلب لا تستوفي المتطلبات
  • المشكلات الشائعة: حقول مفقودة، أنواع بيانات غير صالحة، عدم تطابق النمط
  • الإجراء:
    • تحقق من المدخلات على جانب العميل أولًا
    • تحقق من error.details للمشكلات الخاصة بالحقول
    • لا تعيد المحاولة دون إصلاح المشكلة

ERR_PHONE

  • الرسالة: Invalid phone number
  • السبب: رقم الهاتف غير صحيح أو غير موجود
  • الإجراء: استخدم /v3/internet/check-number للتحقق أولًا

ERR_STOCK

  • الرسالة: Product out of stock
  • السبب: المنتج/قيمة البطاقة المطلوبة غير متاحة
  • الإجراء:
    • تحقق من المخزون قبل الطلب
    • اعرض فئات بديلة
    • حاول مرة أخرى لاحقًا

NOT_FOUND

  • الرسالة: Resource not found
  • السبب: المورد المطلوب غير موجود
  • الحالات الشائعة: معرّف طلب غير صالح، مرجع غير صالح، مورد محذوف
  • الإجراء: تحقق من صحة المعرّف/المرجع، تحقق من الأخطاء الإملائية، تعامل بأناقة في واجهة المستخدم

RATE_LIMIT_EXCEEDED

  • الرسالة: Too many requests
  • السبب: تجاوز حد المعدل
  • الحدود: Sandbox: 60 طلب/دقيقة، الإنتاج: 120 طلب/دقيقة
  • الإجراء: نفّذ تراجعًا أسيًا مع منطق إعادة المحاولة

INTERNAL_SERVER_ERROR / INTERNAL_ERROR

  • الرسالة: Developer was notified and will check shortly
  • السبب: خطأ غير متوقع على خوادمنا
  • الإجراء:
    • لا تستردّ الأموال فورًا - انتظر 24 ساعة
    • احفظ requestId للدعم الفني
    • نفّذ منطق إعادة المحاولة مع تراجع
    • تواصل مع الدعم بالتفاصيل
    • نحن نُخطَر تلقائيًا

ERR_SERVICE

  • الرسالة: Service temporarily unavailable
  • السبب: صيانة الخدمة أو مشكلة مؤقتة
  • الإجراء:
    • اعرض رسالة صيانة
    • أعد المحاولة بعد تأخير
    • راقب للحصول على حل

أفضل ممارسات التنفيذ

1. تحقق دائمًا من حقل success

2. تعامل مع رموز الخطأ المحددة

3. منطق إعادة المحاولة الذكي مع التراجع الأسي

4. رسائل خطأ مناسبة للمستخدم

5. سجّل Request IDs

أنماط متقدمة

نمط قاطع الدائرة (Circuit Breaker)

امنع الإخفاقات المتتالية بإيقاف الطلبات عند ارتفاع معدل الخطأ:

مراقبة الأخطاء

تتبّع أنماط الأخطاء للكشف المبكر عن المشكلات:

معالجة UNKNOWN_ERROR

هام: لا تُصدر أي استرداد فور ظهور UNKNOWN_ERROR. انتظر دائماً 24 ساعة لحل المشكلة.

اختبار سيناريوهات الخطأ

استخدم وضع Sandbox لاختبار معالجة الأخطاء:

مرجع سريع

التحقق المبكر

تحقق من المدخلات من جهة العميل قبل استدعاءات API

إعادة المحاولة بذكاء

استخدم backoff الأسي لأخطاء 5xx، ولا تُعِد المحاولة أبداً لأخطاء 4xx

سجّل السياق

أدرج دائماً requestId والسياق في السجلات لتسهيل التصحيح

ردود فعل واضحة

أظهر للمستخدمين رسائل خطأ واضحة وقابلة للتنفيذ

الخطوات التالية

Endpoints الأساسية

استكشف جميع الـ endpoints

تنسيق الاستجابة

فهم استجابات API