الانتقال إلى المحتوى الرئيسي

نظرة عامة

تستخدم واجهة برمجة تطبيقات مدفوعات دودي رموز الحالة القياسية HTTP ورموز الخطأ المخصصة للإشارة إلى نجاح أو فشل طلبات API. عند حدوث خطأ، تعيد واجهة برمجة التطبيقات رمز حالة HTTP مناسب واستجابة JSON تحتوي على معلومات مفصلة حول الخطأ. تتضمن كل استجابة خطأ:
  • رمز حالة HTTP يشير إلى الفئة العامة للخطأ
  • رمز خطأ محدد يحدد الطبيعة الدقيقة للخطأ
  • رسالة خطأ قابلة للقراءة البشرية تشرح ما حدث
  • تفاصيل إضافية حول الخطأ عند الاقتضاء
فهم هذه الرموز ومعانيها أمر بالغ الأهمية لـ:
  • تصحيح مشكلات التكامل
  • تنفيذ معالجة الأخطاء بشكل صحيح في تطبيقك
  • تقديم ملاحظات ذات مغزى للمستخدمين النهائيين
  • الحفاظ على نظام معالجة مدفوعات قوي
تقدم الأقسام التالية معلومات مفصلة حول رموز الحالة القياسية HTTP ورموز الخطأ المحددة التي قد تواجهها عند استخدام واجهة برمجة تطبيقات مدفوعات دودي.

رموز خطأ API القياسية

رمز الخطأحالة HTTPالوصف
400طلب غير صحيحكان الطلب مشوهاً أو يحتوي على معلمات غير صالحة
401غير مصرحفشلت المصادقة أو مفتاح API غير صالح
403محظورمفتاح API ليس لديه إذن للوصول إلى المورد المطلوب
404غير موجودالمورد المطلوب غير موجود
405طريقة غير مسموح بهاطريقة HTTP غير مدعومة لهذه النقطة النهائية
409تعارضيتعارض الطلب مع الحالة الحالية للمورد
422كيان غير قابل للمعالجةكان الطلب مشكلاً بشكل جيد ولكنه يحتوي على أخطاء دلالية
429عدد كبير جداً من الطلباتتم تجاوز حد المعدل
500خطأ في الخادم الداخليحدث خطأ غير متوقع على خوادمنا
502بوابة غير صالحةتلقت الخادم استجابة غير صالحة من خادم متقدم
503الخدمة غير متاحةالخدمة غير متاحة مؤقتاً
504انتهاء مهلة البوابةانتهت مهلة الخادم أثناء الانتظار لاستجابة متقدمة

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

عند حدوث خطأ، تعيد واجهة برمجة التطبيقات استجابة JSON بالهيكل التالي:
{
  "code": "UNSUPPORTED_COUNTRY",
  "message": "Country AI currently not supported"
}

