Eventos de Webhook#

Referencia de API

Puedes configurar webhooks a través de API que te permiten recibir notificaciones sobre eventos que suceden en tus tiendas.

Estos son los eventos disponibles para recuperar con webhooks:

  • NEW_ORDER: Evento de creación de la orden
  • ORDER_EVENT_CANCEL: Eventos de cancelación de pedidos. Ver Eventos de cancelación
  • ORDER_OTHER_EVENT: Otros eventos del pedido. Ver Otros eventos
  • MENU_APPROVED: Eventos de aprobación del menú.
  • MENU_REJECTED: Eventos de rechazo del menú.
  • PING: Este evento habilita el proceso de health check
  • STORE_CONNECTIVITY: Este evento habilita el proceso información de conectividad de las tiendas. (Cuando deja o vuelve a estar disponible para operar)

Utiliza los endpoints Webhooks para registrar y probar webhooks en tus tiendas.

Seguridad#

Para segurizar los webhooks nuestra Public API cuenta con una firma que se genera usando un código de autenticación de mensajes basado en hash (HMAC) con SHA-256 (Secure Hash Algorithm 2). Cada request tiene su propia firma, la cual se enviará en un header con el nombre Rappi-Signature y tendrá el siguiente formato

t=123456,sign=d74b65c2e68c1a84a4d5843a69ef5faf1d82f28df2dd3723e8e0dad9c54abc79

Importante

Todos headers descritos en este portal son NO case-sensitive. Para más información puedes revisar el siguiente Link

Validación tu Firma#

Puedes validar la firma que llega en el header siguiendo los pasos de abajo

Important

Para validar el estado de tu firma, vas a necesitar el secret de tu webhook.

  1. Extrae la marca de tiempo y las firmas del encabezado.

    1.1 Separa con una coma,",". Para crear una lista.\

    1.2 Separa cada elemento nuevamente con "=" para obtener una t y un sign.

    • t: Es el timestamp de la solicitud
    • sign: Es la firma
  2. Crea la cadena signed_payload concatenando:

    • El timestamp
    • El carácter .
    • El payload

      Ejemplo:

      123456.{ "message" : "Este es un ejemplo" }
  3. Calcula un HMAC con la función hash SHA256. Utiliza el secret como clave y use la cadena signed_payload como mensaje para determinar la firma esperada.

  4. Compara la firma en el encabezado con la firma esperada.

Ahora puedes asegurarte de que la información es válida.

Note

Asegurate de tomar el payload string en el mismo formato que llega para evitar diferencias en la firma

Health Check#

Es un proceso que corre cada minuto para validar el estado de cada tienda asociada a un webhook. Cuando una tienda no está disponible se apaga hasta que vuelva a estarlo

Important

Este proceso solo estará disponible para aquellas tiendas que estén utilizando el webhook NEW_ORDER y se suscriban a PING

Funcionamiento#

Se enviará un POST a la url configurada en el webhook con el siguiente formato

{
    "store_id": 999
}

Donde store_id representa el id de la tienda configurada de su lado (external id)

La respuesta debe tener el siguiente formato

{
    "status": "OK",
    "description": "Tienda prendida"
}
  • status: este campo es requerido, si viene null o con un valor distinto a OK se considerará que la tienda no está disponible
  • description: este campo es opcional.

Store Connectivity#

Informa a la url configurada las novedades de cambio de disponibilidad de una tienda.

Funcionamiento#

Se enviará un POST a la url configurada en el webhook con el siguiente formato.

{
    "external_store_id": "999",
    "enabled": false,
    "message": "The Store is not enabled to operate"
}

Donde external_store_id (String) representa el id de la tienda configurada de su lado.

Donde enabled (boolean) representa con un valor binario de la tienda está disponible para operar o no.

Donde message (String) representa un mensaje informando si la tienda esta disponible o no.