Skip to main content

نظرة عامة

عند فشل طلب ما، تُرجع واجهة Dodo Payments API رمز حالة HTTP ونصًا بتنسيق JSON يحدد الخطأ. استخدم هذه الصفحة لمعرفة سبب الخطأ وكيفية حله. يتضمن كل رد خطأ ما يلي:
  • رمز حالة HTTP يحدد الفئة العامة للخطأ.
  • A code يحدد الخطأ بدقة، مثل UNSUPPORTED_COUNTRY.
  • A message يشرح الخطأ بلغة واضحة. يمكن أن يكون message هو null، مثلًا في حالة أخطاء الخادم الداخلية.
أنشئ منطق معالجة الأخطاء بالاعتماد على code، وليس على message. تُرجع عدة رموز أكثر من رسالة واحدة، وفقًا للسبب. استخدم رموز الأخطاء هذه من أجل:
  • تصحيح مشكلات التكامل.
  • معالجة الأخطاء بشكل صحيح في تطبيقك.
  • عرض ملاحظات مفيدة لعملائك.
  • الحفاظ على موثوقية معالجة المدفوعات.
هذه أخطاء API ومنطق الأعمال. لمعرفة أسباب رفض البطاقات التي تُرجع عند فشل الدفع (مثل INSUFFICIENT_FUNDS أو CARD_DECLINED)، راجع مرجع فشل المعاملات بدلًا من ذلك.

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

تستخدم API رموز حالة HTTP التالية للأخطاء:

تنسيق رد الخطأ

يتضمن نص رد الخطأ حقلين، هما code وmessage:

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

تُجمّع رموز الأخطاء أدناه حسب المجال في API الذي ترتبط به. يوضح كل إدخال الحالة التي تؤدي إلى الخطأ والرسالة التي تُرجعها API. تشير العناصر النائبة مثل {id} إلى قيم تملؤها API.

المصادقة والحساب

  • UNAUTHORIZED
    • المشغّل: لا يتضمن الطلب مفتاح API أو يتضمن مفتاحًا غير صالح (HTTP 401)، أو لا يملك مفتاح API الدور المطلوب لتنفيذ الإجراء (HTTP 403)
    • الرسالة: لا يُسمح لك بتنفيذ هذا الإجراء
  • MERCHANT_NOT_LIVE
    • المشغّل: طلب في الوضع المباشر لنشاط تجاري لم يفعّل المدفوعات المباشرة (HTTP 403). يشمل ذلك نشاطًا تجاريًا استخدم وضع الاختبار فقط، ونشاطًا لم تُفعّل مدفوعاته المباشرة بعد لأن التحقق غير مكتمل. لا تتأثر طلبات وضع الاختبار.
    • الرسالة: المدفوعات المباشرة غير مفعّلة للتاجر
  • BUSINESS_ARCHIVED
    • المشغّل: أي طلب موجّه إلى العميل لنشاط تجاري مؤرشف (HTTP 403). يشمل ذلك الخروج، وروابط الدفع، وواجهة المتجر، وCustomer Portal، وتفعيل مفتاح الترخيص.
    • الرسالة: هذا النشاط التجاري مؤرشف ولم يعد يقبل الطلبات

