simulacro
Tu webhook de Mercado Pago anda en la demo. ¿Aguanta la vida real?
Simulacro le manda a tu webhook lo que Mercado Pago hace de verdad: avisos repetidos, simultáneos o fuera de orden, pagos en efectivo que se aprueban días después, reembolsos, contracargos, firmas falsas y la API caída justo cuando llega el aviso. Te dice qué rompió y por qué importa.
1. Apuntá tu sistema de prueba a este Mercado Pago falso
Es tuyo, dura un día y no toca tu cuenta. Cambiá estas tres cosas en tu entorno de prueba (no en producción) y reinicialo:
- URL base de la API (en vez de https://api.mercadopago.com)
…- Clave secreta de webhooks
…- Access token: cualquiera que no sea real (no se usa ni se guarda)
TEST-simulacro
Tu sistema tiene que estar en internet con HTTPS: un deploy de prueba o tu máquina con un túnel (ngrok, Cloudflare Tunnel).
Qué prueba
Lo que Mercado Pago hace en la vida real y casi nunca aparece probando a mano.
Pago aprobado (el caso feliz)
Un aviso, un pago aprobado. Si esto falla, el resto no importa: revisá la URL, la clave y la URL base de la API.
El mismo aviso llega tres veces
Mercado Pago reintenta si tu respuesta tarda o se corta, y a veces manda más de un aviso por el mismo cambio. Si cada uno dispara los efectos, el cliente recibe dos mails o descontás stock dos veces.
Cinco avisos del mismo pago al mismo tiempo
Los reintentos pueden cruzarse con el aviso original. Si dos procesos leen "pendiente" a la vez, los dos acreditan: es el duplicado más difícil de ver en pruebas a mano.
Pago en efectivo (Abitab): pendiente y aprobado días después
Con Abitab, Redpagos, Rapipago, Pago Fácil u OXXO el pago queda pendiente hasta que el cliente va a pagar. Tratar "pending" como pagado regala el producto; tratarlo como rechazado cancela una venta que iba a entrar.
Pago en efectivo que vence sin pagarse
El cupón vence y Mercado Pago lo cancela. La orden no se puede dar por pagada.
Tarjeta rechazada, segundo intento aprobado y el aviso viejo llega al final
El cliente prueba con otra tarjeta: son dos pagos con la misma referencia. Si el aviso del rechazo llega último (pasa), no puede pisar la orden ya pagada.
Reembolso, y después llega un aviso viejo del pago aprobado
Si tu sistema ignora los reembolsos, seguís entregando algo que devolviste. Y como los avisos no llegan en orden, un aviso viejo del pago aprobado no puede volver a darla por pagada.
Contracargo semanas después
El titular de la tarjeta desconoce la compra y el banco devuelve la plata. Si tu sistema no se entera, seguís entregando algo que ya no está cobrado.
Pago aprobado por un monto menor al de la orden
Si el precio sale del navegador o se reusa un link de pago viejo, se puede pagar 1 peso por una orden de 1500. El pago está aprobado de verdad: lo único que lo frena es comparar el monto con el de la orden.
Avisos con firma inválida o sin firma
Tu webhook es una URL pública: cualquiera puede mandarle avisos. La firma es lo que prueba que vienen de Mercado Pago.
Aviso de un pago que no existe (el botón "probar" del panel)
El panel de Mercado Pago manda avisos de prueba con un id inventado. Si respondés error, Mercado Pago lo reintenta por días y ensucia tus logs.
La API de Mercado Pago falla justo cuando llega el aviso
Si no pudiste leer el pago y respondés 200, Mercado Pago no reintenta y el pago se pierde: el cliente pagó y la orden queda pendiente para siempre. Hay que responder 5xx para que lo vuelva a mandar.
En tu máquina o en tu CI
El mismo simulacro como comando, contra tu sistema en local: no hace falta publicarlo. Sale con error si algo falla, así frena un deploy roto.
npm install -D simulacro npx simulacro init npx simulacro
Necesita Node 22.18 o más nuevo. Instrucciones en npm.
¿Empezás de cero? PagoKit es un starter de Next.js para cobrar con Mercado Pago que pasa los 12 casos.