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')
}