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

الأخطاء

تجمع هذه الصفحة الأخطاء الموصوفة في بقية الصفحات لتعالجها في مكان واحد. ترد الواجهة على كل خطأ بغلاف JSON واحد، أما نقاط OAuth فتستخدم صيغة RFC 6749.

غلاف الخطأ في الواجهة​

{
"error": { "code": "forbidden", "message": "Missing scope: orders:write" },
"meta": { "request_id": "8f2c1a9d4b7e6035", "api_version": "v1" }
}

error.code ثابت ومخصص لبرنامجك. error.message موجه للبشر وقد يتغير. اذكر meta.request_id عندما تراسل DZBuild بخصوص استدعاء ما. تضيف بعض الأخطاء حقولاً داخل error، مثل retry_after في الرد 429.

أكواد حالة الواجهة​

الحالةerror.codeالرسالةالسبب والإجراء
400bad_requestمتغيرةترويسة Idempotency-Key مفقودة أو غير صحيحة في طلب POST أو PATCH أو DELETE، أو المتن ليس JSON صالحاً، أو معرّف في المسار ليس رقماً. صحّح الطلب وأرسل مفتاحاً جديداً.
401unauthorizedMissing Authorization headerلا توجد ترويسة Authorization.
401unauthorizedUnsupported Authorization schemeالترويسة لا تبدأ بـ Bearer.
401unauthorizedInvalid or revoked API keyالرمز خاطئ، أو أزال التاجر تطبيقك. تعامل معه كإزالة ما لم تكن متأكداً من غير ذلك.
402no_creditمحفظة WhatsApp في المتجر فارغة. لم يُصطف شيء ولم يُخصم شيء. إعادة المحاولة لا تفيد؛ يعبّئ التاجر الرصيد من لوحة التحكم.
402quota_exceededبلغ المتجر حصة شهرية من الطلبات حددتها DZBuild له. إعادة المحاولة لا تفيد.
403forbiddenMissing scope: <scope>الرمز لا يحمل الصلاحية التي تحتاجها نقطة الوصول. بعض عمليات الكتابة تحتاج صلاحية القراءة أيضاً؛ انظر الصلاحيات.
403forbiddenApps cannot use this endpoint/v1/keys و/v1/webhooks و/v1/changes مغلقة أمام رموز التثبيت.
403app_uninstalledThis app is no longer installed on this storeالتثبيت لم يعد نشطاً. توقف عن استخدام الرمز واحذف بيانات المتجر.
403app_suspendedThis app has been suspended by DZBuildأوقفت DZBuild التطبيق أو رفضته. تعود الاستدعاءات إلى العمل بعد رفع الإيقاف.
403app_not_approvedThis app is in test mode and only runs on its developer's storesلم يُقبل التطبيق بعد والمتجر ليس ملكك.
403app_plan_requiredThis app requires the ... planخطة المتجر، أو خطة مدفوعة منتهية، أدنى من الخطة الدنيا للتطبيق. أخبر التاجر بالخطة المطلوبة.
403addon_not_activeخاص بـ WhatsApp. لم يفعّل التاجر إضافة WhatsApp Sender.
403plan_requiredخاص بأقسام الصفحة الرئيسية. الكتابة تترك أقساماً أكثر مما تسمح به خطة المتجر. يحمل error قيمتي plan وcap.
404not_foundلا يوجد سجل بهذا المعرّف في هذا المتجر.
404section_not_foundخاص بأقسام الصفحة الرئيسية. لا يوجد قسم بهذا الرقم في الصفحة الرئيسية للمتجر.
409already_sentخاص بـ WhatsApp. أُرسل هذا القالب من قبل لهذا الطلب. يحمل error قيمتي id وstatus للرسالة الموجودة.
409write_conflictخاص بأقسام الصفحة الرئيسية. غيّرت كتابة أخرى التخطيط قبلك، أو version المرسلة مع PUT ليست الحالية. عندما يحمل error قيمتي sections وversion أعد المحاولة انطلاقاً منهما، وإلا فاقرأ التخطيط من جديد.
422idempotency_key_reuseأُرسل المفتاح Idempotency-Key نفسه بطريقة أو مسار أو متن مختلف. مفتاح واحد لكل عملية.
422أكواد WhatsAppunknown_template وinvalid_language وinvalid_number وsuppressed وtemplate_not_approved وempty_param. لم يُخصم شيء. صحّح السبب وأعد الاستدعاء بمفتاح جديد. انظر واجهة WhatsApp.
422أكواد أقسام الصفحة الرئيسيةinvalid_settings (تذكر error.fields الإعدادات المرفوضة، ومع PUT إعدادات أول قسم مرفوض) وinvalid_section_type وlimit_reached وinvalid_order وno_changes. صحّح الطلب وأعد الاستدعاء بمفتاح جديد. انظر أقسام الصفحة الرئيسية.
429rate_limitedPer-minute API limit exceeded for this app installنفدت ميزانية تثبيتك، 120 طلباً في الدقيقة. انتظر retry_after ثانية (موجودة أيضاً في ترويسة Retry-After) ثم أعد الإرسال بالمفتاح Idempotency-Key نفسه.
429rate_limitedPer-minute API limit exceeded for this storeنفدت ميزانية المتجر المشتركة. المعالجة نفسها.
429rate_limitedPer-minute API limit exceeded for this keyسقف البوابة، 600 طلب في الدقيقة لكل متجر. المعالجة نفسها.
429too_many_concurrentعمليات مكلفة كثيرة في الوقت نفسه (رفع الصور، استدعاءات شركات التوصيل، كتابات أقسام الصفحة الرئيسية). قيمة retry_after هي 5 ثوانٍ.
500send_failedخاص بـ WhatsApp. تعذّر اصطفاف الرسالة. أعد المحاولة لاحقاً.
502server_errorKey lookup failed, retry shortlyلم تستطع البوابة التحقق من الرمز لدى DZBuild. أعد المحاولة بعد انتظار قصير بالمفتاح Idempotency-Key نفسه.

