मुख्य सामग्री के लिए छोड़ें
संस्करण: 1.x

वास्तुकला

यह पृष्ठ डेवलपर्स और उन्नत उपयोगकर्ताओं के लिए WCPOS की तकनीकी वास्तुकला को समझाता है।

दो-भाग प्रणाली

WCPOS को एक दो-भाग प्रणाली के रूप में डिज़ाइन किया गया है:

  1. PHP प्लगइन: आपके सर्वर पर होस्ट किया गया, यह एक अपेक्षाकृत छोटा प्लगइन है जो WooCommerce REST API को POS-विशिष्ट एंडपॉइंट्स के साथ विस्तारित करता है।

  2. JavaScript क्लाइंट: यह आपके ब्राउज़र, डेस्कटॉप ऐप, या iOS/Android ऐप्स में स्थानीय रूप से चलता है।

आप इसे दो अलग-अलग दुनियाओं के रूप में सोच सकते हैं:

  • PHP दुनिया वह स्थान है जहाँ डेटा प्रबंधन WordPress और WooCommerce का उपयोग करके होता है।
  • JavaScript दुनिया आपके काउंटरों को जिस स्टोर डेटा की आवश्यकता है उसकी एक स्थानीय, ऑफ़लाइन-सक्षम कॉपी रखती है, जो तेज़ खोज और तत्काल प्रतिक्रिया के लिए अनुकूलित है।
pos-client-woo-server

डेटा समकालिकता

v1.10.0 में बदला गया

v1.10.0 पिछली रेप्लिकेशन परत को एक समर्पित सिंक इंजन से बदल देता है। नीचे दिया गया सारांश संक्षिप्त संस्करण है — पूरी व्याख्या सिंक इंजन कैसे काम करता है में है।

क्लाइंट लोकल-फ़र्स्ट है: हर स्क्रीन डिवाइस के स्थानीय डेटाबेस से पढ़ती और उसमें लिखती है, और एक पृष्ठभूमि सिंक इंजन उस डेटाबेस और WooCommerce को अभिसरित रखता है। इंजन आपके पूरे स्टोर की आँख मूँदकर नकल नहीं करता — यह इस आधार पर काम करता है कि आपकी स्क्रीनों को वास्तव में क्या चाहिए:

  • बदलाव पहचान: POS एक हल्के बदलाव-लॉग को कंडीशनल अनुरोधों से पोल करता है; एक निष्क्रिय स्टोर एक ही बॉडी-रहित 304 से उत्तर देता है।
  • घोषित माँग: एक स्क्रीन बताती है कि वह क्या दिखा रही है, और इंजन तय करता है कि उसके लिए किसी अनुरोध की आवश्यकता है या उसका उत्तर पहले से स्थानीय रूप से मौजूद है।
  • सीड और लेन: एक सीमित कैटलॉग सीड, एक हालिया-ऑर्डर विंडो, और निष्क्रिय-समय की रखरखाव लेन ऐसी समय-सारणियों पर स्थानीय डेटा भरती और सत्यापित करती हैं जिन्हें आप प्रति डिवाइस समायोजित कर सकते हैं।
  • टिकाऊ राइट: बिक्री और संपादन स्थानीय रूप से कतार में जाते हैं और WooCommerce तक पहुँचते हैं, और सर्वर जो कुछ अस्वीकार करता है उसके लिए दृश्यमान रिकवरी होती है।

क्या सिंक होता है: उत्पाद और भिन्नताएँ, श्रेणियाँ/टैग/ब्रांड, ग्राहक, कर दरें, कूपन (Pro), और ऑर्डर। भुगतान गेटवे चेकआउट के समय लाए जाते हैं।

वास्तुकला के फ़ायदे और नुकसान

अच्छा 😊बुरा 😟
स्थानीय डेटा की खोज तत्काल होती हैडेटा को सिंक में रखना चुनौतीपूर्ण है
कैश किया गया डेटा ऑफ़लाइन उपलब्ध हैWooCommerce REST API द्वारा सीमित
डेस्कटॉप, iOS, और Android के लिए बेहतर नेटिव ऐप बनाने की क्षमताWordPress थीम और हुक POS ऐप को अनुकूलित नहीं कर सकते

स्थानीय डेटाबेस

