Arquitectura
Esta página explica la arquitectura técnica de WCPOS para desarrolladores y usuarios avanzados.
Sistema de Dos Partes
WCPOS está diseñado como un sistema de dos partes:
-
Plugin PHP: Alojado en tu servidor, este es un plugin relativamente pequeño que extiende la API REST de WooCommerce.
-
Cliente JavaScript: Este se ejecuta localmente en tu navegador o en la aplicación de escritorio, y más adelante en las aplicaciones de iOS y Android.
Puedes pensar en ello como dos mundos separados:
- El mundo PHP es donde ocurre la gestión de datos usando WordPress y WooCommerce.
- El mundo JavaScript replica tu tienda WooCommerce localmente, optimizada para búsquedas rápidas y uso sin conexión.
Sincronización de Datos
Los datos se obtienen de WooCommerce utilizando la API REST de WooCommerce. Esto significa que el POS tiene que descargar cada producto, variación, categoría de producto, cliente, tasa de impuesto, y más para almacenarlos localmente.
Aunque esto puede llevar tiempo inicialmente, una vez descargados, están disponibles instantáneamente sin la necesidad de obtenerlos continuamente del servidor.
¿Qué Se Sincroniza?
- Productos y variaciones
- Categorías y etiquetas de productos
- Clientes
- Tasas de impuestos y clases de impuestos
- Pasarelas de pago (para el proceso de pago)
- Pedidos (para el historial de pedidos en Pro)
Estrategia de Sincronización
WCPOS utiliza una estrategia de sincronización incremental:
- Sincronización inicial: Descarga todos los datos en la primera carga
- Actualizaciones incrementales: Solo obtiene los cambios desde la última sincronización
- Sincronización en segundo plano: Verifica periódicamente si hay actualizaciones
- Sincronización manual: El usuario puede activar una sincronización en cualquier momento
Pros y Contras de la Arquitectura
| Bueno 😊 | Malo 😟 |
|---|---|
| Buscar datos locales es instantáneo | Mantener los datos sincronizados es un desafío |
| Datos en caché disponibles sin conexión | Limitado por la API REST de WooCommerce |
| Posibilidad de crear mejores aplicaciones nativas para escritorio, iOS y Android | Los temas de WordPress y los hooks no pueden personalizar la aplicación POS |
Base de Datos Local
El cliente JavaScript almacena datos en IndexedDB, una base de datos basada en el navegador. Esto proporciona:
- Persistencia: Los datos sobreviven a los reinicios del navegador
- Rendimiento: Consultas rápidas sin latencia de red
- Navegación sin conexión: Los datos en caché permanecen accesibles sin internet
Arquitectura de Checkout
El proceso de pago utiliza un iframe/webview que carga la página de Order Pay de WooCommerce. Este enfoque:
- Aprovecha las pasarelas de pago existentes: Cualquier pasarela de pago de WooCommerce puede funcionar en el POS
- Mantiene la seguridad: El procesamiento de pagos ocurre a través de la infraestructura segura de WooCommerce
- Reduce la complejidad: No es necesario reimplementar integraciones de pasarelas de pago
Extensiones de API
El plugin PHP extiende la API REST de WooCommerce con puntos de acceso adicionales para funcionalidad específica de POS. Consulta la API REST de WooCommerce para más detalles.