Este documento presenta una introducción al uso de las APIs de Magento para integrar sistemas externos. Explica las principales diferencias entre las APIs de Magento 1 y Magento 2, y proporciona ejemplos de cómo autenticarse, consultar datos y completar un pedido a través de las APIs. También describe el uso de un middleware para facilitar las integraciones entre Magento y otros sistemas de manera asincrónica.
5. 5
Identificando puntos clave
→ Integración de Productos
→ Integración de Stock
→ Integración de Precios
→ Integración de Órdenes/Pedidos
→ Integración de Envíos
6. 6
Para poder llevar a cabo estas integraciones
deberíamos identificar con qué herramientas
contamos. En nuestro caso la principal herramienta
Magento API.
7. 7
Magento API
Provee a los desarrolladores una interfaz de acceso a cualquier contenido de magento
(Info de Clientes, Pedidos, Catálogo, etc.). Compatibilidad con los protocolos REST
(Representational State Transfer) y SOAP (Simple Object Access Protocol).
Cuenta con 3 tipos de autenticación
→ OAuth.
→ Autenticación mediante Tokens.
→ Credenciales Administradores & Clientes.
En el caso de la API REST vamos a utilizar HTTP methods para identificar el tipo de
operación.
→ Método GET Consulta.
→ Método POST Alta/Creación.
→ Método PUT Actualización.
→ Método DELETE Borrado.
10. Ahora que sabemos utilizar la API.
¿Cómo llevamos adelante nuestro desarrollo?
Existen muchas maneras de realizar esta implementación.
Primera pauta centrarnos en no modificar Magento para este tipo de
desarrollos, y aprovechar al máximo las APIs estándar.
¿Deberíamos modificar las plataformas con las que necesitamos
integrarnos?
Debemos pensar en conectar estos sistemas con el menor impacto
posible en su arquitectura.
10
11. Es un software que asiste a una aplicación para interactuar
o comunicarse con otras aplicaciones.
Se encuentra como capa de interconexión, simplifica el
trabajo de los desarrolladores a la hora de implementar
comunicaciones entre sistemas distribuidos.
En nuestro caso nos va a permitir conectar nuestra
plataforma de e-commerce Magento con los sistemas
antes mencionados.
11
Middleware
14. ¿Cuándo usarlo?
14
CRONES
➔ Envío de Emails
➔ Indexación de Entidades
➔ Limpieza y Warm-Up de Caché
➔ Backups
COLA DE MENSAJES
➔ Creación de Productos
➔ Generación de Órdenes
➔ Cambios de Estado
➔ Actualización de Stock
➔ Admisión de Paquetes
➔ Validación de Pagos
15. Cola de Mensajes (Brokers)
15
Motor de nuestro middleware RabbitMQ
➔ Paradigma Pub/Sub (Publish/Subscribe)
➔ Rest API
➔ Latencia medida en microsegundos
➔ 250K mensajes en simultáneo
➔ Gran comunidad de soporte
PUB SUB
Queue_sn
19. Comparación Magento 1 / Magento 2
19
Magento 1
➔ Las APIs SOAP y REST ofrecen
distintas funciones
Magento 2
➔ SOAP y REST ofrecen las mismas
funciones
20. Comparación Magento 1 / Magento 2
20
Magento 1
➔ Las APIs SOAP y REST ofrecen
distintas funciones
➔ Código separado según que la API
sea SOAP o REST
Magento 2
➔ SOAP y REST ofrecen las mismas
funciones
➔ El mismo módulo expone los servicios
para SOAP y REST
21. Comparación Magento 1 / Magento 2
21
Magento 1
➔ Las APIs SOAP y REST ofrecen
distintas funciones
➔ Código separado según que la API
sea SOAP o REST
➔ Sistemas de autenticación distintos
para SOAP y REST
Magento 2
➔ SOAP y REST ofrecen las mismas
funciones
➔ El mismo módulo expone los servicios
para SOAP y REST
➔ Sistema de token compatible entre
ambas (OAuth sólo soportado para REST)
22. Comparación Magento 1 / Magento 2
22
Magento 1
➔ Las APIs SOAP y REST ofrecen
distintas funciones
➔ Código separado según que la API
sea SOAP o REST
➔ Sistemas de autenticación distintos
para SOAP y REST
➔ Conformidad con SOAP WS-I
opcional
Magento 2
➔ SOAP y REST ofrecen las mismas
funciones
➔ El mismo módulo expone los servicios
para SOAP y REST
➔ Sistema de token compatible entre
ambas (OAuth sólo soportado para REST)
➔ Cumplimiento requerido con los
estándares SOAP WS-I
23. Comparación Magento 1 / Magento 2
23
Magento 1
➔ Las APIs SOAP y REST ofrecen
distintas funciones
➔ Código separado según que la API
sea SOAP o REST
➔ Sistemas de autenticación distintos
para SOAP y REST
➔ Conformidad con SOAP WS-I
opcional
➔ No autentificación por sesión, que
sea de frontend o backend
Magento 2
➔ SOAP y REST ofrecen las mismas
funciones
➔ El mismo módulo expone los servicios
para SOAP y REST
➔ Sistema de token compatible entre
ambas (OAuth sólo soportado para REST)
➔ Cumplimiento requerido con los
estándares SOAP WS-I
➔ Autentificación automática para clientes
(front) como para usuario de admin
24. Comparación Magento 1 / Magento 2
24
Magento 1
➔ Las APIs SOAP y REST ofrecen
distintas funciones
➔ Código separado según que la API
sea SOAP o REST
➔ Sistemas de autenticación distintos
para SOAP y REST
➔ Conformidad con SOAP WS-I
opcional
➔ No autentificación por sesión, que
sea de frontend o backend
➔ No permite acceso sin autenticación
Magento 2
➔ SOAP y REST ofrecen las mismas
funciones
➔ El mismo módulo expone los servicios
para SOAP y REST
➔ Sistema de token compatible entre
ambas (OAuth sólo soportado para REST)
➔ Cumplimiento requerido con los
estándares SOAP WS-I
➔ Autentificación automática para clientes
(front) como para usuario de admin
➔ Posibilidad de acceso anónimo como
Guest
25. Desde: Stores > Configuration > Services > Magento Web API
Web API Security: Allow Anonymous Guest Access
Habilitar el acceso como Guest
25
27. 27
La autentificación en las APIs de Magento
3 formas de identificarse
1) Por sesión:
Customer / Admin User
> Limitado a llamadas ajax por cuestiones de vulnerabilidad
2) Por token:
llamado /rest/V1/integration/admin/token
ver github: external/_authentication.php
3) OAuth:
System > Extensions: Integrations - Nueva Integración
28. 28
La autentificación en las APIs de Magento
3 formas de identificarse
1) Por sesión:
Customer / Admin User
> Limitado a llamadas ajax por cuestiones de vulnerabilidad
2) Por token:
llamado /rest/V1/integration/admin/token
ver github: external/_authentication.php
3) OAuth:
System > Extensions: Integrations - Nueva Integración
29. 29
La autentificación en las APIs de Magento
3 formas de identificarse
1) Por sesión:
Customer / Admin User
> Limitado a llamadas ajax por cuestiones de vulnerabilidad
2) Por token:
llamado /rest/V1/integration/admin/token
ver github: external/_authentication.php
3) OAuth:
System > Extensions: Integrations - Nueva Integración
36. http://devdocs.magento.com/guides/v2.2/get-started/order-tutorial/order-intro.html
Ejemplo de flujo completo por API
36
➔ Autentificarse como cliente:
POST http://<host>/rest/default/V1/integration/customer/token
token q0u66k8h42yaevtchv09uyy3y9gaj2ap
➔ Creación de un carrito:
POST http://<host>/rest/default/V1/carts/mine
quoteId 4
➔ Agregar productos al carrito
POST http://<host>/rest/default/V1/carts/mine/items
itemId 12
➔ Esta etapa requiere consultas a endpoints adicionales para
productos bundles o configurables
37. http://devdocs.magento.com/guides/v2.2/get-started/order-tutorial/order-intro.html
Ejemplo de flujo completo por API
37
➔ Autentificarse como cliente:
POST http://<host>/rest/default/V1/integration/customer/token
token q0u66k8h42yaevtchv09uyy3y9gaj2ap
➔ Creación de un carrito:
POST http://<host>/rest/default/V1/carts/mine
quoteId 4
➔ Agregar productos al carrito
POST http://<host>/rest/default/V1/carts/mine/items
itemId 12
➔ Esta etapa requiere consultas a endpoints adicionales para
productos bundles o configurables
➔ Estimar costo de envío:
POST /rest/default/V1/carts/mine/estimate-shipping-methods
flatrate $150
38. http://devdocs.magento.com/guides/v2.2/get-started/order-tutorial/order-intro.html
Ejemplo de flujo completo por API
38
➔ Autentificarse como cliente:
POST http://<host>/rest/default/V1/integration/customer/token
token q0u66k8h42yaevtchv09uyy3y9gaj2ap
➔ Creación de un carrito:
POST http://<host>/rest/default/V1/carts/mine
quoteId 4
➔ Agregar productos al carrito
POST http://<host>/rest/default/V1/carts/mine/items
itemId 12
➔ Esta etapa requiere consultas a endpoints adicionales para
productos bundles o configurables
➔ Estimar costo de envío:
POST /rest/default/V1/carts/mine/estimate-shipping-methods
flatrate $150
➔ Enviar información de facturación & envío:
POST /rest/default/V1/carts/mine/shipping-information
subtotal $1650
39. http://devdocs.magento.com/guides/v2.2/get-started/order-tutorial/order-intro.html
Ejemplo de flujo completo por API
39
➔ Autentificarse como cliente:
POST http://<host>/rest/default/V1/integration/customer/token
token q0u66k8h42yaevtchv09uyy3y9gaj2ap
➔ Creación de un carrito:
POST http://<host>/rest/default/V1/carts/mine
quoteId 4
➔ Agregar productos al carrito
POST http://<host>/rest/default/V1/carts/mine/items
itemId 12
➔ Esta etapa requiere consultas a endpoints adicionales para
productos bundles o configurables
➔ Estimar costo de envío:
POST /rest/default/V1/carts/mine/estimate-shipping-methods
flatrate $150
➔ Enviar información de facturación & envío:
POST /rest/default/V1/carts/mine/shipping-information
subtotal $1650
➔ Elegir método de pago:
POST /rest/default/V1/carts/mine/payment-information
orderId 4
40. http://devdocs.magento.com/guides/v2.2/get-started/order-tutorial/order-intro.html
Ejemplo de flujo completo por API
40
➔ Autentificarse como cliente:
POST http://<host>/rest/default/V1/integration/customer/token
token q0u66k8h42yaevtchv09uyy3y9gaj2ap
➔ Creación de un carrito:
POST http://<host>/rest/default/V1/carts/mine
quoteId 4
➔ Agregar productos al carrito
POST http://<host>/rest/default/V1/carts/mine/items
itemId 12
➔ Esta etapa requiere consultas a endpoints adicionales para
productos bundles o configurables
➔ Estimar costo de envío:
POST /rest/default/V1/carts/mine/estimate-shipping-methods
flatrate $150
➔ Enviar información de facturación & envío:
POST /rest/default/V1/carts/mine/shipping-information
subtotal $1650
➔ Elegir método de pago:
POST /rest/default/V1/carts/mine/payment-information
orderId 4
➔ Revisar pedido (como admin)
➔ Crear factura
➔ Despachar un ítem
➔ Realizar una devolución
..etc.
41. ¿Por qué?
● Mejorar un endpoint existente (ej. bestseller products)
● Agregar validaciones (ej. validar CUIL para customer)
● Extender permisos para consultar un endpoint
● Entidades propias (ej. locales / fabricante / proveedor..etc.)
41
API Magento personalizada
Integración hacia APIs externas
● Los plugins Magento 2 de los medios de pago populares
interactúan con sus propias APIs: TodoPago, rapipago,
Decidir, mercadopago (lógica en php-sdk)
● EBay, Amazon... usan la librería Zend en magento2-ce
42. → devdocs
→ Getting started with Magento Web APIs
http://devdocs.magento.com/guides/v2.2/get-started/bk-get-started-api.html
→ REST API documentation
http://devdocs.magento.com/guides/v2.2/rest/bk-rest.html
→ Lista de métodos disponibles
http://devdocs.magento.com/swagger/index.html
(ver https://swagger.io/)
→ #issue de autentificación por sesión de backend
https://github.com/magento/magento2/issues/9138
→ @alanstorm
→ Understanding Web API Architecture
http://alanstorm.com/magento-2-understanding-the-web-api-architecture/
→ github
https://github.com/lc-mayoul/Lyracons_MeetMagento
Referencias
42
43. La herramienta swagger:
En http://devdocs.magento.com/swagger/index.html un listado completo de todos los endpoints de las APIs nativas de
Magento
43