المدفوعات وCheckout

  • CHECKOUT_SESSION_CONSUMED
    • المشغّل: أنشأت جلسة Checkout دفعةً مسبقًا (HTTP 403). أنشئ جلسة Checkout جديدة بدلًا من ذلك.
    • الرسالة: تم إنشاء دفعة باستخدام جلسة Checkout المحددة مسبقًا.
  • MANUAL_RETRY_ALREADY_PAID
    • المشغّل: إعادة محاولة يدوية لفاتورة تجديد نجحت دفعتها مسبقًا. ستؤدي إعادة الإرسال إلى تحصيل الرسوم من العميل مرتين.
    • الرسالة: نجحت دفعة على هذه الفاتورة مسبقًا
  • MANUAL_RETRY_HARD_DECLINE
    • المشغّل: إعادة محاولة يدوية عندما يكون آخر فشل في الفاتورة رفضًا نهائيًا، أو لا يتضمن رمز خطأ مصنفًا. لا يمكن أن تنجح عملية تحصيل أخرى باستخدام البطاقة نفسها، لذا حدّث طريقة الدفع بدلًا من ذلك.
    • الرسالة: آخر فشل في هذه الفاتورة هو رفض نهائي، لذلك لا يمكن أن تنجح إعادة المحاولة (أو) لا يمكن تصنيف آخر فشل في هذه الفاتورة، ولذلك لا يمكن إعادة المحاولة
  • MANUAL_RETRY_IN_FLIGHT
    • المشغّل: إعادة محاولة يدوية أثناء كون دفعة على الفاتورة processing أو عدم تسجيل حالتها بعد. انتظر نتيجة تلك الدفعة بدلًا من إعادة إرسالها.
    • الرسالة: لا تزال دفعة على هذه الفاتورة قيد المعالجة
  • MANUAL_RETRY_LIMIT_REACHED
    • المشغّل: إعادة محاولة يدوية بعد استنفاد عمليات الإرسال الثلاث للفاتورة، أو قبل انقضاء فترة الانتظار (HTTP 429). تنتظر عملية الإرسال الثانية ساعة واحدة بعد الأولى، والثالثة 3 ساعات بعد الثانية. لا يتضمن النص سوى code وmessage. لمعرفة موعد السماح بالإرسال التالي، اقرأ retry_available_at من GET /payments/{payment_id}/retry.
    • الرسالة: استُنفدت جميع عمليات إعادة المحاولة اليدوية لهذه الفاتورة (أو) إعادة المحاولة الآن غير متاحة لهذه الفاتورة بعد
  • NO_ELIGIBLE_PAYMENT_METHODS
    • المشغّل: لم تبقَ أي طريقة دفع متاحة للدفع بعد التصفية (HTTP 422)
    • الرسالة: لم يتم العثور على طرق دفع مؤهلة
  • PAYMENT_NOT_PERMITTED
    • المشغّل: محاولة Checkout أو دفع من عميل موجود في قائمة الحظر الخاصة بالتاجر (HTTP 403). يتعمد الرمز والرسالة عدم ذكر السبب.
    • الرسالة: لا يمكن معالجة هذه الدفعة.
  • PAYMENT_NOT_RETRYABLE
    • المشغّل: إعادة محاولة يدوية لدفع لا تشملها إعادة المحاولة اليدوية. لا تحتوي الدفعة على فاتورة، أو أن فاتورتها ليست تجديد اشتراك مفتوحًا، أو لم تفشل أي دفعة على الفاتورة بعد، أو لا يتضمن الاشتراك فوترة متكررة (مثل الاشتراك عند الطلب)، أو أن العميل موجود في قائمة الحظر.
    • الرسالة: تختلف حسب السبب، مثلًا: يمكن إعادة محاولة دفعات تجديد الاشتراك فقط
  • PAYMENT_NOT_SUCCEEDED
    • المشغّل: محاولة رد مبلغ دفعة أو معالجتها قبل نجاحها
    • الرسالة: لم تنجح الدفعة المقدمة
  • PREVIOUS_PAYMENT_PENDING
    • المشغّل: محاولة إنشاء عملية تحصيل بينما تكون الدفعة السابقة في حالة غير نهائية. تُرجع أيضًا عند إعادة محاولة يدوية عندما لا تكون أحدث دفعة على الفاتورة failed ولا قيد التنفيذ، مثل requires_customer_action أو cancelled.
    • الرسالة: لا يمكن إنشاء عملية تحصيل جديدة لأن الدفعة السابقة لم تنجح بعد (أو) لم تفشل أحدث دفعة على هذه الفاتورة
  • UNSUCCESSFUL_PAYMENT_ID
    • المشغّل: يشير معرّف الدفعة إلى دفعة لم تنجح
    • الرسالة: تتمتع Payment ID بحالة غير ناجحة.

الموصلات وBYOP

ترتبط هذه الأخطاء بموصلات الدفع المملوكة للتاجر (Bring Your Own Processor، أو BYOP).
  • BYOP_CONNECTOR_DISABLED
    • المشغّل: تحديث طريقة دفع اشتراك موجّه عبر موصل BYOP معطل. لا تنتقل Dodo Payments إلى موصلاتها الخاصة، لذا أعد تفعيل الموصل أولًا.
    • الرسالة: الاشتراك موجّه عبر موصل التاجر الخاص (BYOP) المعطل حاليًا
  • BYOP_CUSTOM_INVOICE_ADDRESS_MISSING
    • المشغّل: لا يملك دفع موجّه عبر موصل التاجر (BYOP) عنوان فاتورة مخصصًا
    • الرسالة: عنوان الفاتورة المخصص لـ BYOP مطلوب عند توجيه الدفع عبر موصل التاجر
  • CONNECTOR_LABEL_ALREADY_EXISTS
    • المشغّل: إنشاء موصل بتسمية موجودة مسبقًا
    • الرسالة: يوجد موصل بهذه التسمية مسبقًا. اختر تسمية مختلفة.

