success, resultCode y result.state / transaction.state, sin status propio. Cancelación y extorno conservan status. HTTP 200 o el mensaje por sí solos no confirman éxito.
Todas las respuestas incluyen Connection: close y Cache-Control: no-store. Abre una conexión por petición, sin reutilizar keep-alive. HTTP 202 añade Retry-After: 2.
Estructura de respuesta de pago
Cancelación y extorno utilizan esta forma normal. El bloque describe tipos, no una respuesta de prueba:
Extorno
UNKNOWN con HTTP 502 utiliza una forma compacta distinta:
resultCode, resultMessage, authorizationCode ni completedAt. La clave del mensaje es message.
Respuestas de POST /authorize
La respuesta contiene operationNumber, success, resultCode, resultMessage y result, sin status propio. Ejemplo sintético mínimo:
result puede incluir stateReason, additionalFields, paymentMethod (con name y methodDetail ofuscado), processorResponse como String crudo y lifecycle. Estos campos pertenecen al contrato vigente; authorization_code puede llegar dentro de processorResponse.
202 puede corresponder a una solicitud duplicada aún en curso, al tiempo de espera agotado o al control de tiempo del servicio. No inicies otro cobro.
Consulta de estado
GET /payments/{operationNumber} consulta la pasarela, no el estado local ni el resultado de /cancel. Devuelve operationNumber, success, resultCode, resultMessage y transaction, sin status propio. Puede tardar 12–15 segundos; usa un timeout de cliente que cubra esa espera, por ejemplo 20 segundos.
00 significa operación encontrada; interpreta el resultado financiero mediante transaction.state (por ejemplo, AUTORIZADO o CANCELADO). transaction puede incluir stateReason y lifecycle; no expone processorResponse ni methodDetail crudos. La consulta usa transactionId, mientras la autorización usa transactionID.
Otros códigos SDK se reportan tal cual con
200, según el mapeo específico de la guía. Este GET no devuelve 202 ni estados locales. Una consulta fallida, incierta o no encontrada no confirma rechazo ni permite otro cobro.
Estados
En la forma normal,
completedAt se informa solo en los estados de la última columna. Un estado ERROR significa que terminó con error, no que hubo éxito.
UNKNOWN en extorno es final y devuelve HTTP 502 con el cuerpo compacto: revisa si se ejecutó con Alignet, sin asumir éxito ni reenviar automáticamente.
Códigos confirmados
Mapeo de códigos SDK
Conserva los códigos SDK; no los reemplaces por
00 ni por un código inventado. 14 significa abandono por cierre de autorización en curso; 15, abandono con intento (QR cancelado). No confirman cancelación aprobada ni rechazo típico de tarjeta.
Códigos propios de la app
Matriz de decisión
Una ruta válida con método incorrecto devuelve HTTP
405 y METHOD_NOT_ALLOWED. Una ruta desconocida devuelve HTTP 404 y NOT_FOUND.
Consulta después de cancelar
No existe un endpoint de consulta de cancelación: su desenlace se devuelve solo enPOST /cancel. Si confirma una cancelación validada, no exige otro GET para reconocerla.
Ante fallo, timeout o incertidumbre, consulta el cobro original y aplica la decisión por método. Un pago CARD encontrado con transaction.state: "AUTORIZADO" permite evaluar un extorno independiente; un pago QR aprobado se conserva sin devolución.
No sustituyas un resultado confirmado por un 202 WAITING_RESULT tardío de /authorize ni uses el cierre de pantalla como prueba de cancelación.
