تجاوز إلى المحتوى الرئيسي
الإصدار: 1.x

الهيكلية

توضح هذه الصفحة الهيكلية الفنية لـ WCPOS للمطورين والمستخدمين المتقدمين.

نظام ذو جزءين

صُمِّم WCPOS كنظام ذي جزءين:

  1. إضافة PHP: مستضافة على خادمك، وهي إضافة صغيرة نسبيًا توسّع واجهة REST API الخاصة بـ WooCommerce بنقاط نهاية خاصة بنقطة البيع.

  2. عميل JavaScript: يعمل محليًا في متصفحك أو تطبيق سطح المكتب أو تطبيقات iOS/Android.

يمكنك التفكير فيه كعالمين منفصلين:

  • عالم PHP حيث تحدث إدارة البيانات باستخدام WordPress وWooCommerce.
  • عالم JavaScript يحتفظ بنسخة محلية قابلة للعمل دون اتصال من بيانات المتجر التي تحتاجها نقاط البيع لديك، محسَّنة للبحث السريع والاستجابة الفورية.
SVG not found

مزامنة البيانات

تغيّر في الإصدار 1.10.0

يستبدل الإصدار 1.10.0 طبقة التكرار السابقة بـمحرك مزامنة مخصص. والملخص أدناه هو النسخة المختصرة — أما الشرح الكامل فتجده في كيف يعمل محرك المزامنة.

العميل محلي أولًا: فكل شاشة تقرأ من قاعدة البيانات المحلية للجهاز وتكتب إليها، ويُبقي محرك مزامنة يعمل في الخلفية تلك القاعدة وWooCommerce متقاربتين. ولا يعكس المحرك متجرك بالكامل عكسًا أعمى — بل ينطلق مما تحتاجه شاشاتك فعليًا:

  • اكتشاف التغييرات: تستعلم نقطة البيع عن سجل تغييرات خفيف بطلبات شرطية؛ ويردّ المتجر الخامل باستجابة 304 واحدة بلا محتوى.
  • الطلب المُعلَن: تعلن الشاشة عمّا تعرضه، ويقرر المحرك ما إذا كان ذلك يستلزم طلبًا أم أنه مُجاب عنه محليًا بالفعل.
  • البذور والمسارات: بذرة كتالوج محدودة، ونافذة للطلبات الحديثة، ومسارات صيانة تعمل في أوقات الخمول، تملأ البيانات المحلية وتتحقق منها وفق جداول يمكنك ضبطها لكل جهاز.
  • عمليات كتابة معمَّرة: تُدرَج المبيعات والتعديلات في قائمة انتظار محلية ثم تُفرَّغ إلى WooCommerce، مع استعادة مرئية لأي شيء يرفضه الخادم.

ما الذي تتم مزامنته: المنتجات والبدائل، والفئات/الوسوم/العلامات التجارية، والعملاء، ومعدّلات الضريبة، والكوبونات (Pro)، والطلبات. أما بوابات الدفع فتُجلب عند الدفع.

مزايا الهيكلية وعيوبها

جيد 😊سيئ 😟
البحث في البيانات المحلية فوريالحفاظ على تزامن البيانات يمثّل تحديًا
البيانات المخبأة متاحة دون اتصالمقيَّد بواجهة REST API الخاصة بـ WooCommerce
القدرة على إنشاء تطبيقات أصلية أفضل لسطح المكتب وiOS وAndroidلا يمكن لسمات WordPress وخطافاتها تخصيص تطبيق نقطة البيع

قاعدة البيانات المحلية

يخزّن العميل البيانات في قاعدة بيانات محلية على كل جهاز — إذ يستخدم تطبيقا الويب وسطح المكتب تخزين OPFS (نظام الملفات الخاص بالأصل) العامل داخل worker، وتستخدم تطبيقات الجوال التنسيق نفسه على القرص عبر محرك نظام ملفات. وتشترك جميع المنصات في تنسيق تخزين واحد وأدوات استعادة واحدة. وهذا يوفّر:

  • الاستمرارية: تبقى البيانات صامدة بعد إعادة تشغيل المتصفح وإعادة تشغيل الجهاز
  • الأداء: استعلامات سريعة دون تأخير الشبكة — إذ تعمل التصفية والفرز والتقسيم إلى صفحات داخل طبقة التخزين، فلا يصل إلى الواجهة إلا صفحة الصفوف المرئية
  • التصفح دون اتصال: تبقى البيانات المخبأة متاحة دون إنترنت

