Architettura
Questa pagina spiega l'architettura tecnica di WCPOS per sviluppatori e utenti avanzati.
Sistema a Due Parti
WCPOS è progettato come un sistema a due parti:
-
Plugin PHP: Ospitato sul tuo server, questo è un plugin relativamente piccolo che estende l'API REST di WooCommerce.
-
Client JavaScript: Questo viene eseguito localmente nel tuo browser o nell'app desktop, e in seguito nelle app iOS e Android.
Puoi pensarlo come due mondi separati:
- Il mondo PHP è dove avviene la gestione dei dati utilizzando WordPress e WooCommerce.
- Il mondo JavaScript replica localmente il tuo negozio WooCommerce, ottimizzato per ricerche veloci e utilizzo offline.
Sincronizzazione dei Dati
I dati vengono recuperati da WooCommerce utilizzando l'API REST di WooCommerce. Questo significa che il POS deve scaricare ogni prodotto, variazione, categoria di prodotto, cliente, aliquota fiscale e altro per memorizzarli localmente.
Sebbene questo possa richiedere tempo inizialmente, una volta scaricati, sono disponibili istantaneamente senza la necessità di recuperare continuamente dal server.
Cosa Viene Sincronizzato?
- Prodotti e variazioni
- Categorie e tag dei prodotti
- Clienti
- Aliquote fiscali e classi fiscali
- Gateway di pagamento (per il checkout)
- Ordini (per la cronologia degli ordini in Pro)
Strategia di Sincronizzazione
WCPOS utilizza una strategia di sincronizzazione incrementale:
- Sincronizzazione iniziale: Scarica tutti i dati al primo caricamento
- Aggiornamenti incrementali: Recupera solo le modifiche dall'ultima sincronizzazione
- Sincronizzazione in background: Controlla periodicamente gli aggiornamenti
- Sincronizzazione manuale: L'utente può attivare una sincronizzazione in qualsiasi momento
Vantaggi e Svantaggi dell'Architettura
| Buono 😊 | Cattivo 😟 |
|---|---|
| La ricerca di dati locali è istantanea | Mantenere i dati sincronizzati è una sfida |
| Dati memorizzati nella cache disponibili offline | Limitato dall'API REST di WooCommerce |
| Possibilità di creare migliori app native per desktop, iOS e Android | I temi e i ganci di WordPress non possono personalizzare l'app POS |
Database Locale
Il client JavaScript memorizza i dati in IndexedDB, un database basato su browser. Questo fornisce:
- Persistenza: I dati sopravvivono ai riavvii del browser
- Prestazioni: Query rapide senza latenza di rete
- Navigazione offline: I dati memorizzati nella cache rimangono accessibili senza internet
Architettura del Checkout
Il processo di checkout utilizza un iframe/webview che carica la pagina WooCommerce Order Pay. Questo approccio:
- Sfrutta i gateway di pagamento esistenti: Qualsiasi gateway di pagamento WooCommerce può funzionare nel POS
- Mantiene la sicurezza: L'elaborazione dei pagamenti avviene attraverso l'infrastruttura sicura di WooCommerce
- Riduce la complessità: Non è necessario re-implementare le integrazioni dei gateway di pagamento
Estensioni API
Il plugin PHP estende l'API REST di WooCommerce con endpoint aggiuntivi per funzionalità specifiche del POS. Vedi API REST di WooCommerce per dettagli.