/transaction/{transaction_id} — Consultar estado
Consulta el estado actual de una transacción. Es el endpoint que usarás en polling para saber cuándo el cliente paga.
Endpoint
https://api-integrationcheckout-uat.yappycloud.com/v1https://api-checkout.yappy.cloud/v1/transaction/{transaction_id}Response 200 OK
{
"status": {
"code": "YP-0000",
"description": "Se ha realizado la ejecución del servicio correctamente"
},
"body": {
"status": "COMPLETED"
}
}
Estados posibles
| Estado | Significado |
|---|---|
PENDING | QR generado. El cliente aún no ha escaneado o no ha confirmado el pago. |
COMPLETED | Pago confirmado. Fondos acreditados al comercio. |
CANCELLED | La caja invocó la cancelación de la transacción. |
REVERSED | Anulación de venta ejecutada (posterior al pago). |
FAILED | Error de plataforma. Contacta soporte yappy@bgeneral.com. |
Estrategia de polling
A diferencia de Botón de Pago (que usa IPN/webhooks), Yappy en Caja requiere consulta recurrente al endpoint de estado:
- Consulta cada 2–5 segundos después de generar el QR.
- Detén el polling cuando el estado sea
COMPLETEDoCANCELLED. - Implementa una cancelación automática a los 5 minutos: la orden tiene una vigencia de 5 minutos. Si transcurre ese tiempo sin pago, tu sistema debe invocar
PUT /transaction/{id}para cancelar y liberar la caja. - Usa backoff exponencial si la API responde con errores temporales.
Implementación de referencia
async function waitForPayment(transactionId, sessionToken, timeoutMs = 300_000) {
const deadline = Date.now() + timeoutMs;
const POLL_INTERVAL = 3000;
while (Date.now() < deadline) {
const resp = await fetch(
`{{BASE_URL}}/transaction/${transactionId}`,
{
headers: {
"api-key": process.env.YAPPY_API_KEY,
"secret-key": process.env.YAPPY_SECRET_KEY,
"authorization": sessionToken
}
}
);
const { body } = await resp.json();
if (body.status === "COMPLETED") return "paid";
if (body.status === "CANCELLED") return "cancelled";
await new Promise(r => setTimeout(r, POLL_INTERVAL));
}
// 5 min pasaron sin pago: cancelar la transacción
await cancelTransaction(transactionId, sessionToken);
return "expired";
}
A diferencia de Botón de Pago, Yappy en Caja no envía notificaciones push (IPN/webhook). Tu sistema es responsable de consultar el estado periódicamente.