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 su servidor, es un plugin relativamente pequeño que extiende la API REST de WooCommerce.
-
Cliente JavaScript: Se ejecuta localmente en su navegador o en la aplicación de escritorio, y posteriormente en aplicaciones de iOS y Android.
Puede pensarlo como dos mundos separados:
- El mundo PHP es donde se administran los datos utilizando WordPress y WooCommerce.
- El mundo JavaScript replica su tienda de WooCommerce localmente, optimizado 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, tarifa de impuestos y más para almacenarlos localmente.
Aunque inicialmente puede ser consumidor de tiempo, una vez descargados, están disponibles instantáneamente sin necesidad de buscarlos continuamente en el servidor.
Qué Se Sincroniza
- Productos y variaciones
- Categorías y etiquetas de productos
- Clientes
- Tarifas de impuestos y clases de impuestos
- Pasarelas de pago (para checkout)
- Pedidos (para 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 busca los cambios desde la última sincronización
- Sincronización en segundo plano: Comprueba periódicamente si hay actualizaciones
- Sincronización manual: El usuario puede iniciar una sincronización en cualquier momento
Pros y Contras de la Arquitectura
| Bueno 😊 | Malo 😟 |
|---|---|
| Búsqueda de datos local instantánea | Mantener los datos sincronizados es un desafío |
| Datos en caché disponibles sin conexión | Limitado por la API REST de WooCommerce |
| Capacidad de crear aplicaciones nativas mejores 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 navegador. Esto proporciona:
- Persistencia: Los datos sobreviven a 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 checkout utiliza un iframe/webview que carga la página de Pago de Pedido 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 se realiza a través de la infraestructura segura de WooCommerce
- Reduce la complejidad: No es necesario volver a implementar integraciones de pasarelas de pago
Extensiones de API
El plugin PHP extiende la API REST de WooCommerce con puntos finales adicionales para funcionalidad específica de POS. Consulte API REST de WooCommerce para más detalles.