تخطَّ إلى المحتوى
شركاء زد
برامج المطوريننظرة عامة على كل مسارات البناء على زدشركاء التطبيقاتانشر تطبيقك في سوق التطبيقاتشركاء الثيماتأطلق ثيمك في سوق الثيمات
سوق التطبيقاتالتطبيقات المتاحة لتجار زدسوق الثيماتثيمات جاهزة للتثبيت
الدعم
مركز مساعدة الشركاءأدلة الاستخدام وحل المشاكلالتوثيق التقنيالواجهات والـSDK وأدلة التكاملاحجز اجتماعًااجتماع تجاري أو دعم تقني
ما الجديد؟
المدونةأدلة وتحديثات للمطورينسجل التحديثاتآخر تحديثات منصة الشركاءاقترح ميزةبوابة الملاحظات والأفكار
تمكين الشريك
إعلانات الشركاءباقات ظهور في قنوات زدالثيمات المخصصةثيمات تبنيها لتاجر بعينهمجتمع الشركاءتواصل مع مطوّرين يبنون على زد
مكتبة زد
تقارير زدكل ما تحتاج معرفته عن السوقأدلة المطورينمراجع رسمية تبني عليها
ENتسجيل الدخولانضم كشريك الآن
برامج الشركاء
برامج المطورينشركاء التطبيقاتشركاء الثيمات
تصفّح السوق
سوق التطبيقاتسوق الثيمات
الدعم والتمكين
مركز مساعدة الشركاءالتوثيق التقنياحجز اجتماعًاالمدونةسجل التحديثاتاقترح ميزةإعلانات الشركاءالثيمات المخصصةمجتمع الشركاءتقارير زدأدلة المطورين
اللغة
English
تسجيل الدخولانضم كشريك الآن
الرئيسية/المدونة/الواجهات والتكامل
الواجهات والتكامل

الاتصال بزد عبر OAuth 2.0: الـ Tokens والـ Headers وسياسة التفعيل

كيف يعمل تدفق authorization code في زد، وأي Token يوضع في أي Header، ومتى تنتهي صلاحية الـ Tokens، وماذا تتوقع سياسة التفعيل من تطبيقك.

18 سبتمبر 20264 دقائق

كيف يعمل OAuth في زد

تعتمد زد على نوع التفويض authorization code في OAuth 2.0. يُوجَّه التاجر إلى Server التفويض في زد، فيوافق على الصلاحيات التي يطلبها تطبيقك، ثم يستبدل الـ Server الخاص بك الرمز الناتج بالـ Tokens. ولأن هذا الاستبدال يحتاج Client Secret، يجب أن يعمل تطبيقك على الـ Server (server-side).

ستتعامل مع عنوانين أساسيين:

  • Server OAuth: https://oauth.zid.sa
  • الـ API: https://api.zid.sa/v1، وv1 هو الإصدار الحالي، أما الإصدارات الأقدم فمتوقفة
كل طلبات الـ API يجب أن تمر عبر HTTPS. الطلبات عبر HTTP العادي تفشل، وكذلك الطلبات غير الموثّقة.

التدفق خطوة بخطوة

  1. التوجيه: أرسل متصفح التاجر إلى /oauth/authorize على Server OAuth، ومعه client_id وredirect_uri وresponse_type=code.
  2. الموافقة: إن لم يكن التاجر مسجّل الدخول، تطلب منه زد تسجيل الدخول أولًا. بعدها يرى الصلاحيات التي يطلبها تطبيقك، فيوافق أو يرفض.
  3. الـ Callback: ترسل زد Authorization Code صالحًا لمرة واحدة إلى الـ callback لديك.
  4. تبادل الرمز: يرسل الـ Server الخاص بك الرمز مع بيانات اعتماد التطبيق بطلب POST إلى /oauth/token. تُرسل القيم في جسم الطلب، لا في URL Parameters.
  5. الحفظ: احفظ الـ Tokens المُعادة في مكان آمن لتستخدمها في الطلبات القادمة.
curl -X POST https://oauth.zid.sa/oauth/token \
     -d "grant_type=authorization_code" \
     -d "client_id=48" \
     -d "client_secret=LsswUNyWTjyKT9AsXnpsv3FnG4glSNZQ5SM3YRnD" \
     -d "redirect_uri=http://client.test/oauth/callback" \
     -d "code=your_authorization_code_here"