رد المبالغ

  • EXISTING_REFUND_REQUEST_PROCESSING
    • المشغّل: لا يزال طلب رد مبلغ سابق قيد المعالجة
    • الرسالة: لا يزال طلب رد مبلغ بالحالة “Pending” قيد المعالجة
  • LINE_ITEM_FULLY_REFUNDED
    • المشغّل: محاولة رد مبلغ لعنصر سطر تم رد مبلغه بالكامل مسبقًا
    • الرسالة: تم رد مبلغ عنصر السطر {id} بالكامل، ولا يمكن رد مبلغ إضافي له.
  • LINE_ITEM_NOT_FOUND
    • المشغّل: لا ينتمي معرّف العنصر إلى الدفعة المشار إليها
    • الرسالة: لم يتم العثور على عنصر السطر {id} في الدفعة
  • LINE_ITEM_PRORATED
    • المشغّل: محاولة رد مبلغ أو تحديث عنصر سطر محسوب بالتناسب
    • الرسالة: لا يمكن رد مبلغ عنصر السطر {id} لأنه محسوب بالتناسب
  • LINE_ITEM_REFUND_AMOUNT_TOO_HIGH
    • المشغّل: مبلغ رد المبلغ، بما في ذلك الضريبة، أكبر من المبلغ المدفوع
    • الرسالة: مبلغ رد المبلغ المطلوب لعنصر السطر {id}، بما في ذلك الضريبة، هو {amount}، وهو أكبر من المبلغ المدفوع {amount}
  • LINE_ITEM_REFUND_AMOUNT_TOO_LOW
    • المشغّل: مبلغ رد المبلغ أقل من الحد الأدنى
    • الرسالة: مبلغ رد المبلغ المطلوب لعنصر السطر {id} هو {amount}، وهو منخفض جدًا
  • NOTHING_TO_REFUND
    • المشغّل: لم يتبقَ مبلغ قابل لردّه، لأن جميع عناصر السطر الموجبة تم رد مبالغها بالكامل
    • الرسالة: لا يوجد مبلغ متبقٍ قابل لردّه. تم رد مبالغ جميع عناصر السطر الموجبة بالكامل.
  • PARTIAL_REFUND_NOT_ALLOWED
    • المشغّل: محاولة رد مبلغ جزئي باستخدام طريقة دفع تدعم رد المبلغ بالكامل فقط
    • الرسالة: لا يُسمح برد المبالغ جزئيًا باستخدام طريقة الدفع هذه
  • PAYMENT_ALREADY_REFUNDED
    • المشغّل: رد مبلغ مكرر
    • الرسالة: تم رد مبلغ هذه الدفعة مسبقًا
  • PAYMENT_HAS_BEEN_REFUNDED
    • المشغّل: تم رد مبلغ الدفعة بالكامل
    • الرسالة: تم رد مبلغ Payment ID بالكامل.
  • REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT
    • المشغّل: إجمالي مبلغ رد المبلغ أكبر من المبلغ المدفوع
    • الرسالة: مبلغ رد المبلغ المحسوب أكبر من المبلغ المدفوع
  • REFUND_WINDOW_EXPIRED
    • المشغّل: طُلب رد المبلغ خارج الفترة المسموح بها
    • الرسالة: لا يمكن بدء رد المبالغ بعد {days} يومًا من إنشاء الدفعة. تواصل مع support@dodopayments.com.
  • ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED
    • المشغّل: محاولة رد مبلغ دفعة قيمتها صفر
    • الرسالة: لا يمكن رد مبلغ دفعة قيمتها بالعملة صفر

