Architecture
Cette page explique l'architecture technique de WCPOS pour les développeurs et les utilisateurs avancés.
Système Bipartite
WCPOS est conçu comme un système à deux parties :
-
Plugin PHP : Hébergé sur votre serveur, c'est un plugin relativement petit qui étend l'API REST WooCommerce.
-
Client JavaScript : S'exécute localement dans votre navigateur ou l'application de bureau, et plus tard sur les applications iOS et Android.
Vous pouvez le considérer comme deux mondes distincts :
- Le monde PHP est l'endroit où la gestion des données se fait en utilisant WordPress et WooCommerce.
- Le monde JavaScript réplique votre boutique WooCommerce localement, optimisé pour une recherche rapide et une utilisation hors ligne.
Synchronisation des Données
Les données sont récupérées à partir de WooCommerce en utilisant l'API REST WooCommerce. Cela signifie que le POS doit télécharger chaque produit, variation, catégorie de produit, client, taux de taxe, etc. pour les stocker localement.
Bien que cela puisse être long initialement, une fois téléchargés, ils sont disponibles instantanément sans avoir besoin de les récupérer continuellement du serveur.
Que se synchronise ?
- Produits et variations
- Catégories et étiquettes de produits
- Clients
- Taux de taxe et classes de taxe
- Passerelles de paiement (pour le paiement)
- Commandes (pour l'historique des commandes dans la version Pro)
Stratégie de Synchronisation
WCPOS utilise une stratégie de synchronisation incrémentale :
- Synchronisation initiale : Télécharge toutes les données lors du premier chargement
- Mises à jour incrémentielles : Ne récupère que les modifications depuis la dernière synchronisation
- Synchronisation en arrière-plan : Vérifie périodiquement les mises à jour
- Synchronisation manuelle : L'utilisateur peut déclencher une synchronisation à tout moment
Avantages et Inconvénients de l'Architecture
| Bon 😊 | Mauvais 😟 |
|---|---|
| Recherche de données locale instantanée | Maintenir les données synchronisées est complexe |
| Données en cache disponibles hors ligne | Limité par l'API REST WooCommerce |
| Possibilité de créer de meilleures applications natives pour bureau, iOS et Android | Les thèmes WordPress et les hooks ne peuvent pas personnaliser l'application POS |
Base de Données Locale
Le client JavaScript stocke les données dans IndexedDB, une base de données basée sur le navigateur. Cela offre :
- Persistance : Les données survivent aux redémarrages du navigateur
- Performance : Requêtes rapides sans latence réseau
- Navigation hors ligne : Les données en cache restent accessibles sans internet
Architecture de Paiement
Le processus de paiement utilise un iframe/webview qui charge la page de paiement de commande WooCommerce. Cette approche :
- Exploite les passerelles de paiement existantes : Toute passerelle de paiement WooCommerce peut fonctionner dans le POS
- Maintient la sécurité : Le traitement des paiements se fait via l'infrastructure sécurisée de WooCommerce
- Réduit la complexité : Pas besoin de réimplémenter les intégrations de passerelles de paiement
Extensions API
Le plugin PHP étend l'API REST WooCommerce avec des points de terminaison supplémentaires pour des fonctionnalités spécifiques au POS. Consultez API REST WooCommerce pour plus de détails.