دليل التجار

ربط Shopify: تطبيق مخصص أو التطبيق العام

ربط Shopify يدوياً بتطبيق Dev Dashboard أو Custom App، والتطبيق العام (جزئي ويحتاج إعداد المنصة)، مع الويب هوك وسعر الشحن عند الدفع وطلبات الخصوصية والأخطاء.

آخر تحديث 22 أكتوبر 2026 · آخر تحقق 22 أكتوبر 2026

الغرض#

هناك طريقتان لربط Shopify. الطريقة اليدوية من صفحة «ربط المتاجر» متاحة وتعمل بتطبيق تنشئه أنت (Dev Dashboard أو Custom App قديم). أما التطبيق العام (التثبيت من Shopify أو زر «ربط بضغطة») فهو جزئي: لا يعمل إلا بعد أن يضبط مدير المنصة بيانات تطبيق Shopify على الخادم. في الحالتين تتحوّل الطلبات إلى طرود وتعود الحالة إلى Shopify.

من يستطيع استخدامها وما الذي تحتاجه#

  • تاجر منصة تتضمن باقته «ربط المتاجر» ولديه متسع ضمن «عدد المتاجر المربوطة»، وشركة توصيل متاحة ومكان استلام فعّال، وهما إلزاميان. والتاجر الذي أنشأته شركة توصيل لا يفتح الصفحة.
  • حساب صاحب المتجر في Shopify، فيجب أن يُنشأ تطبيق Dev Dashboard في المؤسسة نفسها التي فيها المتجر.
  • الصلاحيات التي تعرضها الصفحة: read_orders و write_orders و read_merchant_managed_fulfillment_orders و write_merchant_managed_fulfillment_orders و write_shipping.

خطوات الربط اليدوي#

  1. أنشئ التطبيق في Dev Dashboard

    من dev.shopify.com وبحساب صاحب المتجر: اختر Apps ثم Create app، والاسم Delivery Syria.

  2. اختر الصلاحيات وأصدر النسخة

    في Versions اختر الصلاحيات المذكورة أعلاه ثم Release.

  3. ثبّت التطبيق على متجرك

    اضغط Install app على متجرك ووافق على الصلاحيات.

  4. الصق Client ID ثم Client secret

    من Settings انسخ Client ID ثم Client secret. في «ربط المتاجر» وتبويب «تطبيق Dev Dashboard (جديد)» الصقهما مع اسم المتجر بصيغة mystore.myshopify.com، واختر شركة الشحن ومكان الاستلام، ثم اضغط «ربط شوبيفاي».

  5. تحقق من النتيجة

    تفحص المنصة الاتصال وقراءة الطلبات، وتحفظ الربط، وتسجّل الويب هوك orders/create و orders/updated. عند النجاح تظهر «تم تسجيل الـ Webhooks بشوبيفاي (طلب جديد + تحديث طلب).». وإن فشل التسجيل بقي الربط مع تحذير، ويُعاد التسجيل بزر «إعادة تسجيل الـ Webhooks» بعد معالجة السبب.

  1. شاهد طلبات هذا المتجر
  2. شركة التوصيل لطلبات المتجر
  3. مكان الاستلام الافتراضي
ربط المتجر الإلكتروني (بيانات تجريبية)

طرق أخرى للربط#

  • Custom App قديم (shpat): إن كان لديك تطبيق منشأ من لوحة المتجر قبل 2026 فاستعمل تبويب «Custom App قديم (shpat)» والصق Admin API access token (يبدأ بـ shpat_) وAPI secret key، بالصلاحيات نفسها.
  • «ربط بضغطة»: يظهر نموذجه في أعلى بطاقة Shopify فقط إذا ضُبط التطبيق العام على الخادم. اكتب اسم المتجر واختر الشركة ومكان الاستلام، فتنتقل إلى Shopify للموافقة ثم تعود فيكتمل الربط وأنت مسجّل الدخول، ويظهر المتجر بوسم «— تطبيق».
  • التثبيت من Shopify: بعد الموافقة تصل إلى صفحة تسجّل فيها دخولك بحساب التاجر (البريد الإلكتروني أو رقم الجوال) وتختار الشركة ومكان الاستلام وتؤكد، والرابط صالح 30 دقيقة. وتُسجَّل الويب هوك على /api/stores/shopify/app مع app/uninstalled، وحذف التطبيق من المتجر يوقف الربط.

النتيجة المتوقعة#

الطلب في Shopify النتيجة
مدفوع (paid أو authorized أو partially_refunded) طرد بلا تحصيل
بوابة «الدفع عند الاستلام» (اسمها يتضمن cash أو cod أو «الدفع عند») أو partially_paid طرد مع تحصيل المبلغ المتبقي
حالة دفع أخرى ينتظر الدفع
ملغى أو voided أو refunded يُعلَّم ملغياً
مشحون مسبقاً (fulfilled أو partial) يُتجاهل

