Descartar transacción
Cancela una transacción de pago alternativo que el cliente abandonó, o una cuya intención de pago expiró. Idempotente para estados sin pagar (CREATED, USED → DISMISSED); para transacciones en IN_PROGRESS, Migo ejecuta el hook de cancelación del procesador cuando este lo soporta — resolviendo a CANCELLED para procesadores que ejecutan un hook de cancelación dedicado, o a DISMISSED para procesadores que soportan una llamada genérica de cancelación upstream.
POST https://mw.migopayments.com/api/v1/integrations/transactions/{transactionId}/dismiss
Consulta la entrada en el spec en vivo: POST /api/v1/integrations/transactions/{transactionId}/dismiss.
Cuándo descartar
- El cliente cerró la pestaña del comercio sin pagar.
- El QR / botón de pago renderizado por
/paymentsllegó a su propio TTL. - La orden del lado del comercio fue cancelada antes de que el cliente pagara.
- Un push payment de larga duración en
IN_PROGRESSdebe forzarse a cancelar y el procesador soporta una cancelación upstream.
Petición
curl -X POST https://mw.migopayments.com/api/v1/integrations/transactions/trx_8f3c2b1d9e7a/dismiss \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{ "reason": "user_cancelled" }'
El cuerpo es opcional y sus llaves no son validadas — envía metadatos libres con fines de auditoría.
Matriz de comportamiento
| Estado actual | Resultado | Forma de la respuesta |
|---|---|---|
CREATED, USED | Cambia a DISMISSED, sin llamada upstream | 200 OK (texto plano OK) |
IN_PROGRESS (procesador con un hook de cancelación dedicado) | Cambia a CANCELLED, se ejecuta el hook de cancelación del procesador | JSON { message, transaction: { uid, status: "CANCELLED" } } |
IN_PROGRESS (procesador con una cancelación upstream genérica) | Cambia a DISMISSED, se ejecuta la llamada de cancel upstream | 200 OK (texto plano OK) |
IN_PROGRESS (procesador sin ningún hook de cancel) | Rechazado | 405 ownCode 4021 |
APPROVED, DENIED, EXPIRED, DISMISSED | Rechazado (estado no elegible) | 409 ownCode 4020 |
Errores
| HTTP | ownCode | Causa |
|---|---|---|
| 400 | 5000 | Falta transactionId |
| 404 | 2000 | Transacción no encontrada |
| 405 | 4021 | El procesador no permite descartar (sin hook de cancel) para una transacción en IN_PROGRESS |
| 409 | 4020 | El estado de la transacción no es elegible para descartar (APPROVED, DENIED, EXPIRED, DISMISSED) |
| 500 | — | Configuración del procesador faltante o falló la llamada de cancel upstream |