مرجع رموز الخطأ

  • ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT
    • Trigger: تفعيل مفتاح الترخيص: الحد الجديد < عدد الحالات الحالية
    • Message: لا يمكن أن يكون حد التفعيل الجديد أقل من عدد الحالات الحالية
  • ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Trigger: محاولة إضافة إضافات إلى الاشتراكات المعتمدة على الاستخدام
    • Message: الإضافات في الاشتراكات غير مدعومة للفوترة المعتمدة على الاستخدام
  • ADDONS_NOT_ALLOWED_FOR_ON_DEMAND
    • Trigger: محاولة إضافة إضافات إلى الاشتراكات عند الطلب
    • Message: الإضافات غير مسموح بها للاشتراكات عند الطلب
  • BRAND_MISMATCH
    • Trigger: عناصر السلة تنتمي إلى علامات تجارية مختلفة
    • Message: يجب أن تنتمي جميع العناصر في سلة المنتجات إلى نفس العلامة التجارية
  • BRAND_NOT_ENABLED
    • Trigger: العلامة التجارية معطلة أو غير نشطة
    • Message: العلامة التجارية المقدمة غير مفعلة
  • BRAND_SUBMISSION_NOT_ENABLED
    • Trigger: ميزة إعادة تقديم التحقق من العلامة التجارية غير مفعلة
    • Message: إعادة تقديم التحقق من العلامة التجارية غير مفعلة
  • CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Trigger: محاولة فرض رسوم على اشتراك مقرر إلغاؤه
    • Message: الاشتراك مقرر إلغاؤه
  • CHECKOUT_SESSION_CONSUMED
    • Trigger: تم إنشاء جلسة الدفع بالفعل
    • Message: تم استهلاك جلسة الدفع بالفعل
  • DISCOUNT_CODE_ALREADY_EXISTS
    • Trigger: إنشاء رمز خصم مكرر
    • Message: رمز الخصم موجود بالفعل
  • DISCOUNT_CODE_EXPIRED
    • Trigger: رمز الخصم تجاوز تاريخ expires_at
    • Message: رمز الخصم منتهي الصلاحية
  • DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED
    • Trigger: إعادة استخدام الخصم بعد الوصول إلى usage_limit
    • Message: لا يمكن أن يكون حد الاستخدام أقل من times_used / حد استخدام رمز الخصم
  • DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND
    • Trigger: تم تطبيق الرمز على اشتراك عند الطلب
    • Message: قسيمة الخصم غير متاحة للاشتراكات عند الطلب
  • DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT
    • Trigger: تم تطبيق الرمز على منتج (منتجات) غير ذات صلة
    • Message: قسيمة الخصم غير متاحة لهذا المنتج
  • DUPLICATE_LINE_ITEMS_IN_REQUEST
    • Trigger: نفس item_id يظهر مرتين في items[]
    • Message: تم تحديد معرفات العناصر المكررة في مصفوفة العناصر
  • DUPLICATE_METER_IDS_IN_REQUEST
    • Trigger: نفس معرف العداد يظهر عدة مرات في الطلب
    • Message: معرفات العداد المكررة غير مسموح بها
  • EXCHANGE_RATE_NOT_FOUND
    • Trigger: لا يوجد سعر صرف لزوج العملات from → to
    • Message: لم يتم العثور على سعر الصرف للتحويل من العملة إلى العملة
  • EXISTING_REFUND_REQUEST_PROCESSING
    • Trigger: طلب استرداد سابق لا يزال قيد المعالجة
    • Message: لا يزال يتم معالجة طلب استرداد بحالة “قيد الانتظار”
  • INACTIVE_LICENSE_KEY
    • Trigger: حالة المفتاح ≠ ACTIVE
    • Message: مفتاح الترخيص غير نشط
  • INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED
    • Trigger: تغيير الخطة على اشتراك غير نشط
    • Message: تغيير الخطط غير مدعوم للاشتراكات غير النشطة
  • INSUFFICIENT_WALLET_FUNDS
    • Trigger: رصيد المحفظة < مبلغ الخصم
    • Message: لا توجد أموال كافية في المحفظة
  • INTEGER_CONVERSION_FAILURE
    • Trigger: أي تحويل بين عدد صحيح ↔ سلسلة/عشري يفشل من جانب الخادم
    • Message: فشل تحويل العدد الصحيح
  • INTERNAL_SERVER_ERROR
    • Trigger: استثناءات غير ملتقطة؛ يجب عليك تسجيل التفاصيل من جانب الخادم
    • Message: لا توجد رسالة عامة (500 عامة)
  • INVALID_DISCOUNT_CODE
    • Trigger: الرمز غير موجود / غير قابل للتطبيق
    • Message: رمز الخصم غير صالح / لا يمكن تطبيق رمز الخصم على أي منتج في السلة
  • INVALID_PERCENTAGE
    • Trigger: مبلغ النسبة > 100% (أو 10,000 نقطة أساس)
    • Message: لا يمكن أن يكون مبلغ النسبة أكثر من 10000 / لا يمكن أن يكون مبلغ رمز الخصم أكثر من 100%
  • INVALID_QUANTITY
    • Trigger: كمية غير صالحة محددة للتسعير المعتمد على الاستخدام
    • Message: يُسمح فقط بكمية واحدة في المنتجات المعتمدة على السعر القائم على الاستخدام
  • INVALID_QUERY_PARAMS
    • Trigger: معلمات استعلام متعارضة / مشوهة
    • Message: يجب أن تحتوي معلمات الاستعلام على إما time_frame أو (start, end) فقط
  • INVALID_REQUEST_BODY
    • Trigger: JSON مشوه أو انتهاك للمخطط
    • Message: جسم طلبك غير صالح. يرجى التحقق من رؤوس الطلب وكائن الطلب.
  • INVALID_REQUEST_PARAMETERS
    • Trigger: دلالات خاطئة (مثل التاريخ في الماضي)
    • Message: لا يمكن تغيير next_billing_date إلى وقت في الماضي
  • INVALID_SUGGESTED_PRICE
    • Trigger: سعر PWYW < الحد الأدنى المسموح به
    • Message: لا يمكن أن يكون السعر المقترح أقل من الحد الأدنى للسعر. في حالة الدفع كما تريد، يُعتبر السعر هو الحد الأدنى المقبول
  • INVALID_TAX_ID
    • Trigger: فشل التحقق من VAT/GST/TIN
    • Message: معرف الضريبة غير صالح
  • LICENSE_KEY_LIMIT_REACHED
    • Trigger: التفعيلات = الحد
    • Message: تم الوصول إلى حد تفعيل مفتاح الترخيص
  • LICENSE_KEY_NOT_FOUND
    • Trigger: معرف الحالة أو معرف المفتاح غير صالح
    • Message: لم يتم العثور على حالة مفتاح الترخيص أو لا تنتمي إلى هذا المفتاح
  • LINE_ITEM_FULLY_REFUNDED
    • Trigger: محاولة استرداد عنصر خط تم استرداده بالكامل
    • Message: تم استرداد عنصر الخط بالكامل ولا يمكن استرداده مرة أخرى.
  • LINE_ITEM_NOT_FOUND
    • Trigger: معرف العنصر ليس جزءًا من الدفع المرجعي
    • Message: لم يتم العثور على عنصر الخط في الدفع
  • LINE_ITEM_PRORATED
    • Trigger: تم محاولة استرداد أو تحديث عنصر خط مقسم
    • Message: لا يمكن استرداد عنصر الخط لأنه مقسم
  • LINE_ITEM_REFUND_AMOUNT_TOO_HIGH
    • Trigger: مبلغ الاسترداد > المبلغ المدفوع (شامل الضريبة)
    • Message: مبلغ الاسترداد المطلوب لعنصر الخط بما في ذلك الضريبة هو وهو أعلى من المبلغ المدفوع
  • LINE_ITEM_REFUND_AMOUNT_TOO_LOW
    • Trigger: مبلغ الاسترداد أقل من الحد الأدنى
    • Message: مبلغ الاسترداد المطلوب لعنصر الخط هو وهو منخفض جدًا
  • MAXIMUM_KEYS_REACHED
    • Trigger: تجاوز البيانات الوصفية / الحقول المخصصة 50 زوجًا
    • Message: يتجاوز 50 زوجًا من المفاتيح والقيم
  • MERCHANT_NOT_LIVE
    • Trigger: لا يزال العمل في وضع الاختبار / الصندوق الرمل
    • Message: التاجر ليس مباشرًا
  • METER_IS_DELETED
    • Trigger: محاولة استخدام عداد محذوف
    • Message: تم حذف العداد بالفعل
  • MISSING_ADDON_IDS
    • Trigger: قائمة addon_id فارغة أو معرفات غير معروفة
    • Message: واحد أو أكثر من معرفات المنتجات غير موجودة:
  • MISSING_METER_IDS
    • Trigger: قائمة معرفات العداد فارغة أو تحتوي على معرفات غير صالحة
    • Message: واحد أو أكثر من معرفات العداد غير موجودة:
  • MISSING_PRODUCT_INFORMATION
    • Trigger: المنتج موجود ولكن المعلومات الإلزامية مفقودة
    • Message: المنتج موجود ولكن المعلومات الإلزامية الأخرى مفقودة أو غير صالحة
  • NEGATIVE_BALANCE_ADJUSTMENT
    • Trigger: محاولة جعل رصيد المحفظة سالبًا
    • Message: لا يُسمح بجعل رصيد المحفظة سالبًا
  • NO_ELIGIBLE_PAYMENT_METHODS
    • Trigger: بعد التصفية، لا شيء متبقي
    • Message: لم يتم العثور على طرق دفع مؤهلة
  • NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS
    • Trigger: محاولة تعيين تاريخ انتهاء على مفتاح قائم على الاشتراك
    • Message: لا يمكن تعيين تاريخ انتهاء لمفتاح ترخيص قائم على الاشتراك
  • NOT_FOUND
    • Trigger: 404 عام لأي مورد مفقود
    • Message: العنصر غير موجود (أو أكثر تحديدًا)
  • ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED
    • Trigger: تغيير الخطة غير مسموح به عند الطلب
    • Message: تغيير الخطط غير مدعوم للاشتراكات عند الطلب
  • ON_DEMAND_SUBSCRIPTIONS_NOT_ENABLED
    • Trigger: العمل لديه علم ميزة مغلق
    • Message: الاشتراكات عند الطلب غير مفعلة لهذا العمل
  • ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Trigger: محاولة استخدام عند الطلب مع الفوترة المعتمدة على الاستخدام
    • Message: الاشتراكات عند الطلب غير مدعومة للفوترة المعتمدة على الاستخدام
  • PAY_AS_YOU_WANT_AMOUNT_REQUIRED
    • Trigger: السعر مفقود لمنتج PWYW
    • Message: المبلغ إلزامي لمنتج الدفع كما تريد
  • PAYMENT_ALREADY_REFUNDED
    • Trigger: استرداد مكرر
    • Message: تم استرداد هذه الدفعة بالفعل
  • PAYMENT_HAS_BEEN_REFUNDED
    • Trigger: تم استرداد الدفع بالكامل
    • Message: تم استرداد معرف الدفع بالكامل.
  • PAYMENT_NOT_SUCCEEDED
    • Trigger: محاولة استرداد / معالجة دفع غير ناجح
    • Message: لم تنجح الدفعة المقدمة
  • PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Trigger: تم محاولة تغيير الخطة على اشتراك مقرر إلغاؤه
    • Message: الاشتراك مقرر إلغاؤه
  • PREVIOUS_PAYMENT_PENDING
    • Trigger: محاولة إنشاء رسوم بينما السابقة في حالة غير نهائية
    • Message: لا يمكن إنشاء رسوم جديدة حيث أن الدفع السابق لم ينجح بعد
  • PRODUCT_CART_EMPTY
    • Trigger: تم تقديم سلة منتجات فارغة
    • Message: سلة المنتجات فارغة
  • PRODUCT_IS_DELETED
    • Trigger: تم حذف المنتج بشكل غير نهائي
    • Message: لا توجد رسائل
  • REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT
    • Trigger: مبلغ الاسترداد الإجمالي > المبلغ المدفوع
    • Message: المبلغ المحسوب للاسترداد أكبر من المبلغ المدفوع
  • REFUND_WINDOW_EXPIRED
    • Trigger: خارج نافذة الاسترداد المسموح بها
    • Message: لا يمكن بدء الاستردادات يومًا بعد إنشاء الدفع. اتصل بـ support@dodopayments.com.
  • REQUEST_AMOUNT_BELOW_MINIMUM
    • Trigger: المبلغ < الحد الأدنى للمنتج
    • Message: لا يمكن أن يكون المبلغ أقل من الحد الأدنى المحدد للمنتج
  • SUBSCRIPTION_EXPIRED
    • Trigger: الفوترة بعد ends_at
    • Message: انتهت صلاحية الاشتراك ولا يمكن إنشاء رسوم جديدة
  • SUBSCRIPTION_INACTIVE
    • Trigger: الحالة ≠ ACTIVE
    • Message: الاشتراك غير نشط
  • SUBSCRIPTION_NOT_ON_DEMAND
    • Trigger: متوقع عند الطلب ولكن حصل على فترة ثابتة
    • Message: الاشتراك ليس عند الطلب بالفعل
  • SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED
    • Trigger: تجاوز عدد محاولات إعادة دفع الاشتراك الحد الأقصى
    • Message: تم تجاوز الحد الأقصى لعدد المحاولات البالغ 10 محاولات لهذا الاشتراك
  • TOO_MANY_REQUESTS
    • Trigger: 429 حد معدل
    • Message: لا توجد رسائل
  • TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT
    • Trigger: إجمالي السلة المجمعة < الحد الأدنى للبوابة
    • Message: المبلغ الأدنى من مطلوب لمعالجة الدفع
  • UNABLE_TO_EDIT_PRIMARY_BRAND
    • Trigger: محاولة تحديث العلامة التجارية الرئيسية عبر واجهة برمجة التطبيقات العادية
    • Message: لا يمكن تحديث العلامة التجارية الرئيسية عبر نقطة نهاية واجهة برمجة التطبيقات هذه.
  • UNAUTHORIZED
    • Trigger: لا يوجد مفتاح API أو رمز غير صالح / نطاق
    • Message: أنت غير مخول لأداء هذا الإجراء
  • UNSUPPORTED_ACTION
    • Trigger: إجراء غير مدعوم لنوع المورد
    • Message: تغيير الخطط للاشتراكات المعتمدة على الاستخدام غير مدعوم
  • UNSUPPORTED_BILLING_CURRENCY
    • Trigger: الاشتراكات مقيدة بالدولار الأمريكي
    • Message: لا يتم دعم عملة الفوترة غير الدولار الأمريكي للاشتراكات
  • UNSUPPORTED_COUNTRY
    • Trigger: الجغرافيا غير مدعومة بعد
    • Message: الدولة غير مدعومة حاليًا
  • UNSUPPORTED_CURRENCY
    • Trigger: عملة المنتج أو الإضافة غير صالحة
    • Message: العملة غير مدعومة حاليًا / يتم دعم المنتجات بالدولار الأمريكي والروبية الهندية فقط حاليًا / يتم دعم الدولار الأمريكي والروبية الهندية فقط لسعر الإضافة / يمكن طلب الدولار الأمريكي أو الروبية الهندية فقط لعملة الفوترة / العملة غير مدعومة / عملة غير متوقعة للاشتراكات ببطاقات هندية
  • UNSUPPORTED_DISCOUNT_TYPE
    • Trigger: الخصومات بمبلغ ثابت، إلخ. غير نشطة بعد
    • Message: يتم دعم رموز الخصم النسبية فقط في الوقت الحالي
  • UNSUPPORTED_PAYMENT_CURRENCY
    • Trigger: عملة الدفع محظورة للموصل
    • Message: لا يتم دعم المعاملات بالروبية الهندية لهذه المعاملة
  • UNSUPPORTED_TAX_CATEGORY
    • Trigger: سلسلة فئة الضريبة غير موجودة في التعداد
    • Message: الفئة غير مدعومة حاليًا
  • UNSUCCESSFUL_PAYMENT_ID
    • Trigger: معرف الدفع يشير إلى دفع غير ناجح
    • Message: معرف الدفع له حالة غير ناجحة.
  • ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED
    • Trigger: محاولة استرداد دفع بمبلغ صفر
    • Message: لا يمكن استرداد دفع بمبلغ عملة صفر

أفضل الممارسات

  1. تعامل دائماً مع الأخطاء بشكل لطيف في تطبيقك
  2. نفذ تسجيل الأخطاء بشكل صحيح
  3. استخدم رسائل خطأ مناسبة للمستخدمين النهائيين
  4. نفذ منطق إعادة المحاولة للأخطاء العابرة
  5. اتصل بالدعم لحل المشكلات غير المحلولة

الدعم

للحصول على مساعدة إضافية بشأن رموز الخطأ أو مشكلات التكامل، يرجى الاتصال بفريق الدعم لدينا على support@dodopayments.com.