Architektur
Diese Seite erklärt die technische Architektur von WCPOS für Entwickler und fortgeschrittene Benutzer.
Zweiteiliges System
WCPOS ist als zweigeteiltes System konzipiert:
-
PHP-Plugin: Auf Ihrem Server gehostet, ist dies ein relativ kleines Plugin, welches 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 das Datenmanagement mit 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. Dies bedeutet, dass der POS jedes Produkt, jede Variante, jede Produktkategorie, jeden Kunden, jeden Steuersatz und mehr herunterladen muss, um sie lokal zu speichern.
Obwohl dies anfangs zeitaufwendig sein kann, sind sie nach dem Herunterladen sofort verfügbar, ohne dass ständig vom Server abgerufen werden muss.
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:
- Erst-Synchronisierung: Lädt alle Daten beim ersten Laden herunter
- Inkrementelle Updates: Holt nur Änderungen seit der letzten Synchronisierung
- Hintergrund-Synchronisierung: Überprüft regelmäßig auf Updates
- Manuelle Synchronisierung: Der Benutzer kann jederzeit eine Synchronisierung auslösen
Vor- und Nachteile der Architektur
| Gut 😊 | Schlecht 😟 |
|---|---|
| Das Suchen lokaler Daten erfolgt sofort | Die Daten synchron zu halten ist herausfordernd |
| Zwischengespeicherte Daten sind offline verfügbar | Begrenzungen durch die WooCommerce REST API |
| Möglichkeit zur Erstellung besserer nativer Apps für Desktop, iOS und Android | WordPress-Themen 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 Browserneustarts
- 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:
- Nutzen bestehender Zahlungs-Gateways: Jedes WooCommerce-Zahlungs-Gateway kann im POS verwendet werden
- Sichert die Sicherheit: Die Zahlungsabwicklung erfolgt über die sichere Infrastruktur von WooCommerce
- Reduziert die Komplexität: Keine Notwendigkeit, Integrationen von Zahlungs-Gateways neu zu implementieren
API-Erweiterungen
Das PHP-Plugin erweitert die WooCommerce REST API mit zusätzlichen Endpunkten für POS-spezifische Funktionen. Weitere Informationen finden Sie in der WooCommerce REST API.