Flete dinámico

Importante:
Antes de comenzar el desarrollo, debes tener la aprobación de Mercado Libre.

 

La función de flete dinámico tiene como objetivo agilizar y democratizar la selección de precios y los plazos de flete para los sellers que utilizan la modalidad ME1, a fin de mejorar la experiencia del comprador brindandole información más precisa de los plazos del flete aplicados por cada vendedor.
También, se propone ampliar el catálogo de los vendedores que cuentan con más de un centro de distribución, esperando que esto genere un aumento en las ventas.

Nota:
Inicialmente, solo estará disponible para vendedores de Brasil, Argentina y México.


Contenidos

→Dinámica de integración
→Tiempo de respuesta
→Contingencia
→Contrato de la API
→Errores


Dinámica de integración

Este proyecto posee una dinámica diferente a toda la API de Mercado Libre. En este caso, el seller/integrador deberá poner a disposición un endpoint, en el cual Mercado Libre realizará un request para obtener la información del flete que se muestra en la plataforma al momento de la compra.
Tanto el vendedor (desarrollo inhouse), el integrador o el socio que esté integrado a una o varias transportistas podrán disponibilizar el endpoint.

Tiempo de respuesta

Un aspecto muy importante de este proyecto es el tiempo de respuesta del endpoint, que no podrá superar los 400 ms. Antes de activar el endpoint, habrá varias validaciones, entre ellas, la validación de carga para evaluar el tiempo de respuesta. El resultado será compartido con el integrador. En caso de superar el tiempo límite, la integración no será aprobada y no podrá ser activada para los vendedores.

Nota:
La actual infraestructura de flete dinámico está ubicada en la región este de EE.UU. (Virginia).

Contingencia

En los casos de falla en la cotización y que el comprador no quede sin una respuesta, utilizamos como contingencia la calculadora MELI. En esta herramienta interna el vendedor carga sus tarifarios con el apoyo del asesor comercial.
La contingencia se activará en las siguientes situaciones:

  • Errores/falta de disponibilidad del integrador.
  • Tasa de timeouts muy alta (en caso de superar los 400 ms).
  • Cuando se devuelva -1 al error_code no response.

Contrato de la API

Para la creación del endpoint, deben seguirse las reglas del contrato, como se indica a continuación:
El nombre del endpoint estará a cargo del integrador, y solo bastará respetar el “contrato” estipulado para los request y responses.
En el request se encuentra apenas un ítem de un vendedor.
La requisición es hecha a traves de un POST en el ednpoint del integragor, que por su vez debe soportar las versiones del http 1.1 y 2.0.
A continuación, se presenta la descripción de cada uno de los ítems admitidos en el payload:

destination (string)​:obligatorio. Es el Código Postal del comprador, donde se entregarán los productos.
buyer_id (string): opcional. Es el identificador del usuario que está comprando en Mercado Libre. Solo está disponible cuando el usuario que realiza la cotización está logueado en la plataforma Mercado Libre.
items (array)​​: obligatorio. Es una lista de ítems que están siendo comprados.
seller_id (string)​​: obligatorio. Es la identificación de la cuenta dentro de Mercado Libre.
item_id (string): obligatorio. Es la identificación del item registrado en Mercado Libre.
store_id (string)​​: opcional. Es la identificación de la tienda oficial dentro de Mercado Libre.
sku (string)​​: obligatorio. Es la identificación del producto al ser comprado.
quantity (int)​​: obligatorio. Es la cantidad que será comprada de un mismo item.
origin (string)​​: opcional. Es el Código Postal registrado por el vendedor.
price (float)​​: opcional. Es el precio unitario del producto multiplicado por la cantidad de ítems elegidos por el comprador, al momento de la cotización.
dimensions (object)​​: obligatorio. Es la lista de medidas de un producto.
length (float)​​: obligatorio en el caso de que existan dimensions. Es el largo del producto (en centímetros).
width (float)​​: obligatorio en el caso de que existan dimensions. Es el ancho del producto (en centímetros).
height (float)​​: obligatorio en el caso de que existan dimensions. Es el alto del producto (en centímetros).
weight (float)​​: obligatorio en el caso de que existan dimensions. Es el peso del producto (en kilogramos).

