Spanish (Español) translation by steven (you can also view the original English article)
En esta serie, estamos hablando sobre las API personalizadas en Magento.
En la primera parte, creamos un módulo personalizado completo para implementar la API personalizada, en el que creamos los archivos necesarios para conectar las API personalizadas proporcionadas por nuestro módulo.
En esta segunda y última parte, veremos la sección de back-end para demostrar cómo consumir las API.
Resumen rápido
Hagamos un resumen rápido de la primera parte. Aquí está la lista de archivos que ya hemos creado:
- app/etc/modules/Envato_All.xml: Es un archivo utilizado para habilitar nuestro módulo personalizado.
- app/code/local/Envato/Customapimodule/etc/config.xml: Es un archivo de configuración del módulo.
- app/code/local/Envato/Customapimodule/etc/api.xml: Es un archivo que declara las API proporcionadas por nuestro módulo.
- app/code/local/Envato/Customapimodule/etc/wsdl.xml: En este archivo, definiremos los métodos API según la convención de WSDL.
- app/code/local/Envato/Customapimodule/Helper/Data.php: Es un archivo utilizado por el sistema de traducción en Magento.
- app/code/local/Envato/Customapimodule/Model/Product/Api.php: Es un archivo modelo que implementa la lógica para nuestros métodos API.
- app/code/local/Envato/Customapimodule/Model/Product/Api/V2.php: Es un archivo compatible con la API v2 de Magento.
Además, si ya has habilitado nuestro módulo personalizado, deberías ver que nuestro método de API "customapimoduleProductList" aparece junto con las otras API cuando visitas la página http://yourmagentostore/api/v2_soap?wsdl=1 que enumera todas las API disponibles en Magento.
Magento admite "Roles API" y "Usuarios API". Necesitamos "Roles API" ya que no deseas permitir que el usuario acceda a todos y cada uno de los API de Magento. Los "Roles API" se utilizan para crear roles con permisos de acceso limitados a los recursos de la API.
Por ejemplo, podrías crear una función que solo permita el acceso de solo lectura a las API de "Listado de productos". Por otro lado, puedes crear un rol que permita la modificación del catálogo, ¡y solo se asignará a los usuarios "autorizados"!
Configurar "Usuarios en la API" y "Roles en la API" desde el back-end
En esta sección, crearemos una "Función API" y un "Usuario API" de demostración. Más adelante, los utilizaremos para consumir las API personalizadas proporcionadas por nuestro módulo. ¡Dirígete al back-end de Magento!
Configurar un rol para la API
Ve a Sistema > Servicios web > Roles (SOAP / XMLRPC). Haz clic en Agregar nuevo rol para crear un nuevo rol. En la pestaña Información del rol, he ingresado "Demo SOAP Role" en el campo Nombre del rol.



A continuación, en la pestaña Recursos de roles, verás los diferentes recursos con casillas de verificación. Haz clic en la casilla de verificación Productos > Datos del producto. Significa que "Demo SOAP Role" solo puede acceder a las API de recursos "Datos del producto". Haz clic en el botón Guardar rol para guardar la información del rol.



Configurar un usuario para la API
Ahora, creemos un usuario en la API y asignemos el rol "Demo SOAP Role" a ese usuario. Ve a Sistema > Servicios web > Usuarios (SOAP / XMLRPC). Haz clic en Agregar nuevo usuario para crear un nuevo usuario. En la pestaña Información de usuario completa la información requerida.



Además, en la pestaña Rol de usuario, selecciona el botón de tipo radio Demo SOAP Role. Haz clic en el botón Guardar usuario para guardar la información del usuario.



Así que eso es todo: ¡hemos configurado el rol y el usuario respectivamente para acceder a las API de Magento!
Cómo consumir la API de Magento
En esta sección, veremos cómo llamar a las API de Magento. Debajo de la raíz del documento, crea un archivo PHP de ejemplo y llénalo con los siguientes contenidos.
1 |
<?php
|
2 |
// v2 call
|
3 |
$client = new SoapClient('http://www.yourmagentostore.com/api/v2_soap/?wsdl=1'); |
4 |
$session = $client->login('soapuser', 'soapuser'); |
5 |
$result = $client->customapimoduleProductList($session); |
6 |
$client->endSession($session); |
7 |
echo '<pre>'; |
8 |
print_r($result); |
9 |
|
10 |
|
11 |
// v1 call
|
12 |
$client = new SoapClient('http://www.yourmagentostore.com/api/soap/?wsdl=1'); |
13 |
$session = $client->login('soapuser', 'soapuser'); |
14 |
$result = $client->call($session, 'product.list', array(array())); |
15 |
$client->endSession($session); |
16 |
echo '<pre>'; |
17 |
print_r($result); |
Cambia "http://www.yourmagentostore.com" a la URL de tu tienda Magento. Como mencioné anteriormente, Magento admite dos versiones de las API, v1 y v2. En este ejemplo, he demostrado las dos formas.
En el modo v2 de la API, primero creamos una nueva instancia de la clase "SoapClient". A continuación, llamamos al método de "inicio de sesión" para iniciar sesión en la tienda Magento; por supuesto, tendremos que proporcionar el nombre de usuario y la contraseña del "Usuario API" creado en la sección anterior. Finalmente, llamamos al método "customapimoduleProductList" para recuperar la lista de productos. La variable $session
se pasa como un parámetro de entrada al método para reclamar la autenticidad del método. Una cosa importante a tener en cuenta aquí es que "customapimoduleProduct" es el prefijo del recurso y "list" es el nombre del método.
En el modo v1 de la API, la única parte diferente es la llamada del método API. Estamos utilizando un método genérico de "llamada", en el que se pasan como argumentos un "nombre del método" y otros parámetros. Como puedes ver, "product" se usa como un prefijo del recurso y "list" es el nombre del método.
Conclusión
¡Eso resume la serie! ¡Ahora deberías sentirte cómodo con las API de Magento, y puedes crear API's personalizadas según tus necesidades! ¡No dudes en enviar tus sugerencias y comentarios!