Accediendo a Magento a través del Web Service

Otras de las mejoras que vimos con la aparición de la versión 1.1 de Magento, fue la API.

Debido a la estructura de datos que utiliza la aplicación, no alcanza con hacer algunas altas o actualizaciones en la base de datos (si bien no es imposible y una vez que nos familiarizamos con el esquema de datos, no es tan complicado).

Igualmente, la API no es solamente una forma de resolver el proceso de alta o actualización de registros, sino que también permite sumergirnos en la integración de tecnologías.

Un escenario muy real, es el de tener un sistema offline propio para la gestión de nuestros productos, y ahora necesitamos vender a través de nuestra Tienda online, pero no queremos hacer doble trabajo.

Pensando en este escenario, vamos a crear nuestro primer acceso a la API, usando PHP.

Lo primero que tenemos que hacer, es crear roles y usuarios para poder acceder. La API utiliza Usuarios y Roles independientes a los que utiliza el backend en si mismo.

Avanzemos creando un Rol. Para esto, vamos a Sistema -> Web service -> Roles.

Grilla de Roles del Web Service de Magento

De más está decir que al ser nuestra primera visita, no vamos a encontrar ningún Rol definido. Creemos el primero.

Creación de un nuevo Rol para la API de Magento

Ingresamos un nombre único para nuestro Rol. Luego le asignaremos los permisos.

Asignación de permisos al Rol del Web Service en Magento

Como pueden ver, al igual que con los permisos del backend, podemos acotar las acciones posibles.

Para nuestro primer ejemplo, vamos a darle acceso irrestricto a nuestro Usuario.

En lugar de tildar todas las opciones, cambiamos el valor del select, de «Personalizado» a «Todos».

Acceso irrestricto al Web Service de Magento

Una vez que guardemos, veremos la confirmación del proceso de alta.

Confirmación del nuevo Rol para la API de Magento

En mi caso, el Rol se llama CRM (para continuar con nuestro ejemplo de integración).

Ahora nos aparece una tercera solapa en el formulario del Rol, en la cual podemos asignar los Usuarios del Web Service que podrán utilizarlo.

Asignación de Usuarios para el Rol de la API

Como pueden ver, no hay ningún Usuario disponible. Si bien es posible que me esté tornando demasiado insistente, esto es porque los Usuarios del backend no son los mismos que en la API.

Paso siguiente, crear un usuario para el Web Service.

Vayamos a Sistema -> Web Service -> Usuarios.

Grilla de Usuarios del Web Service de Magento

Como siempre, nuestra grilla vacía. Clickeamos en «Agregar nuevo usuario».

Nuevo usuario para el Web Service de Magento

El formulario es bastante sencillo, y tiene como particularidad que todos sus campos son obligatorios.

Una  vez que carguemos los datos requeridos, pasamos a la segunda solapa, en donde veremos el Rol que acabamos de crear.

Asignación de Rol para el Usuario de la API de Magento

Lo unico que tenemos que hacer es tildar sobre el Rol que queremos para nuestro Usuario.

Selección del Rol para el Usuario de la API

Con estos pasos, ya hemos creado nuestro primer Usuario de la API. Ahora, vamos a intentar conectarnos desde nuestra aplicación externa.

En este ejemplo, vamos a hacerlo con Php.

No se olviden de consultar la guía de referencia de la API de Magento para conocer los métodos posibles.

Teniendo ya todos los elementos, vamos con un primer ejemplo, en el cual vamos a consultar qué Productos tenemos en el catálogo.

<?php

//Url de la conexión
$client = new SoapClient("http://www.dominio.com.ar/index.php/api/?wsdl");

//Login
$session = $client->login("usuario", "contraseña");

//Lista de productos
$products = $client->call($session, "catalog_product.list");

//Impresión
print_r($products);

//Logout
$client->endSession($session);

?>

La impresión que hago, es sólo de carácter informativo, para poder conocer qué nos devuelve el método catalog_product.list.

Lo que obtuvimos, fueron los dos Productos que ya había cargado en mi catálogo.

Como pueden ver, no es tan difícil obtener la información (si bien sólo la estamos viendo tal cual viene de la API). Igualmente, a manera de ejemplo, con estas líneas de código, ya tenemos una primera aproximación a la interacción con el Web Service.

Más adelante, en lugar de solo consumir esa información, vamos a mandar información a Magento a través de ésta vía.