Ga naar de hoofdinhoud
Versie: 1.x

Architectuur

Deze pagina legt de technische architectuur van WCPOS uit voor ontwikkelaars en gevorderde gebruikers.

Tweedelig systeem

WCPOS is ontworpen als een tweedelig systeem:

  1. PHP-plug-in: Gehost op je server, dit is een relatief kleine plug-in die de WooCommerce REST API uitbreidt.

  2. 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.
SVG not found

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:

  1. Initiële synchronisatie: Downloadt alle gegevens bij de eerste keer laden
  2. Incrementele updates: Haalt alleen wijzigingen op sinds de laatste synchronisatie
  3. Achtergrondsynchronisatie: Controleert periodiek op updates
  4. Handmatige synchronisatie: Gebruiker kan op elk moment een synchronisatie starten

Voor- en nadelen van de architectuur

Goed 😊Slecht 😟
Zoeken in lokale gegevens is directGegevens gesynchroniseerd houden is een uitdaging
Gecachte gegevens offline beschikbaarBeperkt door de WooCommerce REST API
Mogelijkheid om betere native apps te maken voor desktop, iOS en AndroidWordPress-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.