الاشتراكات والإضافات

  • ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED
    • المشغّل: محاولة إضافة إضافات إلى اشتراك يعتمد على الاستخدام
    • الرسالة: لا تُدعم الإضافات في الاشتراكات التي تستخدم الفوترة حسب الاستخدام
  • ADDONS_NOT_ALLOWED_FOR_ON_DEMAND
    • المشغّل: محاولة إضافة إضافات إلى اشتراك عند الطلب
    • الرسالة: لا يُسمح بالإضافات في الاشتراكات عند الطلب
  • CANCEL_SCHEDULED_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • المشغّل: يحاول Customer Portal إلغاء تغيير خطة مجدول بينما عطّل النشاط التجاري هذا الإجراء
    • الرسالة: إلغاء تغيير الخطة المجدول معطل في بوابة العميل.
  • CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • المشغّل: محاولة تحصيل رسوم اشتراك مجدول للإلغاء
    • الرسالة: الاشتراك مجدول للإلغاء
  • CUSTOMER_HAS_EXISTING_SUBSCRIPTION
    • المشغّل: إنشاء اشتراك لعميل لديه اشتراك مسبقًا، عندما لا يسمح النشاط التجاري باشتراكات متعددة لكل عميل
    • الرسالة: لدى العميل {id} اشتراك موجود. للسماح باشتراكات متعددة لكل عميل، غيّر إعدادات النشاط التجاري
  • DO_NOT_BILL_NOT_ALLOWED_IN_CUSTOMER_PORTAL
    • المشغّل: استخدام وضع التناسب do_not_bill في تغيير خطة عبر Customer Portal
    • الرسالة: لا يُسمح بوضع التناسب do_not_bill في بوابة العميل
  • DUPLICATE_ADDON_IDS_IN_REQUEST
    • المشغّل: ظهور addon_id نفسه أكثر من مرة في الطلب
    • الرسالة: لا يُسمح بتكرار معرّفات الإضافات
  • INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED
    • المشغّل: تغيير خطة لاشتراك غير نشط
    • الرسالة: لا يُدعم تغيير الخطط للاشتراكات غير النشطة
  • INVALID_PRORATION_MODE_WITH_NEXT_BILLING_DATE
    • المشغّل: استخدام وضع تناسب غير full_immediately مع effective_at: next_billing_date
    • الرسالة: يُسمح فقط بوضع التناسب full_immediately مع effective_at: next_billing_date
  • MISSING_ADDON_IDS
    • المشغّل: قائمة addon_id فارغة أو تتضمن معرّفات غير معروفة
    • الرسالة: معرّف منتج واحد أو أكثر غير موجود: {id}
  • ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED
    • المشغّل: تغيير خطة لاشتراك عند الطلب
    • الرسالة: لا يُدعم تغيير الخطط للاشتراكات عند الطلب
  • ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED
    • المشغّل: محاولة استخدام اشتراك عند الطلب مع فوترة حسب الاستخدام
    • الرسالة: لا تُدعم الاشتراكات عند الطلب مع الفوترة حسب الاستخدام
  • ONE_TIME_PRODUCTS_NOT_ALLOWED_FOR_ON_DEMAND
    • المشغّل: إضافة منتج لمرة واحدة إلى اشتراك عند الطلب
    • الرسالة: لا يُسمح بالمنتجات لمرة واحدة في الاشتراكات عند الطلب
  • PENDING_PLAN_CHANGE_EXISTS
    • المحفّز: طلب تغيير خطة جديد بينما لا يزال تغيير سابق بانتظار الدفع. لاستبدال تغيير مرتبط برابط دفع معلّق، اضبط cancel_older_payment_link: true.
    • الرسالة: يوجد تغيير خطة معلّق بالفعل لهذا الاشتراك. يُرجى الانتظار حتى اكتمال عملية الدفع الحالية.
  • PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • المشغّل: تغيير خطة عبر Customer Portal بينما عطّله النشاط التجاري
    • الرسالة: تغيير خطة الاشتراك عبر بوابة العميل معطل.
  • PLAN_CHANGE_LINK_CANCEL_FAILED
    • المحفّز: تعذّر على تغيير خطة باستخدام cancel_older_payment_link: true إلغاء رابط الدفع السابق. لم يتغير شيء، لذا يمكنك إعادة محاولة الطلب.
    • الرسالة: تعذّر إلغاء رابط الدفع السابق. حاول مرة أخرى.
  • PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • المحفّز: تغيير خطة لاشتراك مجدول لإلغائه
    • الرسالة: الاشتراك مجدول لإلغائه
  • PLAN_CHANGE_PAYMENT_ALREADY_COMPLETED
    • المحفّز: تغيير خطة باستخدام cancel_older_payment_link: true بينما دفع العميل بالفعل مقابل تغيير الخطة السابق. يسري ذلك التغيير، لذا لا تعاود المحاولة.
    • الرسالة: دفع العميل بالفعل مقابل تغيير الخطة السابق. وسيسري التغيير قريبًا.
  • PLAN_CHANGE_PAYMENT_IN_PROGRESS
    • المحفّز: تغيير خطة باستخدام cancel_older_payment_link: true بينما يدفع العميل مقابل تغيير الخطة السابق، مثلًا أثناء 3D Secure. أعد المحاولة بعد اكتمال عملية الدفع أو فشلها.
    • الرسالة: يدفع العميل مقابل تغيير الخطة السابق الآن. حاول مرة أخرى لاحقًا.
  • SCHEDULE_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • المحفّز: جدولة تغيير خطة من خلال Customer Portal بينما عطّلت الشركة هذه الميزة
    • الرسالة: جدولة تغييرات الخطط معطّلة لهذه الشركة.
  • SCHEDULED_PLAN_CHANGE_EXISTS
    • المحفّز: إنشاء تغيير خطة مجدول بينما يوجد تغيير آخر بالفعل
    • الرسالة: يوجد تغيير خطة مجدول بالفعل لهذا الاشتراك. يُرجى إلغاء التغيير المجدول الحالي قبل إنشاء تغيير جديد.
  • SCHEDULED_PLAN_CHANGE_NOT_FOUND
    • المحفّز: الإشارة إلى تغيير خطة مجدول غير موجود أو إلغاؤه
    • الرسالة: لم يتم العثور على تغيير خطة مجدول لهذا الاشتراك.
  • SUBSCRIPTION_EXPIRED
    • المحفّز: إصدار فاتورة لاشتراك بعد تاريخ expires_at
    • الرسالة: انتهت صلاحية الاشتراك، ولا يمكن إنشاء رسوم جديدة
  • SUBSCRIPTION_HAS_NO_PAYMENT_METHOD
    • المحفّز: إعادة محاولة يدوية لاشتراك لا يملك وسيلة دفع محفوظة لتحصيل الرسوم خارج الجلسة
    • الرسالة: لا توجد وسيلة دفع محفوظة لتحصيل الرسوم من هذا الاشتراك
  • SUBSCRIPTION_INACTIVE
    • المحفّز: حالة الاشتراك ليست active
    • الرسالة: الاشتراك غير نشط (أو) هذا الاشتراك غير مباشر، لذا لا يمكن جدولة إلغائه
  • SUBSCRIPTION_NOT_ON_DEMAND
    • المحفّز: تنفيذ إجراء عند الطلب على اشتراك تتم فوترته وفق فترة زمنية ثابتة
    • الرسالة: الاشتراك ليس عند الطلب بالفعل
  • SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED
    • المحفّز: تجاوزت محاولات إعادة دفع الاشتراك الحد الأقصى للمحاولات
    • الرسالة: تم تجاوز الحد الأقصى لإعادة المحاولة، وهو 10 محاولات لهذا الاشتراك

العملاء وقائمة الحظر

  • CUSTOMER_ALREADY_BLOCKED
    • المحفّز: حظر عميل موجود بالفعل في قائمة الحظر ولا توجد لديه اشتراكات مباشرة متبقية لإلغائها (HTTP 409)
    • الرسالة: هذا العميل موجود بالفعل في قائمة الحظر
  • PORTAL_ACTION_NOT_PERMITTED
    • المحفّز: يستدعي عميل محظور مسار كتابة في Customer Portal: الإلغاء أو الإيقاف المؤقت أو الاستئناف أو تغيير الخطة أو تحديث وسيلة الدفع (HTTP 403). تظل مسارات القراءة متاحة. لا يذكر الرمز والرسالة أي سبب عمدًا.
    • الرسالة: هذا الإجراء غير متاح.

