application/problem+json:
دليل الأخطاء
جميع مُعرِّفاتtype تقع تحت https://integration.fatorly.com/errors/:
الفرق بين 400 و422. يعني 400 أن الطلب نفسه مشوّه — JSON غير صالح أو ترويسة
مفقودة أو حقل لا يجتاز التحقّق. أما 422 فيعني أن الطلب سليم البنية لكن الفاتورة
الإلكترونية الناتجة لا تجتاز قواعد PINT-AE الإماراتية.
الفرق بين 500 و502. يعني 502 أن طلبك سليم لكن خطوة عليا فشلت — من الآمن
إعادة المحاولة مع تباطؤ تدريجي. أما 500 فهو خلل غير متوقَّع؛ إن استمر تواصل مع
الدعم مزوِّدًا
traceId.حدود معدل الطلبات
الطلبات محدودة لكل شركة. استجابة 429 تحمل ترويستين:Retry-After— عدد الثواني قبل إعادة المحاولة.X-RateLimit-Remaining— دائمًا0عند رفض الطلب.
التحقّق والحصّة
- ترويسة
Idempotency-Keyإلزامية في كلPOST(باستثناء…/validate)؛ وإغفالها هو السبب الأكثر شيوعًا لـ 400. راجع معرّف عدم التكرار. - يكون
exemptionReasonCodeمطلوبًا على أي سطر يكون فيهtaxCategoryCodeبقيمةE؛ وإغفاله يُطلق خطأ تحقّق. - يتعلّق 402 بخطتك لا بطلبك — فالطلب كان صالحًا. ولن تُجدي إعادة المحاولة حتى تُعاد الحصّة.
إخفاقات التسليم بعد الإرسال
الطلبPOST /invoices/{id}/submit غير متزامن: يعيد 202 بالحالة Pending،
بينما يجري التحقّق من قواعد PINT-AE والتسليم عبر Peppol في الخلفية. إذا فشل أيّ
منهما تتحوّل حالة المستند إلى DeliveryFailed — أي أنّ نجاح 202 عند
الإرسال لا يضمن التسليم.
- اعرض كل المستندات الفاشلة عبر
GET /invoices/failed— يحمل كل عنصر الحقلsubmissionErrorمع السبب (فشل قاعدة PINT-AE أو خطأ تسليم عبر Peppol). - أو استعلم عن مستند واحد عبر
GET /invoices/{id}— عندما تكون حالتهDeliveryFailedيتضمّن الردّ نفس الحقلsubmissionError.
PUT /invoices/{id}، ثم تحقّق عبر
POST /invoices/{id}/validate حتى يعيد "valid": true، ثم أعد الإرسال عبر
POST /invoices/{id}/submit.
يُجري
POST /invoices/{id}/validate نفس الفحوص التي تجري في الخلفية عند
الإرسال دون حفظ أي شيء — يمكنك استدعاؤه كما تشاء أثناء تصحيح المستند، وهو
طلب POST الوحيد الذي لا يتطلّب ترويسة Idempotency-Key.معالجة الأخطاء في الكود
- اعتمد في منطق المعالجة على مُعرِّف
type(أوstatus)، لا على نصtitleأوdetailأبدًا. - أعِد محاولة الأخطاء العابرة (429 و500 و502 وأخطاء الشبكة والمهل
المنتهية) مع تباطؤ تدريجي، وبنفس
Idempotency-Keyفي طلبات POST كي لا تُكرّر مستندًا أبدًا. - لا تُعِد محاولة 400/401/402/403/404/409/422 دون تفكير — فهذه تحتاج إلى إصلاح (تصحيح الحمولة أو المفتاح أو صلاحياته أو خطتك)، لا إلى محاولة أخرى.
- سجِّل قيمة
traceIdلأي خطأ 500/502 غير متوقَّع — يستطيع الدعم من خلالها الوصول إلى الطلب نفسه في سجلات المنصة.
ذات صلة
- المصادقة — معالجة أخطاء 401 و403.
- معرّف عدم التكرار — معالجة أخطاء 400 الناتجة عن المفتاح المفقود وأخطاء 409.