Cómo Funcionan los Webhooks
Los webhooks son HTTP callbacks. Cuando ocurre un evento en un sistema proveedor, envía un HTTP POST a una URL que registraste.
1. Registras: "Envía eventos a https://myapp.com/webhooks/stripe"
2. Evento ocurre en Stripe: payment_intent.succeeded
3. Stripe envía POST a https://myapp.com/webhooks/stripe
4. Tu servidor procesa el evento y retorna 200 OK
5. Stripe marca el webhook como entregado
Qué Probar
1. Validación de Payload
Verifica que tu receptor parsee correctamente el payload del webhook.
2. Verificación de Firma
Prueba que tu receptor rechace payloads sin firmar o alterados.
3. Idempotencia
El mismo webhook puede entregarse múltiples veces. Tu receptor debe manejar duplicados.
4. Manejo de Errores y Retry
Prueba qué sucede cuando tu receptor falla: retorna 500, procesamiento interno falla, receptor caído.
5. Orden de Eventos
Los webhooks pueden llegar fuera de orden.
Herramientas de Testing
webhook.site
Servicio gratuito que te da una URL única para recibir e inspeccionar webhooks.
ngrok
Expone tu servidor local de desarrollo a internet:
ngrok http 3000
# Retorna: https://abc123.ngrok.io
Servidor de Test Local
const express = require('express');
const app = express();
const receivedWebhooks = [];
app.post('/webhooks/:provider', express.json(), (req, res) => {
receivedWebhooks.push({
provider: req.params.provider,
headers: req.headers,
body: req.body,
timestamp: new Date(),
});
res.status(200).json({ received: true });
});
app.listen(3000);
Ejercicio: Laboratorio de Testing de Webhooks
Tarea 1: Construir un Receptor de Webhooks
Crea un receptor Express.js que valide firmas HMAC-SHA256, parsee payloads, deduplique eventos y retorne códigos de estado apropiados.
Tarea 2: Testing de Firmas
Verifica: firma válida aceptada, firma faltante rechazada con 401, firma inválida rechazada, payload alterado rechazado.
Tarea 3: Testing de Idempotencia
Envía el mismo evento 5 veces. Verifica que solo se cree 1 registro.
Tarea 4: Testing de Escenarios de Error
Payload JSON malformado → 400. Falla de base de datos simulada → receiver encola para retry. Eventos fuera de orden → sistema los maneja.
Tarea 5: Load Testing de Webhooks
Envía 100 webhooks en rápida sucesión. Verifica todos recibidos y procesados sin corrupción.
Entregables
- Código del receptor con verificación de firma.
- Suite de tests cubriendo todos los escenarios.
- Reporte documentando resultados.