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

نظرة عامة

تستخدم واجهة برمجة تطبيقات مدفوعات دودي رموز الحالة القياسية 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: تم تحديد item_ids مكررة في مصفوفة العناصر
  • DUPLICATE_METER_IDS_IN_REQUEST
    • Trigger: نفس معرف العداد يظهر عدة مرات في الطلب
    • Message: لا يُسمح بمعرفات عداد مكررة
  • EXCHANGE_RATE_NOT_FOUND
    • Trigger: لا يوجد سعر صرف لزوج العملات from → to
    • Message: لم يتم العثور على سعر صرف لتحويل من Currency إلى Currency
  • 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_cart فارغة
  • 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: محاولة تحديث العلامة التجارية الأساسية عبر API عادي
    • Message: لا يمكن تحديث العلامة التجارية الأساسية عبر نقطة نهاية API هذه.
  • UNAUTHORIZED
    • Trigger: لا يوجد مفتاح API أو رمز/نطاق غير صالح
    • Message: أنت غير مخوّل لتنفيذ هذا الإجراء
  • UNSUPPORTED_ACTION
    • Trigger: إجراء غير مدعوم لنوع المورد
    • Message: تغيير الخطط للاشتراكات حسب الاستخدام غير مدعوم
  • UNSUPPORTED_BILLING_CURRENCY
    • Trigger: الاشتراكات مقيدة بالدولار الأمريكي
    • Message: لا يُدعم عملة فوترة غير الدولار للاشتراكات
  • UNSUPPORTED_COUNTRY
    • Trigger: المنطقة الجغرافية غير مدعومة بعد
    • Message: الدولة غير مدعومة حاليًا
  • UNSUPPORTED_CURRENCY
    • Trigger: عملة المنتج أو الملحق غير صالحة
    • Message: العملة غير مدعومة حاليًا / فقط منتجات USD وINR مدعومة حاليًا / فقط USD وINR مدعومة لسعر الملحق / يمكن طلب USD أو INR فقط للعملة الرئيسية / العملة غير مدعومة / عملة غير متوقعة لاشتراكات البطاقات الهندية
  • 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.