Integración de WooCommerce con la API de un mayorista de automoción
Una tienda de recambios de automoción vive de lo completo y actualizado que esté su catálogo. Con decenas de miles de índices cuya disponibilidad y precio cambian en el proveedor de un día para otro, mantener la oferta a mano es una batalla perdida. En este proyecto conectamos una tienda WooCommerce directamente al web service de un mayorista mediante REST API, de modo que el catálogo, el stock y los precios se mantienen actualizados por sí solos. Los nombres del cliente y del proveedor se mantienen confidenciales.
El problema: vender stock que no existe
El fallo más caro en una tienda de este tipo es aceptar y cobrar un recambio que el proveedor no tiene físicamente. Termina en devoluciones, gestión de reclamaciones y pérdida de confianza. A eso se suma el desfase de precios: el mayorista cambia su lista, la tienda sigue vendiendo al precio antiguo, a veces por debajo de su propio coste. Así que el objetivo era concreto. El catálogo debe reflejar lo que el proveedor tiene realmente disponible y a qué precio, sin trabajo manual.
Arquitectura: WooCommerce conectado al web service del mayorista
La base es WordPress con WooCommerce, y la capa de integración es código PHP dedicado que se comunica con la REST API del mayorista. El proveedor expone los datos tanto en JSON como en XML, por lo que la integración analiza ambos y los reduce a un único modelo interno. La sincronización se ejecuta de forma periódica en segundo plano (tareas de WP-Cron), dividida en una consulta más ligera y frecuente de stock y precios y una actualización más pesada y menos frecuente de todo el surtido.
Mapeo de los datos del mayorista a los productos de WooCommerce
El mayorista describe los productos con su propia estructura de campos. La tarea de la integración es traducirla al modelo de productos y atributos de WooCommerce. Entre otros, mapeamos:
- EAN e índice - las claves que identifican un producto y enlazan el artículo de la tienda con su registro en el mayorista en cada sincronización posterior.
- Atributos técnicos - parámetros del recambio trasladados a los atributos y variaciones de WooCommerce para que funcionen los filtros por parámetros y la búsqueda.
- Medios y descripciones - imágenes y códigos HTML de descripciones obtenidos de los endpoints del mayorista y colocados en las fichas de producto.
El mapa de campos es declarativo, de modo que añadir un nuevo parámetro del mayorista significa ampliar el mapeo, no reescribir la lógica.
Sincronización de stock y precios en tiempo real
El núcleo de la integración es consultar la API de forma periódica dos cosas: el nivel de stock de cada índice y el precio de venta neto del distribuidor. Los artículos que el proveedor no tiene en stock se marcan automáticamente como no disponibles o se ocultan, lo que cumple directamente el objetivo principal: un cliente no puede comprar un recambio que no se puede servir. Un cambio de precio en la lista del mayorista se propaga a la tienda en el siguiente ciclo, sin intervención del personal.
Lógica de margen
Los precios del mayorista son coste, no precio de venta. Por encima de la capa de obtención de datos se sitúa la lógica de margen: el sistema aplica automáticamente un margen de tienda definido sobre el precio de venta neto del distribuidor, y solo el resultado llega a WooCommerce como precio del producto. Así se mantiene intacta la rentabilidad objetivo de la tienda aunque cambien las listas del proveedor, y el propietario dirige el margen con reglas en lugar de editar precios a mano.
Resultado
El catálogo se mantiene solo: los artículos nuevos del mayorista aparecen en la tienda, los descatalogados desaparecen, el stock y los precios siguen al proveedor y el margen protege la rentabilidad. El personal dejó de actualizar la oferta a mano y de lidiar con pedidos de recambios que nunca estuvieron disponibles. Es el mismo mecanismo de intercambio de datos, análisis de JSON/XML y mapeo de stock que hay detrás de las integraciones de WooCommerce con sistemas de clase ERP - se diferencia en la fuente de datos, no en el principio.
