POST /cancel solicita cancelar una autorización activa. El servicio debe comprobar que la cancelación se ejecutó y que el resultado corresponde al operationNumber solicitado.
CARD
POST /authorize inicia el cobro y el PinPAD solicita la tarjeta. Si la cancelación falla y el cobro original queda transaction.state: "AUTORIZADO" en una consulta 200/00, puedes evaluar un extorno independiente. Un error de /cancel no ejecuta automáticamente /reversals.
QR
Al generar el QR ya existe una transacción pendiente asociada aloperationNumber. Mostrar o escanear el código no confirma el pago.
En QR, /cancel solo cancela o inhabilita el código. Ni /cancel ni refund devuelven un monto pagado; /reversals aplica únicamente a CARD.
Si recuperas un QR transaction.state: "AUTORIZADO" en una consulta 200/00, conserva el pago aprobado. No lo marques como cancelado, devuelto ni extornado; registra la discrepancia para revisión.
Solicitud
Envía al mismo PinPAD de la autorización original:
No generes otra referencia ni envíes monto, moneda, método o datos de tarjeta.
Resultados por método
Estas reglas aplican a CARD y QR. Evalúa el estado, el código y la validación del servicio; HTTP200 por sí solo no confirma éxito.
Reenviar una cancelación ya finalizada devuelve el resultado guardado; una segunda cancelación en curso devuelve
409 CANCELLATION_IN_PROGRESS.
Ejemplos de campos de decisión, sin representar pruebas ejecutadas:
DENIED/14 indica abandono por cierre de autorización en curso; 15 indica abandono con intento (QR cancelado). No confirman cancelación aprobada ni son rechazo típico de tarjeta. Decide con estado y código. No normalices 16 o 17 a 00.
Verificar el resultado final
No existe un endpoint de consulta de cancelación. La respuesta dePOST /cancel informa el resultado de esa solicitud. Ante fallo, timeout o incertidumbre, GET /payments/{operationNumber} consulta la pasarela y devuelve success, resultCode, resultMessage y transaction, sin status propio. 00 significa encontrada: lee transaction.state. Este GET no devuelve 202. Aplica el contrato de consulta:
En los ciclos del gráfico, repite únicamente el GET. No reenvíes
/cancel ni generes otra venta mientras no conozcas el resultado del cobro. Un 202 WAITING_RESULT tardío de /authorize no sustituye un resultado confirmado.
Fallos de cancelación
La matriz no especifica la respuesta cuando la cancelación no se ejecuta o el resultado corresponde a otra operación. No asignes a ese caso un HTTP, código ni cuerpo JSON sin confirmación de desarrollo.
Manejo de 202 y pérdida de conexión
Todas las respuestas incluyenCache-Control: no-store. HTTP 202 añade Retry-After: 2: espera dos segundos antes de consultar el cobro original. Una desconexión no garantiza recepción de /cancel ni cierre de pantalla.