المنتجات وسلة التسوق والعلامات التجارية

  • BRAND_ALREADY_ARCHIVED
    • المحفّز: أرشفة علامة تجارية مؤرشفة بالفعل
    • الرسالة: العلامة التجارية مؤرشفة بالفعل
  • BRAND_ARCHIVED
    • المحفّز: تحديث علامة تجارية مؤرشفة أو إرسالها للتحقق أو وضع علامة عليها لمنتج أو مجموعة منتجات أو اشتراك جديد
    • الرسالة: العلامة التجارية مؤرشفة (أو) العلامة التجارية مؤرشفة ولا يمكن تحديثها (أو) العلامة التجارية مؤرشفة ولا يمكن إرسالها للتحقق
  • BRAND_ARCHIVE_TARGET_REQUIRED
    • المحفّز: أرشفة علامة تجارية لا تزال تحتوي على منتجات أو اشتراكات مباشرة أو مجموعات منتجات من دون هدف move_products_to
    • الرسالة: تحتوي العلامة التجارية على {count} منتج/منتجات. اضبط move_products_to على علامة تجارية مستهدفة لإعادة وضع العلامة عليها. وتذكر الرسالة الاشتراكات المباشرة أو مجموعات المنتجات بدلًا من ذلك عندما تكون هي ما يمنع الأرشفة.
  • BRAND_MISMATCH
    • المحفّز: تنتمي عناصر السلة إلى علامات تجارية مختلفة
    • الرسالة: يجب أن تنتمي جميع العناصر في سلة المنتجات إلى العلامة التجارية نفسها
  • BRAND_NOT_ENABLED
    • المحفّز: العلامة التجارية معطّلة أو غير نشطة
    • الرسالة: العلامة التجارية المقدّمة غير مفعّلة
  • BRAND_SUBMISSION_NOT_ENABLED
    • المحفّز: ميزة إعادة إرسال العلامة التجارية للتحقق غير مفعّلة
    • الرسالة: Brand verificatin resubmission is not enabled (مكتوبة تمامًا كما تُعيدها API)
  • CANNOT_ARCHIVE_PRIMARY_BRAND
    • المحفّز: أرشفة العلامة التجارية الأساسية، التي يكون معرّفها هو معرّف الشركة
    • الرسالة: لا يمكن أرشفة العلامة التجارية الأساسية
  • FILE_IN_USE
    • المحفّز: حذف ملف منتج رقمي لا تزال منح الاستحقاق النشطة تشير إليه
    • الرسالة: الملف الرقمي مشار إليه بواسطة منح نشطة
  • INVALID_BRAND_ARCHIVE_TARGET
    • المحفّز: يحدد move_products_to العلامة التجارية التي تتم أرشفتها أو علامة تجارية مؤرشفة أو علامة تجارية تابعة لشركة أخرى
    • الرسالة: يجب أن يكون move_products_to علامة تجارية تابعة لهذه الشركة وغير مؤرشفة (أو) لا يمكن أن يكون move_products_to هو العلامة التجارية التي تؤرشفها
  • INVALID_SUGGESTED_PRICE
    • المحفّز: سعر مقترح من نوع ادفع ما تريد أقل من السعر الأدنى
    • الرسالة: لا يمكن أن يكون السعر المقترح أقل من السعر الأدنى. في حالة ادفع ما تريد، يُعتبر السعر الحد الأدنى للمبلغ المقبول
  • LOCALIZED_PRICE_ALREADY_EXISTS
    • المحفّز: يوجد سعر محلّي لهذا المنتج والبلد أو العملة بالفعل
    • الرسالة: يوجد بالفعل سعر محلّي لهذا المنتج والبلد/العملة
  • LOCALIZED_PRICE_DUPLICATES_BASE
    • المحفّز: يكرر السعر المحلّي العملة الأساسية أو البلد الأساسي للمنتج
    • الرسالة: يكرر السعر المحلّي العملة/البلد الأساسي للمنتج
  • LOCALIZED_PRICE_SHAPE_MISMATCH
    • المحفّز: لا يتطابق شكل السعر المحلّي مع pricing_mode الخاص بالمنتج
    • الرسالة: لا يتطابق شكل السعر المحلّي مع pricing_mode الخاص بالمنتج
  • MISSING_PRODUCT_INFORMATION
    • المحفّز: المنتج موجود، لكن معلومات إلزامية مفقودة
    • الرسالة: المنتج {id} موجود، لكن معلومات إلزامية أخرى مفقودة أو غير صالحة
  • PAY_AS_YOU_WANT_AMOUNT_REQUIRED
    • المحفّز: المبلغ مفقود لمنتج من نوع ادفع ما تريد
    • الرسالة: المبلغ إلزامي لمنتج ادفع ما تريد
  • PRODUCT_CART_EMTPY
    • المحفّز: إرسال سلة منتجات فارغة
    • الرسالة: product_cart فارغة (رُكّب رمز الخطأ عمدًا على النحو EMTPY لمطابقة القيمة الدقيقة التي تُعيدها API)
  • PRODUCT_COLLECTION_IS_DELETED
    • المحفّز: إجراء عملية على مجموعة منتجات تم حذفها
    • الرسالة: لا توجد رسالة
  • PRODUCT_COLLECTION_MUST_HAVE_PRODUCTS
    • المحفّز: إزالة المنتج الأخير، أو المجموعة الأخيرة التي تحتوي على منتجات، من مجموعة
    • الرسالة: لا يمكن حذف المنتج الأخير في مجموعة. أرشف المجموعة بدلًا من ذلك. (أو) لا يمكن حذف المجموعة الأخيرة التي تحتوي على منتجات. أرشف المجموعة بدلًا من ذلك.
  • PRODUCT_IS_DELETED
    • المحفّز: تم حذف المنتج
    • الرسالة: لا توجد رسالة
  • PRODUCT_PRICING_MODE_REQUIRED
    • المحفّز: إضافة أسعار محلّية قبل ضبط pricing_mode الخاص بالمنتج
    • الرسالة: يجب ضبط pricing_mode للمنتج قبل إضافة الأسعار المحلّية
  • SLUG_ALREADY_TAKEN
    • المحفّز: المعرّف المختصر للمنتج أو عنوان URL المختصر المطلوب مستخدم بالفعل
    • الرسالة: المعرّف المختصر مستخدم بالفعل
  • UNABLE_TO_EDIT_PRIMARY_BRAND
    • المحفّز: محاولة تحديث العلامة التجارية الأساسية من خلال API العادي للعلامات التجارية
    • الرسالة: لا يمكن تحديث العلامة التجارية الأساسية عبر نقطة نهاية API هذه.