الوزن من أوزان الأصناف وإلا فالوزن الافتراضي. وعند إنشاء الطرد تُنشأ Fulfillment برقم التتبع واسم الشركة Delivery Syria ورابط تتبع، ويتلقى الزبون إشعاراً من Shopify. وإن لم يوجد Fulfillment Order مفتوح ظهرت رسالة «ما في Fulfillment Order مفتوح للطلب بشوبيفاي…». وتُرسل بعد ذلك الأحداث: تعيين المندوب أو إعادة جدولة التوصيل out_for_delivery، والتسليم الكامل أو الجزئي delivered، وفشل التوصيل failure، والوصول إلى المستودع confirmed.

التحقق من التوقيع: ترسل Shopify الترويسة X-Shopify-Hmac-Sha256 (Base64 لـ HMAC-SHA256 لجسم الطلب) بسرّ التطبيق، أي Client secret أو API secret key. والطلب الخاطئ يُرفض بـ HTTP 401 (Invalid signature).

سعر الشحن في صفحة الدفع#

مع التطبيق العام تسجّل المنصة طريقة شحن «Delivery Syria» وتطلب Shopify سعرها من العنوان /api/stores/shopify/rates وقت الدفع. تُعرض الطريقة (DS_STANDARD) بسعر محسوب كما في إنشاء الطرد فقط إذا تحققت الشروط التالية: الوجهة سوريا، والمحافظة معروفة، والربط فعّال وفيه شركة توصيل، والسعر أكبر من صفر، ولعملة المتجر سعر صرف. وإن لم تدعم خطة Shopify الأسعار المحسوبة لم تُسجَّل الطريقة وبقيت الطلبات تصل عادياً.

طلبات الخصوصية#

يقبل العنوان /api/stores/shopify/compliance الطلبات الموقّعة توقيعاً صحيحاً: customers/redact يمسح بيانات الطلبات المذكورة واسم الزبون، وshop/redact يوقف الربط ويحذف بيانات الاعتماد ويمسح بيانات الطلبات المخزّنة. وتبقى الطرود سجلاً للشحن، أما customers/data_request فيُسجَّل فقط.

أخطاء شائعة#

الرسالة السبب والحل
«شوبيفاي رفض: التطبيق والمتجر مو بنفس المؤسسة (Organization)…» أنشئ التطبيق من حساب صاحب المتجر
«تعذّر الحصول على توكن من شوبيفاي… تأكد من Client ID/Secret…» راجع المفتاحين وثبّت التطبيق
«التوكن مرفوض من شوبيفاي…» راجع Admin API access token وثبّت التطبيق
«الاتصال ناجح بس ما في صلاحية قراءة الطلبات (read_orders)…» أضف الصلاحيات وأعد التثبيت
«شوبيفاي رفض تسجيل Webhooks الطلبات (403)…» (التطبيق العام، بالعربية فقط) اطلب الوصول إلى «بيانات الزبائن المحمية» في Dev Dashboard ثم افتح التطبيق مجدداً
تحذير بتعذّر تسجيل ويب هوك (يعرض رمز حالة HTTP ونص الخطأ من Shopify)، الربط اليدوي اقرأ رمز الحالة ونص الخطأ في التحذير، وتأكد أن التطبيق مثبّت بكل الصلاحيات المذكورة أعلاه، ثم اضغط «إعادة تسجيل الـ Webhooks» في قائمة «متاجرك المربوطة»
«تطبيق شوبيفاي مو مفعّل على السيرفر» (503، بالعربية فقط) لم يضبط مدير المنصة التطبيق العام
«طلب ربط شوبيفاي منتهي أو مو لحسابك — ابدأ الربط من جديد.» طلب الربط الذي بدأته من البطاقة صالح 15 دقيقة (والرابط الذي يُفتح من Shopify صالح 30 دقيقة)

الحدود والصلاحيات#

  • الربط بالنموذج اليدوي (تبويب Dev Dashboard أو التبويب القديم) محدود بـ 20 طلباً في الدقيقة؛ وفي صفحة التطبيق العام تسجيل الدخول محدود بـ 5 في الدقيقة والتأكيد بـ 10؛ واستقبال الويب هوك محدود بـ 240 في الدقيقة. وتُفحص توقيعات ويب هوك الطلبات وحذف التطبيق والخصوصية، أما استدعاء احتساب سعر الشحن عند الدفع فيُرفض إن كان توقيعه غير صحيح، ولا تكون الترويسة إلزامية فيه.
  • بيانات الاعتماد والسرّ مخزّنة مشفّرة، وفي تطبيق Dev Dashboard يُجدَّد التوكن (24 ساعة) تلقائياً.
  • رابط التتبع المرسل إلى Shopify يفتح صفحة التتبع في موقع المنصة للطرد المعني، وليس صفحة الطرد العامة التي تتلقاها سلة.
  • صفحات التطبيق العام وكثير من الرسائل بالعربية فقط، ومنها الرسالتان المعلَّمتان أعلاه: «شوبيفاي رفض تسجيل Webhooks الطلبات (403)…» و«تطبيق شوبيفاي مو مفعّل على السيرفر».

API

  • POST /api/stores/shopify/{token}
  • POST /api/stores/shopify/app
  • POST /api/stores/shopify/rates
  • POST /api/stores/shopify/compliance