يحصل كل مزيج من الموقع + المتجر + أمين الصندوق على قاعدة بيانات محلية خاصة به، فلا يتشارك أمناء الصندوق ولا المتاجر البيانات المحلية على جهاز واحد أبدًا. ولا تُرحِّل الترقيات قاعدة بيانات محلية في مكانها أبدًا — بل يعيد التطبيق التنزيل من الخادم، وهو النسخة المعتمدة دائمًا.

هيكلية الدفع

تستخدم عملية الدفع إطار iframe/webview يحمّل صفحة Order Pay الخاصة بـ WooCommerce. هذه الطريقة:

  • تستفيد من بوابات الدفع الموجودة: يمكن لأي بوابة دفع خاصة بـ WooCommerce العمل في نقطة البيع
  • تحافظ على الأمان: تتم معالجة الدفع من خلال البنية التحتية الآمنة لـ WooCommerce
  • تقلّل التعقيد: لا حاجة إلى إعادة تنفيذ تكاملات بوابات الدفع

توسيعات واجهة API

توسّع إضافة PHP واجهة REST API الخاصة بـ WooCommerce بنقاط نهاية إضافية لوظائف خاصة بنقطة البيع، مسجَّلة ضمن مساحتَي الأسماء المخصصتين wcpos/v1 وwcpos/v2 — وتحمل wcpos/v2 واجهة المزامنة الخاصة بالإصدار 1.10.0، ولهذا يُشحن إصدارا التطبيق والإضافة معًا. راجع واجهة REST API الخاصة بـ WooCommerce للاطلاع على مقدمة.

مساحة الأسماء wcpos/v2

يقدّم الإصدار 1.10 مساحة أسماء REST باسم wcpos/v2. المزامنة تعيش هنا، وخدمات نقطة البيع المشتركة التي كانت تُقدَّم سابقًا من wcpos/v1 تُقدَّم الآن من wcpos/v2 (فمسارات خدمة wcpos/v1 هي تمريرات إلى تطبيقاتها في v2). ولا تزال مسارات wcpos/v1 تُسجَّل للتوافق مع الإصدارات السابقة لكنها مجمَّدة — فالعميل الحالي لم يعد يستدعيها.

نقاط مهمة إذا كنت تتكامل مع نقاط النهاية هذه:

  • مسارات v2 تُسجَّل دائمًا. أُزيل خيار woocommerce_pos_sync_api_enabled القديم؛ فلم يعد هناك مفتاح يشغّل الواجهة أو يوقفها.
  • نقاط نهاية عامة. إن wcpos/v2/site وwcpos/v2/ping وwcpos/v2/echo عامة (تُستخدم لفحص القدرات والاتصال، بما في ذلك الحلول الاحتياطية للنقل للمضيفين المقيِّدين).
  • الطلبات ذات معرّف UUID أساسي. هوية الطلب على الشبكة هي UUID؛ وقد أُلغي الحقل القديم wooOrderId من مغلّف سحب الطلبات. وتُصنَّف بيانات ميتا الطلب على الشبكة عبر مُوحِّد واحد.
  • تخزين تسعير البنود موثَّق من أجل توافق المزامنة مع الجهات الخارجية — راجع كيف تُخزَّن تجاوزات أسعار نقطة البيع.
  • الفرز الافتراضي للمنتجات في نقطة البيع أصبح الآن حسب الاسم تصاعديًا (وكان سابقًا menu_order, id).
  • طرق قديمة أُزيلت. أُزيلت عدة طرق قديمة من متحكم API\Settings (مثل get_general_settings() وupdate_access_settings() وget_general_endpoint_args() وremove_license_transient())؛ ويبقى الاسم البديل للفئة لكن تلك الطرق لا تبقى.
Pro تعكس التقسيم

تتبع WCPOS Pro تقسيم V1/V2 نفسه — إذ تُرقَّى خدماتها المشتركة إلى wcpos/v2 بينما تبقى بيانات طلباتها مجمَّدة عند v1. ويعمل تسعير المنتجات المحدَّد بنطاق المتجر على مسار v2، ويُحمَل نطاق متجر نقطة البيع على عمليات كتابة الطلبات بحيث تُسعَّر الطلبات متعددة المتاجر وتُفرض عليها الضريبة مقابل المتجر الصحيح. راجع Pro.