الخصومات

  • DISCOUNT_ALREADY_USED_ON_SUBSCRIPTION
    • المحفّز: تطبيق خصم مرة أخرى بعد استخدامه بالفعل لهذا الاشتراك
    • الرسالة: استُخدم هذا الخصم بالفعل لهذا الاشتراك
  • DISCOUNT_CODE_ALREADY_EXISTS
    • المحفّز: إنشاء رمز خصم موجود بالفعل
    • الرسالة: رمز الخصم موجود بالفعل
  • DISCOUNT_CODE_EXPIRED
    • المحفّز: تجاوز رمز الخصم تاريخ expires_at
    • الرسالة: انتهت صلاحية رمز الخصم
  • DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED
    • المحفّز: استخدام رمز الخصم بعد بلوغ usage_limit الخاص به
    • الرسالة: لا يمكن أن يكون حد الاستخدام أقل من times_used (أو) بلغ رمز الخصم حد الاستخدام
    • ملاحظة: نهائي. استُنفد الرمز، لذا لا تعاود المحاولة.
  • DISCOUNT_CONCURRENT_REDEMPTION
    • المحفّز: احتفظ استرداد آخر للرمز نفسه بقفل حد الاستخدام لمدة طويلة جدًا (HTTP 503)
    • الرسالة: يجري استرداد الخصم بالتزامن؛ يُرجى إعادة المحاولة
    • ملاحظة: مؤقت. قد تظل سعة الرمز متاحة، لذا من الآمن إعادة محاولة الطلب. لا تعرض هذه الرسالة للعميل باعتبار أن الرمز مستنفد.
  • DISCOUNT_CURRENCY_OPTION_INVALID
    • المحفّز: currency_options غير صالح عند الإنشاء أو التحديث
    • الرسالة: يتطلب الخصم الثابت خيار عملة واحدًا على الأقل مع قيمة افتراضية قابلة للتحديد (أو) لا يُسمح بخيارات عملة مكررة (أو) يمكن وضع علامة افتراضية على خيار عملة واحد فقط
  • DISCOUNT_CUSTOMER_NOT_ELIGIBLE
    • المحفّز: لا يستوفي العميل customer_eligibility الخاص بالرمز (first_time أو existing أو ليس ضمن قائمة السماح الخاصة برمز specific)
    • الرسالة: العميل غير مؤهل لاستخدام رمز الخصم هذا
  • DISCOUNT_MINIMUM_SUBTOTAL_NOT_MET
    • المحفّز: الإجمالي الفرعي للسلة أقل من minimum_subtotal المهيأ لعملة الدفع
    • الرسالة: الإجمالي الفرعي للسلة أقل من الحد الأدنى المطلوب للخصم
  • DISCOUNT_NOT_YET_ACTIVE
    • المحفّز: استخدام الرمز قبل تاريخ starts_at الخاص به
    • الرسالة: رمز الخصم غير نشط بعد (‏starts_at في المستقبل)
  • DISCOUNT_PER_CUSTOMER_USAGE_LIMIT_EXCEEDED
    • المحفّز: استردّ العميل الرمز per_customer_usage_limit مرة بالفعل
    • الرسالة: تم تجاوز حد الاستخدام لكل عميل لرمز الخصم هذا
  • DISCOUNT_NOT_APPLICABLE_TO_NEW_PRODUCT
    • المحفّز: تغيير الخطة إلى منتج لا ينطبق عليه الخصم الحالي
    • الرسالة: لا ينطبق الخصم على منتج الخطة الجديدة
  • DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND
    • المحفّز: تطبيق الرمز على اشتراك عند الطلب
    • الرسالة: قسيمة الخصم غير متاحة للاشتراكات عند الطلب
  • DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT
    • المحفّز: تطبيق الرمز على منتجات لا يغطيها
    • الرسالة: قسيمة الخصم غير متاحة لهذا المنتج
  • INVALID_DISCOUNT_CODE
    • المحفّز: الرمز غير موجود أو لا ينطبق على أي منتج في السلة
    • الرسالة: رمز خصم غير صالح (أو) لا يمكن تطبيق رمز الخصم على أي منتج في السلة
  • INVALID_PERCENTAGE
    • المحفّز: النسبة أعلى من 100% (10,000 نقطة أساس)
    • الرسالة: لا يمكن أن تتجاوز النسبة 10000 (أو) لا يمكن أن يتجاوز مبلغ رمز الخصم 100%
  • UNSUPPORTED_DISCOUNT_TYPE
    • المحفّز: نوع خصم غير مدعوم. كلا من percentage وflat مدعومان؛ أما خصومات المبلغ لكل وحدة فغير مدعومة.
    • الرسالة: رموز الخصم النسبية والثابتة فقط مدعومة (أو) رموز الخصم النسبية فقط مدعومة حاليًا

