Architectuur
Deze pagina legt de technische architectuur van WCPOS uit voor ontwikkelaars en gevorderde gebruikers.
Tweedelig systeem
WCPOS is ontworpen als een tweedelig systeem:
-
PHP-plug-in: Gehost op je server, dit is een relatief kleine plug-in die de WooCommerce REST API uitbreidt.
-
JavaScript-client: Deze draait lokaal in je browser of de desktop-app, en later in iOS- en Android-apps.
Je kunt het zien als twee aparte werelden:
- De PHP-wereld is waar databeheer plaatsvindt met behulp van WordPress en WooCommerce.
- De JavaScript-wereld repliceert je WooCommerce-winkel lokaal, geoptimaliseerd voor snel zoeken en offlinegebruik.
Gegevenssynchronisatie
Gegevens worden opgehaald uit WooCommerce via de WooCommerce REST API. Dit betekent dat de POS elk product, elke variatie, productcategorie, klant, belastingtarief en meer moet downloaden om ze lokaal op te slaan.
Hoewel dit aanvankelijk tijdrovend kan zijn, zijn ze na het downloaden onmiddellijk beschikbaar zonder dat ze voortdurend van de server hoeven te worden opgehaald.
Wat wordt er gesynchroniseerd?
- Producten en variaties
- Productcategorieën en tags
- Klanten
- Belastingtarieven en belastingklassen
- Betaalgateways (voor het afrekenen)
- Bestellingen (voor de bestelgeschiedenis in Pro)
Synchronisatiestrategie
WCPOS gebruikt een incrementele synchronisatiestrategie:
- Initiële synchronisatie: Downloadt alle gegevens bij de eerste keer laden
- Incrementele updates: Haalt alleen wijzigingen op sinds de laatste synchronisatie
- Achtergrondsynchronisatie: Controleert periodiek op updates
- Handmatige synchronisatie: Gebruiker kan op elk moment een synchronisatie starten
Voor- en nadelen van de architectuur
| Goed 😊 | Slecht 😟 |
|---|---|
| Zoeken in lokale gegevens is direct | Gegevens gesynchroniseerd houden is een uitdaging |
| Gecachte gegevens offline beschikbaar | Beperkt door de WooCommerce REST API |
| Mogelijkheid om betere native apps te maken voor desktop, iOS en Android | WordPress-thema's en hooks kunnen de POS-app niet aanpassen |
Lokale database
De JavaScript-client slaat gegevens op in IndexedDB, een browsergebaseerde database. Dit biedt:
- Persistentie: Gegevens blijven behouden na herstart van de browser
- Prestaties: Snelle query's zonder netwerklatentie
- Offline bladeren: Gecachte gegevens blijven toegankelijk zonder internet
Afrekenarchitectuur
Het afrekenproces gebruikt een iframe/webview die de WooCommerce Order Pay-pagina laadt. Deze aanpak:
- Maakt gebruik van bestaande betaalgateways: Elke WooCommerce-betaalgateway kan in de POS werken
- Handhaaft de beveiliging: Betalingsverwerking verloopt via de veilige infrastructuur van WooCommerce
- Vermindert complexiteit: Geen noodzaak om integraties van betaalgateways opnieuw te implementeren
API-uitbreidingen
De PHP-plug-in breidt de WooCommerce REST API uit met extra endpoints voor POS-specifieke functionaliteit. Zie WooCommerce REST API voor details.