🪝

Receptor de Webhooks

👨‍🍳 Chef⏱️ 25 minutos

📋 Prerequisitos sugeridos

  • Next.js API
  • Webhooks

Lo que vas a construir

Un endpoint que recibe y procesa eventos de servicios externos como Stripe, GitHub o cualquier API que envie webhooks. Implementaras verificacion de firmas HMAC para asegurar que los eventos son autenticos, logging de eventos recibidos, manejo de errores robusto y procesamiento asincrono. Al terminar, tendras un receptor de webhooks seguro que puede activar acciones en tu app cuando ocurren eventos externos, como activar una suscripcion cuando Stripe confirma un pago.


Paso 1: Pídele a una IA el receptor

Necesito un receptor de webhooks con:
- Verificación de firma HMAC
- Logging de eventos
- Manejo de errores
- Retry logic
- Guardado en base de datos
- Next.js App Router

Dame el código para webhooks de Stripe.

Código

// app/api/webhooks/stripe/route.ts
import Stripe from 'stripe'

const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!)

export async function POST(request: Request) {
  const body = await request.text()
  const signature = request.headers.get('stripe-signature')!

  let event: Stripe.Event

  try {
    event = stripe.webhooks.constructEvent(
      body,
      signature,
      process.env.STRIPE_WEBHOOK_SECRET!
    )
  } catch (err) {
    return new Response('Invalid signature', { status: 400 })
  }

  // Procesar evento
  switch (event.type) {
    case 'checkout.session.completed':
      // Activar suscripción
      break
  }

  return new Response('OK')
}

Próximo paso

Cache con Redis