مفاتيح الترخيص

  • ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT
    • المحفّز: حد التفعيل الجديد لمفتاح الترخيص أقل من عدد مثيلاته الحالي
    • الرسالة: لا يمكن أن يكون حد التفعيل الجديد أقل من عدد المثيلات الحالية
  • INACTIVE_LICENSE_KEY
    • المحفّز: حالة مفتاح الترخيص ليست active
    • الرسالة: مفتاح الترخيص غير نشط
  • LICENSE_KEY_LIMIT_REACHED
    • المحفّز: بلغ عدد عمليات التفعيل حد التفعيل
    • الرسالة: تم بلوغ حد تفعيل مفتاح الترخيص
  • LICENSE_KEY_NOT_FOUND
    • المحفّز: معرّف المثيل أو معرّف مفتاح الترخيص غير صالح
    • الرسالة: لم يتم العثور على مثيل مفتاح الترخيص أو لا ينتمي إلى مفتاح الترخيص هذا
  • NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS
    • المحفّز: محاولة تعيين تاريخ انتهاء صلاحية لمفتاح ترخيص قائم على اشتراك
    • الرسالة: لا يمكن تعيين تاريخ انتهاء صلاحية لمفتاح ترخيص قائم على اشتراك

الفوترة القائمة على الاستخدام والعدادات

  • DUPLICATE_METER_IDS_IN_REQUEST
    • المحفّز: يظهر معرّف العداد نفسه أكثر من مرة في الطلب
    • الرسالة: لا يُسمح بمعرّفات Meter مكررة
  • INVALID_QUANTITY
    • المحفّز: كمية غير 1 لمنتج ذي تسعير قائم على الاستخدام
    • الرسالة: يُسمح بكمية 1 فقط في المنتجات ذات السعر القائم على الاستخدام
  • METER_IS_DELETED
    • المحفّز: محاولة استخدام عداد محذوف
    • الرسالة: تم حذف Meter بالفعل
  • MISSING_METER_IDS
    • المحفّز: قائمة معرّفات العداد فارغة أو تحتوي على معرّفات غير صالحة
    • الرسالة: معرّف Meter واحد أو أكثر غير موجود: {id}

الفوترة القائمة على الرصيد

  • CREDIT_ENTITLEMENT_IS_DELETED
    • المحفّز: إجراء عملية على استحقاق رصيد تم حذفه
    • الرسالة: تم حذف استحقاق الرصيد بالفعل
  • CREDIT_ENTITLEMENT_NAME_ALREADY_EXISTS
    • المحفّز: إنشاء استحقاق رصيد باسم موجود بالفعل
    • الرسالة: يوجد استحقاق رصيد بهذا الاسم بالفعل
  • OVERAGE_LIMIT_EXCEEDED
    • المحفّز: ستتجاوز عملية استخدام أو خصم رصيد حد التجاوز المهيأ
    • الرسالة: تم تجاوز حد التجاوز

المحفظة

  • INSUFFICIENT_WALLET_FUNDS
    • المحفّز: رصيد المحفظة أقل من مبلغ الخصم
    • الرسالة: لا توجد أموال كافية في المحفظة
  • NEGATIVE_BALANCE_ADJUSTMENT
    • المحفّز: محاولة جعل رصيد المحفظة سالبًا
    • الرسالة: لا يُسمح بجعل رصيد المحفظة سالبًا

العملة والضرائب والمنطقة

  • EXCHANGE_RATE_NOT_FOUND
    • المحفّز: لا يوجد سعر صرف لزوج العملات
    • الرسالة: لم يتم العثور على سعر صرف للتحويل من {currency} إلى {currency}
  • INVALID_TAX_ID
    • المحفّز: فشل التحقق من VAT أو GST أو TIN
    • الرسالة: معرّف الضريبة غير صالح
  • REQUEST_AMOUNT_BELOW_MINIMUM
    • المحفّز: المبلغ أقل من الحد الأدنى المحدد للمنتج
    • الرسالة: لا يمكن أن يكون المبلغ أقل من الحد الأدنى المحدد للمنتج
  • TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT
    • المحفّز: إجمالي السلة المجمّع، شاملًا الضريبة، أقل من الحد الأدنى المطلوب لمعالجة الدفع. يعتمد الحد الأدنى على عملة الفوترة وعلى ما إذا كان الدفع لمرة واحدة أو اشتراكًا. بالنسبة إلى العملات غير USD وEUR وGBP، يُتحقق أيضًا من الإجمالي مقابل الحد الأدنى لـ USD. راجع الحدود الدنيا للمبالغ
    • الرسالة: يلزم حد أدنى قدره {display_str} لمعالجة الدفع، مثل Minimum amount of 1.00 USD is required to process payment
  • UNSUPPORTED_BILLING_CURRENCY
    • المحفّز: عملة الفوترة المطلوبة غير مدعومة لهذا الاشتراك
    • الرسالة: عملة الفوترة غير USD غير مدعومة للاشتراكات
  • UNSUPPORTED_COUNTRY
    • المحفّز: البلد غير مدعوم
    • الرسالة: البلد {country_name} غير مدعوم حاليًا
  • UNSUPPORTED_CURRENCY
    • المحفّز: عملة المنتج أو الإضافة ليست عملة يمكن لـ Dodo Payments تحصيل الرسوم بها. يمكن تعيين الأسعار الأساسية بأي عملة قابلة للتحصيل، لذا يعني هذا الخطأ عادةً أن رمز العملة غير صالح أو غير مدعوم.
    • الرسالة: العملة غير مدعومة حاليًا (أو) المنتجات المدعومة حاليًا هي USD وINR فقط (أو) العملات المدعومة حاليًا لسعر الإضافة هي USD وINR فقط (أو) لا يمكن طلب USD أو INR إلا لـ billing_currency (أو) العملة غير مدعومة (أو) عملة غير متوقعة لاشتراكات البطاقات الهندية
  • UNSUPPORTED_TAX_CATEGORY
    • المحفّز: فئة الضريبة ليست إحدى القيم المدعومة
    • الرسالة: الفئة {category} غير مدعومة حاليًا

