WooCommerce es una de las plataformas líder en comercio electrónico, se trata de un plugin para WordPress que convierte nuestro CMS en una tienda online y que cuenta con un gran ecosistema de extensiones y herramientas. WooCommerce expone principalmente 2 vías de extensión que son la API REST, que nos permitirá leer o modificar datos de la tienda, y los webhooks con los que podremos notificar a otros sistemas de eventos que suceden en nuestra tienda online.
Con esto se abre un gran abanico de posibilidades para conectar nuestra tienda online con otros sistemas que utilicemos en nuestra empresa para gestionar el negocio, ya sea con sistemas ERP, CRM, canales alternativos notificación, etc. Es posible desarrollar casi cualquier funcionalidad utilizando la potencia de la API REST que expone WooCommerce y su sistema de webhooks.
API REST
Tabla de contenidos
ToggleEmpezaremos trabajando con la API REST, desarrollaremos un sencillo ejemplo con el que podremos actualizar el stock de nuestros productos en la tienda online de manera automática al actualizar los datos en nuestra plataforma de gestión, una vez obtenidos los stocks actualizados desde la plataforma que se encarga de gestionarlos por el medio que dicha herramienta nos facilite utilizaremos la API REST para cambiarlos en nuestra tienda online de manera automática.
En acceseo nos encanta trabajar con Symfony, tanto a nivel de paquete como a nivel de framework, porque nos proporciona una base muy robusta sobre la que implementar la funcionalidad que realmente va a tener un impacto sobre el negocio, en este caso instalaremos el paquete symfony/http-client usando composer por la robustez en el tratamiento de los parámetros y las respuestas, simplicidad y comodidad que nos aporta frente al uso de curl.
Lo primero que necesitaremos es activar la API REST de WooCommerce, para ello tendremos que ir a Ajustes > Avanzado > API REST > Añadir clave y generar una clave nueva dándole una descripción que nos permita reconocerla posteriormente, seleccionando el usuario al que se corresponderá y los permisos necesarios. En este caso querremos modificar los datos de nuestra tienda online por lo que necesitaremos permisos de escritura. Deberíamos rellenar el formulario con unos datos similares a los de la siguiente captura:
Debemos tomar nota de la clave y el secreto generados al guardar y ya estaremos listos para pasar a crear el código con el que conectaremos nuestro sistema de gestión de stock con la API REST y actualizaremos los datos de manera automática.
Vamos a ocultar la conexión con el sistema de stocks tras el método getLatestUpdates de la interfaz StockManagerInterface ya que cada proyecto tendrá unas necesidades concretas para implementar la conexión dependiendo del sistema con el que se gestione el stock. Para el ejemplo vamos a implementar la interfaz simplemente devolviendo un array de objetos StockUpdate.
A continuación crearemos la clase WoocommerceStockUpdater que contendrá el código de conexión a la API REST, es tan sencillo como instanciar un cliente HTTP con la clave y el secreto que nos ha generado el sistema para conectar a la API y enviar una petición POST a la ruta que representa el recurso con el array ‘stock_quantity’ => valor en el cuerpo. WooCommerce leerá el cuerpo de la petición y actualizará el campo stock_quantity con el valor que facilitemos.
Las rutas utilizadas para actualizar el stock serán similares a https://localhost/wp-json/wc/v3/products/1, que en nuestro caso representa al producto 1 en un servidor local. La ruta se desglosa de la siguiente manera:
- wp-json es la raíz de la API que expone WordPress y en la que se integra WooCommerce
- wc/v3 es el namespace y versión de la api de WooCommerce que estamos utilizando
- products representa al tipo de recurso que queremos actualizar
- 1 es el identificador del recurso
Webhook
Hemos visto cómo podemos iniciar la comunicación desde otro sistema y leer o modificar datos de nuestra tienda online, con los webhooks podremos invertir el sentido de la comunicación y lanzar un mensaje desde nuestra tienda cuando algo suceda. En nuestro ejemplo vamos a enviar un mensaje a otro sistema cada vez que se cree un producto.
Tendremos que configurar el webhook de manera similar a las claves que generamos para la API REST, en este caso tendremos que navegar hasta Ajustes > Avanzado > Webhooks > Añadir webhook y darle un nombre, configurar estado activado, seleccionar la opción Producto creado en tema, establecera la url a la que se enviarán las peticiones y añadir un secreto. Una vez completado el formulario el resultado debería ser similar a la siguiente captura:
Una vez configurado el webhook cada vez que creemos un producto recibiremos una petición POST con un payload json en el cuerpo que representa al producto creado, en este caso es muy sencillo trabajar con los datos ya que simplemente tendremos que convertir de nuevo el json en una estructura de datos que podamos manejar cómodamente, el siguiente script nos serviría para lanzar una notificación interna cada vez que se crea un producto en WooCommerce.
Además de este ejemplo muy básico y como sucede con la API REST, a partir de esto podemos construir una solución más robusta y más funcional, un buen primer paso es comprobar la firma recibida en la petición para validar que se trata de una petición legítima generada por nuestra tienda, de lo contrario cualquiera podría enviarnos peticiones al endpoint que hemos creado y generar notificaciones falsas en nuestros sistemas.
Conclusión
Como hemos visto es muy sencillo conectar otros sistemas con WooCommerce, aunque se trate de ejemplos simplificados tenemos a nuestra disposición la documentación de la API REST para profundizar en el tema y poder hacer optimizaciones como sustituir products por products/batch y actualizar varios elementos en una petición. Los webhooks también disponen de documentación relevante y nos permitirán notificar a otros sistemas de gran cantidad de eventos y también nos abrirán la posibilidad a notificar de eventos personalizados.
4 comentarios en “Cómo interconectar tus sistemas con WooCommerce”
Hola Christian,
Te escribo porque en mi empresa necesitamos programar la API de Woocommerce para conectar nuestro sitio de comercio electrónico con el software ERP (Sigrid) que tenemos en la empresa. Solo pedidos, sin control de stock ¿Haces este tipo de cosas?
Gracias.
Hola Eduardo, hemos hecho integraciones de este tipo, de ahí el artículo :).
Si quieres nos puedes contactar a través del correo info@acceseo.com y lo comentamos con más detenimiento y detalle.
Saludos, Christian.
Buenas, Christian.
¡¡Muy buen artículo!!
Me surgen algunas dudas e ideas, que te quería consultar:
Me gustaría saber como hacerlo en un plugin y conectarse a la API de WooComerce. ¿Es posible?
Saludos!!
Hola Marc, gracias. Si lo que necesitas es conectar a WooCommerce desde un plugin del propio WP es posible que lo ideal no sean los métodos descritos en este artículo.
Si estás teniendo problemas para conectar tu sistema con WooCommerce puedes contactar con nosotros a través de info@acceseo.com y comentarnos el caso de forma más detallada.
Saludos, Christian.