como-interconecta- tus-sistemas-con-wocommerce

Cómo interconectar tus sistemas con WooCommerce

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

Empezaremos 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.

Comparte
Share on facebook
Share on twitter
Share on linkedin
¿Quieres más información?
Ponte en contacto con nosotros.
Christian Córdoba
Christian Córdoba
Chief Technology Officer (CTO) / Backend developer - Departamento de desarrollo

Enviar Comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Artículos relacionados

Suscríbete a nuestra newsletter
para estar al día en el mundo online
¿Tienes alguna incidencia?

Cuéntanos qué ocurre
y nos pondremos con ello lo antes posible.

    Este sitio está protegido por reCAPTCHA, y la Política de privacidad y Términos de servicio de Google.
    ¡Cuéntanos tus ideas!
    +34 96 653 19 14
    info@acceseo.com

      Este sitio está protegido por reCAPTCHA, y la Política de privacidad y Términos de servicio de Google.