التحقق والطلبات

  • DUPLICATE_LINE_ITEMS_IN_REQUEST
    • المحفّز: يظهر item_id نفسه أكثر من مرة في items[]
    • الرسالة: تم تحديد item_ids مكررة في مصفوفة items
  • INVALID_QUERY_PARAMS
    • المحفّز: معلمات استعلام متعارضة أو غير صحيحة
    • الرسالة: يجب أن تحتوي معلمات الاستعلام على time_frame أو (start, end) فقط (أو) يجب ألا تكون بداية النطاق بعد نهايته
  • INVALID_REQUEST_BODY
    • المحفّز: JSON غير صحيح أو مخالفة للمخطط
    • الرسالة: نص الطلب غير صالح. يُرجى التحقق من ترويسات الطلب والكائن.
  • INVALID_REQUEST_PARAMETERS
    • المحفّز: قيم معلمات صحيحة من حيث التنسيق، لكنها غير صحيحة من حيث المعنى، مثل تاريخ في الماضي
    • الرسالة: لا يمكن تغيير next_billing_date إلى وقت في الماضي (أو) لا يمكن لـ checkout يحتوي على أكثر من منتج اشتراك أن يتضمن منتجات لمرة واحدة (أو) يجب أن تكون جميع معرّفات المنتجات فريدة (أو) لا يمكن لاشتراكات عند الطلب أن تتضمن أكثر من منتج واحد (أو) يمكن لـ checkout أن يحتوي على 20 منتج اشتراك كحد أقصى (أو) لا يُسمح بتكرار منتجات الاشتراك في checkout واحد
  • MAXIMUM_KEYS_REACHED
    • المحفّز: تتجاوز البيانات الوصفية أو الحقول المخصصة 50 زوجًا من المفتاح والقيمة
    • الرسالة: تم تجاوز 50 زوجًا من المفتاح والقيمة

عام ونظام

  • INTEGER_CONVERSION_FAILURE
    • المحفّز: فشل تحويل من جهة الخادم بين عدد صحيح وسلسلة نصية أو قيمة عشرية، مثلما يحدث عندما يكون إجمالي السلة كبيرًا جدًا بحيث يتعذر معالجته
    • الرسالة: فشل تحويل العدد الصحيح (أو) إجمالي السلة كبير جدًا بحيث يتعذر معالجته. قلّل الكمية أو اختر عملة فوترة مختلفة.
  • INTERNAL_SERVER_ERROR
    • المحفّز: خطأ غير متوقع في الخادم. سجّل تفاصيل الطلب من جانبك.
    • الرسالة: لا توجد رسالة عامة (500 عامة، وعادةً ما يكون message هو null)
  • NOT_FOUND
    • المحفّز: 404 عامة لأي مورد مفقود
    • الرسالة: لم يتم العثور على العنصر (أو رسالة أكثر تحديدًا تذكر العنصر المفقود)
  • TOO_MANY_REQUESTS
    • المحفّز: تم تجاوز حد المعدل (HTTP 429)
    • الرسالة: لا توجد رسالة
  • UNSUPPORTED_ACTION
    • المحفّز: إجراء لا يدعمه نوع المورد
    • الرسالة: تغيير الخطط للاشتراكات القائمة على الاستخدام غير مدعوم

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

اتبع هذه الممارسات عند التعامل مع أخطاء API:
  1. عالج كل استجابة خطأ في تطبيقك، وأنشئ الفروع بناءً على code بدلًا من message.
  2. سجّل حالة HTTP وcode وmessage لكل طلب فاشل.
  3. اعرض للمستخدمين النهائيين رسالة مكتوبة لهم بدلًا من message الخام من API.
  4. أعد المحاولة للأخطاء المؤقتة فقط، مثل استجابات 429 و5xx أو DISCOUNT_CONCURRENT_REDEMPTION، بعد فترة تأخير.
  5. تواصل مع الدعم بشأن الأخطاء التي لا يمكنك حلها.

الدعم

لمزيد من المساعدة بشأن رموز الأخطاء أو مشكلات التكامل، تواصل مع فريق الدعم عبر support@dodopayments.com.
آخر تعديل في ٨ أكتوبر ٢٠٢٦