Esta notificación no la emite la Facade API, que no implementa webhooks. La envía la plataforma de pago referenciado, y se configura a nivel de plataforma durante el onboarding con el equipo de TapiPay: no hay endpoint para dar de alta ni cambiar la URL. Las peticiones salen de las IPs de esa plataforma, no del host de la Facade API, y te las entregan en el onboarding.
Configuración
Tú defines la URL completa (host y path) a la que TapiPay va a enviar las notificaciones. Entregas dos:
TapiPay no impone una ruta. Cualquier path accesible sirve:
/api/webhooks/confirm-payment, /tapi/callback, /notifications, /payment/status.
Requisitos de tu endpoint
requerido
Alcanzable desde las IPs de origen de TapiPay que te entregan en el onboarding.
requerido
Devuelve cualquier código HTTP 2xx para confirmar la recepción. TapiPay no lee el body de tu respuesta, solo el código de estado, así que puedes responder vacío.
requerido
Si tardas más, la petición se considera fallida y entra en reintentos. Si necesitas procesamiento pesado, encola y responde antes.
El payload
POST con Content-Type: application/json al endpoint que definiste.
additionalData es dinámico
Ejemplo
Los campos dentro deadditionalData son ilustrativos: muestran lo que un cliente podría enviar, no un contrato.
Validar que la petición viene de TapiPay
Tu endpoint es público, así que cualquiera puede llamarlo. TapiPay ofrece cinco mecanismos que se configuran en el onboarding. Puedes activar uno o combinar varios.Reintentos e idempotencia
El orden correcto en tu handler es: validar el origen, responder 2xx rápido, y recién después procesar.yaProcesada y marcarProcesada tienen que apoyarse en almacenamiento persistente (una tabla con operationId único, o Redis), no en memoria del proceso: si reinicias el servidor entre el intento original y el reintento, una marca en memoria se pierde y el pago se procesa de nuevo.Cómo probarlo
TapiPay no puede alcanzar tulocalhost, así que necesitas una URL pública. Dos formas, según qué quieras verificar.
- Inspeccionar el payload
- Probar tu código
Para ver el payload real sin escribir código, usa un receptor público como webhook.site y entrega esa URL como tu endpoint de homologación. Cada notificación queda registrada con sus headers y su body.Sirve para confirmar qué llega en
additionalData en tu caso concreto, que es la parte que no se puede documentar de antemano.operationId: es la forma más rápida de comprobar que tu idempotencia funciona antes de salir a producción.
