Skip to main content
En Pay-me PinPAD 1.3.25, autorización y consulta usan 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:
Esta forma no incluye 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.
HTTP 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 en POST /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.