Saltar al contenido principal
Versión: 1.x

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:

  1. Plugin PHP: Alojado en tu servidor, este es un plugin relativamente pequeño que extiende la API REST de WooCommerce.

  2. 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.
pos-client-woo-server

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:

  1. Sincronización inicial: Descarga todos los datos en la primera carga
  2. Actualizaciones incrementales: Solo obtiene los cambios desde la última sincronización
  3. Sincronización en segundo plano: Verifica periódicamente si hay actualizaciones
  4. 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áneoMantener los datos sincronizados es un desafío
Datos en caché disponibles sin conexiónLimitado por la API REST de WooCommerce
Posibilidad de crear mejores aplicaciones nativas para escritorio, iOS y AndroidLos 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.