إن أردت مرجعًا جاهزًا، فزد توفر تطبيقات بداية مبنية بـ Laravel وNode.js (Express).

أي Token في أي Header؟

تحتوي الاستجابة على access_token وAuthorization وrefresh_token وexpires_in. اثنان منها يُرسلان مع كل طلب:

  • Authorization: يمنح تطبيقك الوصول إلى Zid API. أرسله في Header Authorization مسبوقًا بكلمة Bearer.
  • access_token: يمنح الوصول إلى متجر بعينه. أرسله في Header X-Manager-Token.
Authorization: Bearer <Authorization token>
X-Manager-Token: <access_token>
لأسباب تقنية، تستخدم نقاط المنتجات (Products) Header Access-Token، وقيمتها هي نفسها قيمة X-Manager-Token.

كلا الـ Tokens حساس، فاحفظهما في مخزن آمن على الـ Server. ويحذّر التوثيق من أن إساءة استخدام الـ Token قد تؤدي إلى حظر تطبيقك.

انتهاء الصلاحية والتجديد وإلغاء التثبيت

تنتهي صلاحية الـ manager token بعد سنة، وكذلك الـ refresh token. ينصح التوثيق بالتجديد قبل انقضاء السنة بوقت كافٍ، في حدود الشهر العاشر. وللتجديد أرسل طلب POST إلى /oauth/token ومعه grant_type=refresh_token والـ refresh_token الخاص بالتاجر وclient_id وclient_secret وredirect_uri.

  • الـ refresh token صالح لاستخدام واحد فقط، فاحفظ الـ Token الجديد بعد كل تجديد.
  • إذا أبلغتك زد أن الـ refresh token غير صالح، فابدأ OAuth من جديد بأن يعيد التاجر تفعيل التطبيق.
  • عند إلغاء التاجر تثبيت تطبيقك، ترسل زد webhook بهذا الحدث وتتوقف الـ Tokens الخاصة بك عن العمل.

تختار الصلاحيات (Scopes) من صفحة تطبيقك في لوحة الشركاء، ويراجعها الفريق عند الإرسال. اطلب فقط ما يحتاجه تطبيقك فعلًا.

الأخطاء وحدود الطلبات

  • 401 Unauthorized: التوثيق مفقود أو فشل، فراجع الـ Tokens.
  • 403 Forbidden: فُهم الطلب لكنه رُفض، فراجع الصلاحيات.
  • 429 Too Many Requests: خفّف الطلبات وأعد المحاولة بتأخير يتزايد تدريجيًا (exponential backoff).
  • رسالة «The resource owner or authorization server denied the request»: يرجعها مركز المساعدة إلى نقص الصلاحيات أو إلى أن التطبيق غير منشور على ذلك المتجر. وتحقق أيضًا من تطابق رابط الـ redirect في خطوتي التوجيه والـ callback.

تسمح زد بـ 60 طلبًا في الدقيقة لكل تطبيق في كل متجر، وتطبّق خوارزمية Leaky Bucket. لا تستعلم مرارًا عن حالة الطلبات أو الدفع، واستخدم الـ Webhooks بدلًا من ذلك.

سياسة التفعيل وOAuth

تنطبق سياسة تفعيل التطبيقات وOAuth في زد (المحدّثة في 9 سبتمبر 2026) على كل التطبيقات الجديدة المرسلة إلى سوق التطبيقات. وهذه أبرز نقاطها:

  • OAuth أولًا: يبدأ التطبيق القياسي OAuth فور ضغط التاجر على Activate. يدفع التاجر قيمة الباقة عبر زد قبل ذلك إن وُجدت، ولا يجوز أن يطلب التطبيق دفعة إضافية من جهة الشريك. ربط الحساب والإعداد يأتيان بعد OAuth.
  • الإعداد الذي يديره الشريك (Partner-managed setup)، أي إكمال متطلبات قبل OAuth، يحتاج موافقة كتابية مسبقة من زد. كون التطبيق مجانيًا أو بلا باقات في زد لا يعني الحصول على هذه الموافقة.
  • مسارات مرفوضة: شاشة تسجيل أو دخول قبل OAuth، أو إرسال التاجر إلى صفحة رئيسية عامة، أو مطالبته بلصق Tokens أو أسرار أو كلمات مرور، أو كتابة Store ID أو رابط المتجر.
  • الأمان: تحقق من قيمة state عشوائية وصالحة لمرة واحدة وقصيرة العمر. استخدم PKCE حيث يكون مدعومًا. استبدل الرمز فورًا ولا تسجّله في الـ Logs. وأبقِ الـ Tokens بعيدة عن الروابط والتخزين في المتصفح وأدوات التحليل والـ Logs.
  • دورة الحياة: تعامل بأمان مع الرفض والمحاولات المكرّرة، وتجنّب الاتصالات المكرّرة عند إعادة التثبيت، وأوقف المعالجة بعد إلغاء التثبيت.
