Skip to main content

El riesgo

El callback GET que Zonapagos dispara hacia tu URL de retorno no está firmado. Un atacante que conozca tu URL y un str_id_pago válido podría hacer un GET falso pretendiendo ser Zonapagos:
Si tu código confía en el callback como fuente de verdad, podrías entregar un producto sin que el pago haya existido.

Mitigación obligatoria

Siempre verifica con /VerificacionPago desde tu backend. Nunca confíes en el callback como fuente de verdad.

Defensas adicionales

Rate limiting

IP allowlist (opcional, requiere coordinación con Zonapagos)

[Pendiente con TI: Zonapagos debería publicar el rango de IPs desde donde origina los callbacks, para que los comercios puedan restringir por IP. Actualmente no hay documentación pública de esos rangos.]

Validar que id_pago existe en tu BD

Logs de auditoría

Útil si PSE o la franquicia te solicita evidencia durante auditorías o disputas.

Qué NO hacer

No entregues el producto solo por recibir el callback.
No asumas que id_pago del callback es confiable sin verificar.
No uses el callback para actualizar montos. El callback no incluye monto. Si tu sistema lee un monto de ahí, no hay de dónde.

HTTPS obligatorio

Tu URL de retorno debe ser HTTPS. Zonapagos no redirige a HTTP plano en producción.

Ver también

Recibir callback

Implementación paso a paso.

Verificar estado

Único mecanismo autoritativo.