Architektur
Diese Seite erklärt die technische Architektur von WCPOS für Entwickler und fortgeschrittene Nutzer.
Zweiteiliges System
WCPOS ist als zweiteiliges System konzipiert:
-
PHP-Plugin: Auf Ihrem Server gehostet, handelt es sich um ein relativ kleines Plugin, das die WooCommerce REST API erweitert.
-
JavaScript-Client: Dieser läuft lokal in Ihrem Browser oder in der Desktop-App und später in iOS- und Android-Apps.
Sie können es sich als zwei separate Welten vorstellen:
- Die PHP-Welt ist der Ort, an dem die Datenverwaltung mithilfe von WordPress und WooCommerce erfolgt.
- Die JavaScript-Welt repliziert Ihren WooCommerce-Shop lokal, optimiert für schnelles Suchen und Offline-Nutzung.
Datensynchronisierung
Daten werden von WooCommerce über die WooCommerce REST API abgerufen. Das bedeutet, dass das POS jedes Produkt, jede Variation, jede Produktkategorie, jeden Kunden, jeden Steuersatz und mehr herunterladen muss, um sie lokal zu speichern.
Obwohl dies anfangs zeitaufwändig sein kann, sind sie, einmal heruntergeladen, sofort verfügbar, ohne ständig vom Server abrufen zu müssen.
Was wird synchronisiert?
- Produkte und Variationen
- Produktkategorien und -tags
- Kunden
- Steuersätze und Steuerklassen
- Zahlungs-Gateways (für den Checkout)
- Bestellungen (für die Bestellhistorie in Pro)
Synchronisierungsstrategie
WCPOS verwendet eine inkrementelle Synchronisierungsstrategie:
- Erste Synchronisierung: Lädt alle Daten beim ersten Laden herunter
- Inkrementelle Aktualisierungen: Holt nur die Änderungen seit der letzten Synchronisierung
- Hintergrundsynchronisierung: Überprüft regelmäßig auf Updates
- Manuelle Synchronisierung: Der Nutzer kann jederzeit eine Synchronisierung auslösen
Vor- und Nachteile der Architektur
| Gut 😊 | Schlecht 😟 |
|---|---|
| Das Suchen lokaler Daten ist blitzschnell | Die Datensynchronisierung ist herausfordernd |
| Zwischengespeicherte Daten sind offline verfügbar | Durch die WooCommerce REST API begrenzt |
| Möglichkeit, bessere native Apps für Desktop, iOS und Android zu erstellen | WordPress-Themes und Hooks können die POS-App nicht anpassen |
Lokale Datenbank
Der JavaScript-Client speichert Daten in IndexedDB, einer browserbasierten Datenbank. Dies bietet:
- Persistenz: Daten überstehen Neustarts des Browsers
- Leistung: Schnelle Abfragen ohne Netzwerkverzögerung
- Offline-Browsing: Zwischengespeicherte Daten bleiben ohne Internetzugang zugänglich
Checkout-Architektur
Der Checkout-Prozess verwendet ein iframe/webview, das die WooCommerce Order Pay-Seite lädt. Dieser Ansatz:
- Nutzt bestehende Zahlungs-Gateways: Jedes WooCommerce-Zahlungs-Gateway kann im POS verwendet werden
- Bewahrt die Sicherheit: Die Zahlungsabwicklung erfolgt über die sichere Infrastruktur von WooCommerce
- Reduziert die Komplexität: Keine Notwendigkeit, Zahlungs-Gateway-Integrationen neu zu implementieren
API-Erweiterungen
Das PHP-Plugin erweitert die WooCommerce REST API mit zusätzlichen Endpunkten für POS-spezifische Funktionen. Siehe WooCommerce REST API für Details.