क्लाइंट डेटा को प्रत्येक डिवाइस पर एक स्थानीय डेटाबेस में संग्रहीत करता है — वेब और डेस्कटॉप ऐप OPFS (Origin Private File System) संग्रहण का उपयोग करते हैं जो एक वर्कर में चलता है, और मोबाइल ऐप एक फ़ाइल-सिस्टम इंजन के माध्यम से वही ऑन-डिस्क प्रारूप उपयोग करते हैं। सभी प्लेटफ़ॉर्म एक ही संग्रहण प्रारूप और रिकवरी टूलिंग साझा करते हैं। यह प्रदान करता है:

  • स्थायित्व: ब्राउज़र के पुनः आरंभ होने और डिवाइस रीबूट होने पर भी डेटा बना रहता है
  • प्रदर्शन: नेटवर्क विलंबता के बिना तेज़ क्वेरी — फ़िल्टरिंग, सॉर्टिंग, और पेजिनेशन संग्रहण परत के भीतर चलते हैं, इसलिए UI तक केवल दिखाई देने वाला पंक्तियों का पेज ही पहुँचता है
  • ऑफ़लाइन ब्राउज़िंग: कैश किया गया डेटा बिना इंटरनेट के सुलभ रहता है

प्रत्येक साइट + स्टोर + कैशियर संयोजन को अपना स्थानीय डेटाबेस मिलता है, इसलिए एक डिवाइस पर कैशियर और स्टोर कभी स्थानीय डेटा साझा नहीं करते। अपग्रेड कभी किसी स्थानीय डेटाबेस को यथास्थान माइग्रेट नहीं करते — ऐप सर्वर से दोबारा डाउनलोड करता है, जो हमेशा आधिकारिक कॉपी होती है।

चेकआउट वास्तुकला

चेकआउट प्रक्रिया एक iframe/webview का उपयोग करती है जो WooCommerce Order Pay पृष्ठ को लोड करती है। यह दृष्टिकोण:

  • मौजूदा भुगतान गेटवे का लाभ उठाता है: कोई भी WooCommerce भुगतान गेटवे POS में काम कर सकता है
  • सुरक्षा बनाए रखता है: भुगतान प्रोसेसिंग WooCommerce के सुरक्षित ढाँचे के माध्यम से होती है
  • जटिलता को कम करता है: भुगतान गेटवे एकीकरण को फिर से लागू करने की आवश्यकता नहीं है

API विस्तार

PHP प्लगइन POS-विशिष्ट कार्यक्षमता के लिए अतिरिक्त एंडपॉइंट्स के साथ WooCommerce REST API का विस्तार करता है, जो समर्पित wcpos/v1 और wcpos/v2 नेमस्पेस के अंतर्गत पंजीकृत हैं — wcpos/v2 v1.10.0 सिंक सरफ़ेस को ले जाता है, यही कारण है कि ऐप और प्लगइन के संस्करण एक साथ जारी होते हैं। परिचय के लिए WooCommerce REST API देखें।

wcpos/v2 नेमस्पेस

v1.10 wcpos/v2 REST नेमस्पेस प्रस्तुत करता है। सिंक यहाँ रहता है, और जो साझा POS सेवाएँ पहले wcpos/v1 से परोसी जाती थीं वे अब wcpos/v2 से परोसी जाती हैं (wcpos/v1 सेवा मार्ग उनके v2 कार्यान्वयन के लिए पास-थ्रू हैं)। wcpos/v1 मार्ग अब भी पश्च-संगतता के लिए पंजीकृत होते हैं लेकिन फ़्रीज़ कर दिए गए हैं — वर्तमान क्लाइंट उन्हें अब कॉल नहीं करता।

यदि आप इन एंडपॉइंट्स के विरुद्ध एकीकरण करते हैं तो ध्यान देने योग्य बिंदु:

  • v2 मार्ग हमेशा पंजीकृत होते हैं। पुराना woocommerce_pos_sync_api_enabled विकल्प हटा दिया गया है; अब कोई ऐसा फ़्लैग नहीं है जो API को चालू या बंद करता हो।
  • सार्वजनिक एंडपॉइंट। wcpos/v2/site, wcpos/v2/ping, और wcpos/v2/echo सार्वजनिक हैं (क्षमता और कनेक्टिविटी जाँच के लिए उपयोग किए जाते हैं, जिनमें प्रतिबंधात्मक होस्ट के लिए ट्रांसपोर्ट फ़ॉलबैक शामिल हैं)।
  • ऑर्डर UUID-प्राथमिक हैं। वायर पर ऑर्डर की पहचान UUID है; लीगेसी wooOrderId फ़ील्ड को ऑर्डर पुल एनवेलप से हटा दिया गया है। ऑर्डर मेटाडेटा को वायर पर एक ही नॉर्मलाइज़र के माध्यम से टाइप किया जाता है।
  • लाइन-आइटम मूल्य निर्धारण संग्रहण दस्तावेज़ित है तृतीय-पक्ष सिंक संगतता के लिए — POS मूल्य ओवरराइड कैसे संग्रहीत होते हैं देखें।
  • डिफ़ॉल्ट उत्पाद क्रम POS में अब नाम आरोही है (पहले 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 देखें।