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.
De más está decir que al ser nuestra primera visita, no vamos a encontrar ningún Rol definido. Creemos el primero.
Ingresamos un nombre único para nuestro Rol. Luego le asignaremos los permisos.
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».
Una vez que guardemos, veremos la confirmación del proceso de alta.
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.
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.
Como siempre, nuestra grilla vacía. Clickeamos en «Agregar nuevo usuario».
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.
Lo unico que tenemos que hacer es tildar sobre el Rol que queremos para nuestro Usuario.
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.