Webhooks Dinámicos

Agrega nuevos webhooks a DEUNA.

El desarrollo de los webhooks dinámicos soporta nuevos webhooks y evita generar programación por cada nuevo webhook agregado.

Emplea webhooks dinámicos cuando necesites funcionalidades durante el checkout.

📘

Debes configuras y ejecutar cada webhook nuevo.

Arquitectura de la implementación de webhooks dinámicos

Arquitectura de la nueva implementacion de Webhooks Dinamicos

Ejemplo de implementacion para agregar propina

Configuración del webhook

Crea un nuevo webhook para un proceso

Consume un endpoint que reciba la información del nuevo webhook.

Ejemplo

POST api/v1/merchants/{merchant_id}/webhooks
Header: {merchant_token}
Body:
{
	"event_name": string,
	"url": string,
	"fields_update" :  {
		"fields": string[],
		"custom_fields": string[]
	},
	"response_body" : {
		"fields": string[],
		"custom_fields": string[]
	},
	"response_template": string 
	"response_data" : string
}

Detalles del payload

Ten en cuenta los detalles del payload:

  • event_name: Nombre del webhook.
  • url: URL al que se ejecutara el request.
  • fields_update: Contenedor de los campos de la orden a actualizar.
    • fields: Lista de campos de la orden que se modifican al ejecutar el webhook.
    • custom_fields: Lista de custom fields de la orden que se modifica al ejecutar el webhook. Son los campos requeridos en tu negocio.
  • response_body : Contenedor de los campos de la orden que se retornan al front cuando se ejecuta el webhook.
    • fields: Lista de campos de la orden que se modifican al ejecutar el webhook.
    • custom_fields: Lista de custom fields de la orden que se modifica al ejecutar el webhook.
  • response_template: Template de respuesta para transformar la orden del merchant en una orden de DEUNA durante la ejecución del webhook.

Estructura de órdenes

Ten en cuenta que cada merchant tiene una estructura diferente de órdenes:

  • El campo response_template implementa Go Templates para transformar una orden de tu tienda en una orden de DEUNA.
  • La transformación de órdenes se realiza después de obtener la respuesta del request.
  • Usa el campo error_response_template transformar el error del merchant durante la ejecución del webhook.
  • Usa el campo response_data para comprender lo que DEUNA espera al ejecutar un request hacia tu tienda.
    • Este campo siempre tiene que ser incluido con el campo response_template.
    • Este campo valuda que el response_template es funcional

Define tu estructura

Para definir la estructura de este template se necesita:

  • Conocer lo que responderá el webhook del merchant.
  • Tener la estructura de la orden en JSON.
  • Tener claro que campo de la orden se van a modificar.

📘

Para actualizar estos camps, usa Go Templates.

Ejemplo de template

{
  "order": {
    "order_id": "{{ .result.uuid }}",
    "custom_fields": { "business_id": "{{ .result.business_id }}" }
  }
}

📘

Mas ejemplos disponibles en GitHub.

Ejecución del webhook

Utiliza el webhook para notificar de un evento a tu sistema desde el API de EMA.

📘

EMA API cuenta con un endopoint que dispara el manejo de la ejecución de un webhook en especifico.

Ejecución del webhook a demanda desde EMA API

Ejecucion para establecer propina

Ejecución para establecer propina

📘

La respuesta es firmada por DEUNA por estándares de seguridad. Tienes la opción de validar la firma.

Ejemplos prácticos

Aprende sobre ejemplos prácticos en el ecosistema DEUA.

KFC Web

En KFC Web se puede agregar un campo de propinas sin que afecte al resto de merchants. Esta funcionalidad perzonaliza la forma en la que se despliega el precio.

Actualmente se puede crear el modulo/pattern de propinas, pero cada comercio tiene que:

  1. Tokenizar la orden con el cambio de propina.
  2. Sumar la propina al total de la orden.

KFC Venezuela

En KFC Venezuela se puede agregar un campo para un impuesto del 3% sobre el total de la orden cuando el método de pago es CASH.

Wow+

Wow+ implementa webhooks dinámicos para ejecutar tareas de pago con puntos, donaciones, y cupones.