Palabra Clave
Contenidos
Introducción
Con el fin de garantizar entregas y reducir PNR contradictorios, se presenta la necesidad de implementar mecanismos que permitan validar la correcta entrega de los paquetes.
Esto requiere que, previo a la entrega de los paquetes, el sistema informe al driver que debe solicitar una Palabra Clave al receiver para poder corroborar la identidad del mismo.
Con el fin de subsanar posibles problemas de conectividad, se ha implementado adicionalmente al mecanismo de validación Online, un mecanismo para realizar la validación de manera Offline para permitir la normal entrega de los paquetes aun en zonas que no dispongan de buena conectividad.
Obtención de la Palabra Clave durante la autorización del envío

Proceso de entrega

- No todos los paquetes requieren del proceso de validación de Palabra Clave.
- Para determinar si un paquete requiere de este proceso, deberá consultarse el valor del campo "keyword" del response enviado durante la Autorización del envío. La existencia del campo con algún valor implica la obligatoriedad de la validación.
Validación Online
Este es el principal mecanismo de validación que deberá ser utilizado.
Antes de realizar la entrega del paquete, el driver deberá solicitar la Palabra Clave al receiver e ingresar la misma en la aplicación para que ésta valide contra los servicios de Mercado Libre.
Ingreso de Palabra Clave Correcta

Ingreso de Palabra Clave Incorrecta

- Para seguridad se utilizará OAuth
Request:
POST 'https://api.mercadolibre.com/shipments/keyword_validation' \ --header 'Authorization: Bearer {accessToken}'Formato Request
Dentro del body se enviará un objeto JSON con los campos listados a continuación:
| Nombre | Tipo de dato | Descripción | Tipo |
|---|---|---|---|
| keyword | String | Palabra Clave informada por el receiver | Mandatorio |
| shipments_ids | Long[] | Identificador único del envío usado por Mercado Libre que se requiere validar. En aquellos casos en que se entreguen varios paquetes a un mismo receiver, es posible enviar la lista de shipment_id para validar con una única Palabra Clave. | Mandatorio |
| method | String | Indica si la llamada está siendo realizada de forma online u offine. Valores posibles:
| Opcional |
| driver_id | String | Identifica el driver que realiza la entrega del paquete | Opcional |
Formato Response
Cuando la validación fuese satisfactoria, el resultado del POST retornará un código 200. En estos casos no se incluirá contenido dentro del body de la respuesta.
En aquellos casos en que la validación de la Palabra Clave fuese incorrecta, se incluirá dentro del body de la respuesta la siguiente información:
| Nombre | Tipo de dato | Descripción | Tipo |
|---|---|---|---|
| message | String | Mensaje de respuesta | Mandatorio |
| error | String | Código de error | Mandatorio |
Status Codes
| Status | Código HTTP | Descripción | Acción |
|---|---|---|---|
| SUCCESS | 200 | La validación fue satisfactoria | El paquete puede ser entregado. |
| FAILED | 400 | La validación no fue satisfactoria | Se deberá prestar atención al campo "error" dentro del body de la respuesta para analizar como continuar. Si el error es "keyword_invalid" se deberá solicitar una nueva Palabra Clave y validarla. Si el error es "too_many_request" ya no podrá volverse a validar la Palabra Clave hasta el próximo día. |
| ERROR | 500 | Cualquier error del lado del servidor. En este caso, "error" indicará la causa del error. | Se podrá volver a intentar hasta obtener una respuesta satisfactoria de acuerdo al esquema de reintento definido. En caso de persistir, se deberá realizar el proceso de validación Offline |
Ejemplos
Request:
POST 'https://api.mercadolibre.com/shipments/keyword_validation'
\ --header 'Authorization: Bearer {accessToken}'{
"keyword": "manzana" ,
"method": "online" ,
"driver_id": "123" ,
"shipments_ids": [10101033319242, 10101053419321]
}Response:
SUCCESS (200 OK)
FAILED (400)
{
"message": "The keyword is invalid",
"error": "keyword_invalid",
}{
"message": "Too Many Requests",
"error": "too_many_request",
}ERROR (5xx)
{
"message": "Internal Server Error",
"error": "unexpected_error",
}Validación Offline
En aquellos casos en los que por problemas de conexión a internet, se impida realizar la validación en forma online, se prevé un mecanismo para que la validación pueda ser llevada a cabo en forma local.
- Esto requiere que a posterior se realice una llamada al servicio de validación Online para reflejar la registración de la correcta validación.
Mecanismo de validación Offline
1. Obtener la Palabra Clave del shipment
Obtener el valor del campo "keyword" del response enviado durante la Autorización del envío.
En caso de no encontrarse este campo, o que el mismo estuviese vacío, no deberá realizarse esta validación.
{
...
"keyword": "3bc405c30cadb4e6eefdf0cff899abcf8234d761c9a3ea1b2f510601ae5fc504"
...
}2. Generar el hash de la Palabra Clave del receiver
Concatenar el shipment_id y la Palabra Clave informada por el receiver (en minúscula y sin utilizar acentos).
Aplicar el algoritmo SHA256 a la concatenacion anterior
shipment_id = 10101033319242
palabraInformada = "Manzana"
textoAEncriptar = shipment_id + SinAcentosNiMayusculas(palabraInformada) --> "10101033319242manzana"
nuevoHash = SHA256(textoAEncriptar) --> "3bc405c30cadb4e6eefdf0cff899abcf8234d761c9a3ea1b2f510601ae5fc504"
3. Comparar ambos hash
Realizar la comparación de los hash obtenidos en paso 1 y 2 utilizando una comparación Case-insensitive.
4. Repetir el proceso en caso de fallo
Este proceso podrá ser repetido hasta tanto la comparación sea exitosa o se cumpla la máxima cantidad de reintentos permitida.
De cumplirse la máxima cantidad de reintentos permitida no deberá continuar reintentando hasta el próximo día.
5. Enviar información a Mercadolibre
Todas las validaciones que se realicen en forma Offline deberán ser informadas a Mercadolibre a través del servicio de validación Online definido previamente.
Algunos ejemplos de hash
| Shipment Id | Palabra Clave | Hash |
|---|---|---|
| 90854907004 | galleta | 32b962a2a31ab288f49fb695cf87672f08d0da747177f7ddd0e0ad77a7d6d560 |
| 66151385909 | tierra | abd231310284f7fd6a7e7cf162c37686032c301c6852a2d5fd7f06fd381d12ba |
| 44094201961 | moto | e9e810b19511c8d831bba1bae64b9a013857c59caa75acbe31e2e5c439c2d3f5 |
| 37312402307 | antena | 130b7f810e6f28d38c96d7b89f195594d527f4aebebadce63cce397664fd7736 |
| 19713911553 | silla | f1e7db0987c06540a8613411ce7c78b51d75b41f7d235dee799a0410446c0ad9 |
| 52362595220 | muro | 230b9d48b6556bdf96fea354a762a3c95e9b2b4c1f157e5b824aff7d1916afd2 |
| 70095070394 | cama | ac3b8f6306f596c410e0516de440c43b063829e0a95caa964e1de1ccbf603cc7 |
| 60013868181 | ventana | 224388a465eadfa3cee80b1eb6989a379758715d7dfee78b8933dd73af0287fe |
| 53490772071 | foco | 092dba39afb9a1d51a456f51825caabbe5b6752369ea0c802b57016148a4446d |
| 83088916183 | remera | b2dcac1190371eb12c7e096b80f039183038becf52941f101dfd32c908e01767 |