Saltar al contenido principal

Desarrollo local

Como los webhooks deben acceder a tu servidor desde Internet, tendrás que exponer públicamente tu servidor de desarrollo local.

Uso de Cloudflare Tunnels

Cloudflare Tunnels ofrece una forma gratuita de exponer tu servidor local sin necesidad de abrir puertos en el firewall:
cloudflared tunnel --url localhost:3000
Obtendrás una URL pública como https://abc123.trycloudflare.com. Utiliza esta URL en la configuración de tu webhook:
{
  "url": "https://abc123.trycloudflare.com/webhook"
}

Resolución de problemas

Los webhooks no llegan

  • Endpoint no accesible: Comprueba que tu servidor sea accesible públicamente y que los firewalls permitan conexiones entrantes
  • Uso de HTTP: Las URLs de webhook deben usar HTTPS
  • Eventos incorrectos: Revisa el filtro de events en la configuración de tu webhook

Error en la verificación de la firma

La causa más común es usar el cuerpo JSON ya parseado en lugar del cuerpo bruto de la solicitud.
// Incorrecto: usando el body parseado
const signature = crypto
  .createHmac('sha256', secret)
  .update(JSON.stringify(req.body))
  .digest('hex');

// Correcto: usando el body en crudo
app.use('/webhook', express.raw({ type: 'application/json' }));
app.post('/webhook', (req, res) => {
  const signature = crypto
    .createHmac('sha256', secret)
    .update(req.body) // Buffer en crudo
    .digest('hex');
});

Otros problemas

  • Secreto incorrecto - Verifica que estés usando la clave secreta correcta en la configuración de tu cuenta
  • Errores de tiempo de espera (timeout) - Asegúrate de que tu endpoint responda en menos de 10 segundos