Importante:
Cuando la cantidad de ítems es mayor a 1, hay un algoritmo en el marketplace que consolida los volúmenes en la mejor combinación de dimensiones, para optimizar el espacio. En este caso, la integración debe considerar siempre los valores enviados en el POST e no hacer más ninguna multiplicación.

Ejemplo:

{  
   "destination":"13295000",
   "items":[  
      {  
         "seller_id":"89540000",
         "item_id":"MLB1246956299",
         "sku":"0001166000",
         "quantity":1,
         "origin":"02611-000",
         "price":316,
         "dimensions":{  
            "length":1,
            "height":1,
            "width":1,
            "weight":1
         }
      }
   ]
}

Respuesta: El response debe tener la cotización correspondiente al ítem comprado.
A continuación, se presenta la descripción de cada uno de los ítems admitidos en el payload:

packages (array)​​: Es la lista de paquetes creada por el vendedor.
items (array)​​: Es la lista de ítems dentro de un mismo paquete.
sku (string)​​: Es la identificación del item que será comprado.
seller_id (string)​​: Es la identificación de la cuenta que está vendiendo el producto. Generalmente, es una copia de la información ya dada en el request.
store_id (string)​​: opcional. Es la identificación del negocio que está vendiendo el producto. Generalmente, es una copia de la información ya dada en el request.
quantity (int)​​: Es la cantidad del producto que se enviará
stock (int)​​: Es la disponibilidad del producto en stock por CD. En el caso de que esa información no esté disponible, debe devolverse el valor -1.
error_code (int)​​: Es el código que identificará el tipo de error relacionado con el producto. La lista de los códigos admitidos será presentada en las siguientes secciones.
quotations (array)​​: Son las informaciones del flete para un ítem.
cost (float)​​: Es el costo real del flete. En el caso de no disponer de esa información, debe devolverse el mismo valor de price.
price (float)​​: Es el precio del flete que será presentado al comprador. Esta información difiere de cost, ya que existe la posibilidad de que el flete sea subvencionado parcial o totalmente (flete gratis).
handling_time (int)​​: Es el tiempo, en días hábiles, que se utilizará para separar y embalar el producto. Abarca todos los procesos previos al envío efectivo del paquete. En el caso de que esa información no esté disponible, debe devolverse el valor 0.
shipping_time (int)​​: Es el tiempo, en días hábiles, de tránsito del paquete (desde la entrada al camión hasta la entrega al comprador).
promise (int)​​: Es la suma de los valores de handling_time y shipping_time.
caption (string)​​: Es el nombre asignado a la cotización. La opción esperada es Normal.
service_id (int) : Es el código que identifica un servicio/carrier dentro del contexto del vendedor. Los valores válidos van de 0 a 99. Este código es único e de responsabilidad exclusivo del vendedor/integrador, siendo responsabilidad de Mercado Libre solo pasar este valor.

Importante:
En caso de ser enviado solo un dígito, será completado automáticamente con 0 a la izquierda. Y en el caso de ser enviado con más de 2 dígitos, la información no será integrada y devolverá 00 en el código del carrier.

Ejemplo:

{
    "packages": [
        {
            "items": [
                {
                    "sku": "00266983118",
                    "seller_id": "207740981",
                    "quantity": 1,
                    "stock": -1,
                    "error_code": 0,
                    "store_id": null
                }
            ],
            "quotations": [
                {
                    "cost": 66.6,
                    "price": 66.6,
                    "handling_time": 0,
                    "shipping_time": 39,
                    "promise": 39,
                    "caption": "Normal",
                    "service_id": 10
                }
            ]
        }
    ]
}


Errores

A continuación, se presenta la lista de los códigos de errores válidos.

Parámetro Descripción
-1 Error inesperado (utilizar solo en casos muy específicos).
0 Sin error.
1 Cantidad no disponible en stock.
2 CP de destino inválido.
3 Producto no disponible para el Código Postal de destino.
4 El producto escogido no existe.
Nota:
Cuando se devuelva el error -1, se considerará un error interno en la aplicación del integrador y el comprador va a recibir la cotización de la calculadora MELI (contingencia).
o regístrate para recibir las últimas novedades sobre nuestra API