Secuencia por método
El POST espera un resultado hasta agotar su tiempo de espera. La transacción QR existe desde que se genera el código. Consulta los diagramas CARD y QR.
Después de cancelar
Para ambos métodos, el PinPAD corta el flujo visual cuando recibe y procesa/cancel. Si falla la conexión, no puedes asegurar recepción ni cierre visual. Reconoce la cancelación confirmada y validada en la respuesta del POST. Ante fallo, timeout o incertidumbre, consulta el cobro original con GET /payments/{operationNumber}. Un cobro CARD aprobado permite evaluar un extorno independiente. Si QR aparece transaction.state: "AUTORIZADO" en una consulta 200/00 después de solicitar cancelación, conserva el pago aprobado y registra la discrepancia; no solicites refund ni reversa. Aplica la tabla de resolución.
En QR, la cancelación solo inhabilita el código; ni /cancel ni refund devuelven un monto pagado. Ante timeout, desconexión o fallo del backend, el frontend muestra Cancelación no confirmada y consulta el estado.
Sin solicitud de cancelación, un QR transaction.state: "AUTORIZADO" en una consulta 200/00 confirma el pago y permite ejecutar la acción de negocio. Los ciclos de consulta repiten únicamente el GET; no reenvían /cancel.
No inicies una nueva transacción mientras la anterior siga sin resolverse. Un 202 WAITING_RESULT tardío de /authorize no reemplaza un resultado final confirmado.
Timeouts
Los POST de autorización, cancelación y extorno esperan al PinPAD aproximadamente 90 segundos, según la guía 1.3.25. Configura un timeout superior y valida la duración en tu ambiente. Configura el timeout de lectura del cliente HTTP por encima de la espera del terminal:GET /payments puede esperar aproximadamente 12–15 segundos por la pasarela; usa, por ejemplo, 20 segundos de timeout. GET /health y GET /reversals responden inmediatamente. Todas las respuestas incluyen Connection: close: abre una conexión por petición, sin keep-alive.
Un cobro puede tomar decenas de segundos. No uses el mismo timeout corto que aplicarías a una API convencional.
El valor definitivo de la espera interna, el timeout del sistema central y el tiempo máximo de recuperación deben validarse con Alignet antes de producción.
Recuperación de una operación incierta
UsaGET /payments/{operationNumber} para consultar el cobro original en la pasarela. Devuelve success, resultCode, resultMessage y transaction, sin status propio; 00 indica encontrada y el desenlace financiero se lee en transaction.state. No existe consulta de cancelación. Para un extorno CARD, usa GET /reversals/{operationNumber}; HTTP 502 UNKNOWN termina esa solicitud sin confirmar éxito y requiere revisión financiera.
Consulta cuando ocurra cualquiera de estos casos:
POST /authorizedevuelve HTTP202conWAITING_RESULTyresult: null;- el timeout del cliente HTTP vence sin recibir respuesta;
- la conexión se interrumpe durante el cobro;
- el sistema central se reinicia con una operación abierta;
- la consulta no verifica el cobro (
200/03,404/05,503o504) o su estado financiero no permite concluir.
- Conserva el
operationNumberoriginal. - Mantén la operación como no resuelta en el sistema central.
- No ejecutes la acción de negocio asociada ni marques un rechazo definitivo.
- Ejecuta
GET /payments/{operationNumber}. - Si el POST previo devolvió
202, respetaRetry-After: 2antes del primer GET. Este GET no devuelve202; interpreta su tabla HTTP. - Sigue consultando hasta conocer el resultado del cobro o alcanzar el límite de espera acordado.
- Si alcanzas ese límite sin verificar el resultado financiero, escala la operación para resolución. No inicies automáticamente otro cobro.
Idempotencia
operationNumber es la clave de idempotencia del cobro. Esta tabla aplica a /authorize; el extorno permite otro intento tras DENIED, UNKNOWN o ERROR finales.
Concurrencia
Pay-me PinPAD procesa una sola operación a la vez:- Si llega el mismo
operationNumber, aplica la regla de idempotencia. - Si llega otro
operationNumbermientras existe un cobro activo, responde HTTP409conPOS_BUSY. - El sistema central debe serializar los cobros destinados al mismo terminal.
- Después de
POS_BUSY, espera a que el terminal se libere antes de reintentar la solicitud que no fue aceptada.
Reinicios
Reinicio del sistema central
Al iniciar, recupera las operaciones guardadas cuyo resultado aún no conoces y consulta cadaoperationNumber antes de decidir si hubo cobro.
Reinicio del Wiseasy P5L durante el cobro
El resultado del cobro puede quedar sin verificar. La guía no define un estado de respuesta específico para el reinicio. No marques la operación como aprobada ni rechazada. Consulta la referencia y solicita revisión si no logras conocer el resultado dentro del límite de espera acordado.Flujo recomendado del sistema central
Decisión de negocio
Define antes de producción qué hará el comercio cuando todavía no sabe si se cobró. No confirmes la venta ni ejecutes una acción irreversible —por ejemplo, abrir una barrera— hasta confirmarsuccess: true, resultCode: "00" y result.state: "AUTORIZADO" en autorización, o una consulta 200/00 con transaction.state: "AUTORIZADO".
La política para operaciones sin verificar, incluido el escalamiento manual, requiere acuerdo entre el integrador y Alignet.