إعادة المحاولة أم لا​

الردإعادة المحاولةباستخدام
429نعم، بعد retry_after ثانيةالمفتاح Idempotency-Key نفسه
5xx و502نعم، بعد انتظار قصيرالمفتاح Idempotency-Key نفسه؛ هذه الردود لا تُحفظ أبداً، لذلك يُنفَّذ الطلب
400 و401 و403 و404 و422لا. صحّح السبب أولاًمفتاح Idempotency-Key جديد، لأن الرد 4xx المحفوظ يُعاد لمدة 24 ساعة
402لا. على التاجر أن يتصرف
409 already_sentلا. الرسالة موجودة
409 write_conflictنعم، انطلاقاً من sections وversion في error أو بعد قراءة التخطيط من جديدمفتاح Idempotency-Key جديد

أخطاء OAuth​

قبل أن تطابق DZBuild قيمتي client_id وredirect_uri، تعرض صفحة خطأ للتاجر ولا تعيد التوجيه أبداً. بعد ذلك تعيد التوجيه إلى redirect_uri مع معامل error:

errorالسبب
unsupported_response_typeقيمة response_type ليست code.
invalid_requeststate مفقود أو أطول من 1024 حرفاً، أو code_challenge ليس 43 حرفاً بصيغة base64url، أو code_challenge_method ليس S256.
invalid_scopeصلاحية غير مسجلة على التطبيق أو غير مسموح بها للتطبيقات، أو معامل scope أطول من 512 حرفاً.
access_deniedضغط التاجر على رفض.

ترد نقطة الرمز بصيغة JSON تحمل error وerror_description:

HTTPerrorالسبب
401invalid_clientclient_id أو client_secret مفقود أو خاطئ.
400unsupported_grant_typeقيمة grant_type ليست authorization_code.
400invalid_grantكود مجهول أو منتهٍ أو مستعمل، أو كود صادر لتطبيق آخر، أو redirect_uri مختلف، أو مُحقِّق لا يطابق التحدي، أو تعذّر تثبيت أي متجر من المتاجر المختارة.
500server_errorعطل في المنصة. أعد توجيه التاجر إلى خطوة التفويض من جديد.
403لا يوجد، الجسم صفحة HTMLالطلب لا يحمل الترويسة User-Agent، وdzbuild.com يجيب على أي طلب POST بدونها بصفحة تحقق بدل JSON. أرسلها، مثلا my-app/1.0 (+https://example.com).

الكود الذي طُلب استبداله يُستهلك حتى لو فشل التبادل، لذلك ابدأ طلب تفويض جديداً بدل إعادة المحاولة بالكود نفسه. الترتيب الكامل للفحوص وصفحات الخطأ في صفحة OAuth.

إخفاقات إرسال إشعارات webhook​

ينجح الإرسال عندما يرد خادمك بـ 2xx خلال 10 ثوانٍ. أي حالة أخرى، أو إعادة توجيه، أو انتهاء مهلة، أو خطأ اتصال يُعدّ محاولة فاشلة. تحاول DZBuild كل إرسال حتى 5 مرات بفترات انتظار متزايدة، ثم تعلّمه كمتروك. بعد 10 محاولات فاشلة متتالية على تثبيت واحد يُعطَّل رابطه؛ اضغط على تحقق في منصة المطورين لإعادة تفعيله. التفاصيل والجدول في صفحة إشعارات Webhook.

يجب أن يرد تحققك أنت بـ 401 عندما يفشل التوقيع أو فحص الطابع الزمني. ولأن ذلك ليس رداً 2xx، تعدّه DZBuild محاولة فاشلة وتعيد المحاولة؛ الطلب الذي يفشل في التحقق دائماً ليس من DZBuild، أو أن سرّ التوقيع لديك قديم.

هذه الصفحة لأدوات الذكاء الاصطناعيعرض بصيغة Markdownفتح في ChatGPTفتح في Claude