تسجّل زد التثبيت لحظة تبادل الرمز. لا تعرض حالة Service ready إلا بعد أن يكتمل إعدادك أنت فعلًا.

الخلاصة

  • تستخدم زد نوع authorization code. استبدل الرمز على الـ Server، وضع القيم في جسم الطلب.
  • أرسل Authorization: Bearer ... ومعها X-Manager-Token (قيمة access_token) مع كل طلب.
  • صلاحية الـ Tokens سنة. جدّدها قبل انتهائها، واحفظ كل refresh token جديد لأنه صالح لمرة واحدة.
  • يجب أن تبدأ التطبيقات الجديدة OAuth فور التفعيل، ولا تجمع أسرار زد يدويًا أبدًا.

المصادر

  1. Authorization
  2. Zid App Activation & OAuth Policy
  3. Responses
  4. Rate Limiting
  5. The refresh token is invalid
  6. The resource owner or authorization server denied the request

ابدأ البناء على زد

سجّل بنفسك في بوابة الشركاء، وطوّر واختبر على متجر تجريبي.

أنشئ حسابك ←

جدول المحتويات

  1. كيف يعمل OAuth في زد
  2. التدفق خطوة بخطوة
  3. أي Token في أي Header؟
  4. انتهاء الصلاحية والتجديد وإلغاء التثبيت
  5. الأخطاء وحدود الطلبات
  6. سياسة التفعيل وOAuth

شارك المقال

ابدأ البناء

مقالات ذات صلة

←
الواجهات والتكامل

التطبيقات المدمجة في زد: ابنِ تجربتك داخل لوحة تحكم التاجر

كيف يعمل تطبيقك داخل لوحة تحكم التاجر، وخطوات الـ Authentication الست، والأدوات التي تساعدك: Zid MUI وZid SDKs وأحداث واجهة المتجر.

6 دقائق
الواجهات والتكامل

الـ Webhooks في زد: الاشتراك، ومتابعة الصحة، واستعادة الروابط المعطّلة

اشترك في أحداث المتجر، وحافظ على سلامة روابطك، وأعِد أي webhook معطّل إلى العمل باستخدام أدوات تتبّع الصحة والاستعادة في زد.

4 دقائق
تحديثات المطورين

واجهة Account API: كيف تنتقل من GET v1/managers/profile

توقف زد GET v1/managers/profile، وموعد الانتقال 30 سبتمبر 2026. تعرّف على نقاط Account API الجديدة ونطاقاتها وقائمة خطوات الانتقال.

5 دقائق
شركاء زد

برامج الشركاء

برامج المطورينشركاء التطبيقاتشركاء الثيماتأنشئ حسابك

الموارد

المدونةإعلانات الشركاءتقارير زدالتوثيق التقنيمركز مساعدة الشركاءسجل التحديثاتاقترح ميزة

تصفّح السوق

سوق التطبيقاتسوق الثيمات

الشروط والسياسات

شروط شركاء التطبيقاتشروط شركاء الثيماتسياسة الثيمات التجاريةسياسة الخصوصية

تواصل معنا

احجز اجتماعًا تجاريًااحجز اجتماع دعم تقنيمجتمع مصممي الثيمات
زد — القدرة التقنية للتقنية والاتصالاتEnglish
Al-Qudrah Al-Taqniyah for Technology and Communication Companyرقم السجل التجاري 1010365366رقم ضريبة القيمة المضافة 300827827900003