Un starter con la parte difícil ya resuelta: webhooks firmados, el estado siempre leído de la API, órdenes que aguantan notificaciones duplicadas o desordenadas, suscripciones, reembolsos y reintentos que no se pierden.
El núcleo es gratis y de código abierto (MIT). La edición Pro se paga una sola vez.
Pasa los 12 casos de falla de Simulacro// app/api/webhooks/mercadopago/route.ts export async function POST(req: Request) { const r = await handleWebhook({ url: req.url, headers: req.headers, body: await req.text(), }, webhookDeps()); // 401: firma inválida // 500: Mercado Pago reintenta return Response.json(r, { status: r.status }); } // pro/effects.ts: una vez por cambio de estado ["subscription.charge_paid"]: (p, ev) => sendEmail({ to: p.payerEmail, … })
Integrar el checkout lleva una tarde. Lo que lleva semanas (y aparece en producción) es todo lo que pasa después del pago.
Cualquiera puede hacer un POST a tu endpoint. PagoKit verifica la firma x-signature (HMAC-SHA256, comparación en tiempo constante) y rechaza el resto.
?status=approved lo escribe cualquiera. La orden solo cambia con el webhook verificado y el pago leído de la API.
Mercado Pago reintenta. Los efectos (emails, acceso) se disparan una vez por cambio de estado, no por notificación.
Un pending que llega después del approved no deshace el pago: solo se aceptan transiciones que avanzan.
Un precio que vino del navegador, una preferencia vieja o un link reutilizado. Se valida monto y moneda contra la orden o el plan antes de dar acceso.
Si tu servidor de email se cae, el efecto queda en un outbox y se reintenta con backoff. Si un webhook nunca llega, la conciliación lo detecta.
Pago único, sin suscripción. Proyectos ilimitados, propios o de clientes.
Para pagos únicos con Checkout Pro.
Para un desarrollador.
Para todo el equipo de una agencia o empresa.
¿Preferís no integrarlo vos? Lo integro yo en tu proyecto o en el de tu cliente: escribime.
En todos los que usan la API de Mercado Pago (Argentina, Brasil, México, Uruguay, Chile, Colombia, Perú). La moneda sale de tus productos y planes.
No. Es una app de Next.js estándar: corre en Vercel, en un VPS o en Docker. Los crons se pueden disparar desde Vercel Cron, GitHub Actions o cualquier scheduler.
Postgres 13 o superior: Neon, Supabase, Vercel Postgres o el tuyo. Las migraciones son archivos SQL comunes.
Sí, en proyectos ilimitados. Lo que no se puede es revenderlo o publicarlo como plantilla.
No. Es un proyecto independiente, no afiliado ni avalado por Mercado Pago.