Skip to content
FINORA Academy
SistemaFINORA Checkout

FINORA Checkout · Concepts

Los estados de una sesión de cobro

ImplementedDocumented

This content is not available in your language yet.

Tu tienda solo necesita saber una cosa de cada sesión: en qué estado terminó. De eso depende si entregas el pedido, si lo dejas en espera o si lo anulas. Esta página explica los siete estados y la decisión que corresponde a cada uno.

flowchart TB
    C([CREADA]) -- elige medio --> E([EN_CURSO])
    E -- terminal sin respuesta --> C
    C -- cancela o vence --> X([CANCELADA o EXPIRADA])
    E -- aprueba --> A([APROBADA])
    E -- no confirma --> D([EN_DUDA])
    E -- cancela tras rechazo --> R([RECHAZADA])
    D -- se resuelve --> A
    D -- se resuelve --> R

Un intento rechazado no aparece como flecha porque no cambia el estado: la sesión sigue EN_CURSO y el cliente puede volver a intentar. Una sesión EN_CURSO también puede vencer sin veredicto y terminar EXPIRADA.

EstadoQué pasó¿Final?Qué haces
CREADALa sesión existe y el cliente todavía no eligió medioNoEsperar
EN_CURSOHay un cobro en vuelo, o un intento se rechazó y el cliente puede probar otra vezNoEsperar
APROBADAEl banco aprobó. Trae el reciboSíEntregar el pedido
RECHAZADAEl cliente o el comercio cerraron la sesión después de al menos un rechazoSíAnular el pedido o abrir una sesión nueva si el cliente quiere volver a intentar
EN_DUDAEl banco no confirmó a tiempo. El cobro pudo ocurrirSe resuelve despuésNo entregar y no volver a cobrar. Esperar el segundo aviso
CANCELADAEl cliente o el comercio retiraron la sesión antes de intentar pagarSíAnular el pedido
EXPIRADAVenció el tiempo sin veredictoSíAnular, u ofrecer una sesión nueva

Si el banco rechaza un intento, por ejemplo por fondos insuficientes, la sesión sigue abierta en EN_CURSO. El cliente ve el motivo y puede intentar con otra tarjeta o con otro medio dentro de la misma sesión, mientras no venza. Cada intento queda numerado, así que nada se cobra dos veces.

Tu servidor recibe un aviso informativo por cada intento rechazado (checkout.intento.rechazado). No marques el pedido como fallido con ese aviso. El cierre llega siempre con el aviso checkout.sesion. Si el cliente se rinde y cancela después de uno o más rechazos, la sesión termina RECHAZADA con el código del último rechazo.

El cierre de una sesión rechazada, en el servidor simulado del SDK con un comercio ficticio.

EN_DUDA aparece cuando FINORA envió el cobro al banco y no obtuvo una respuesta clara: el banco tardó demasiado o no registró la operación. El dinero pudo haber salido de la cuenta del cliente.

Por eso el checkout no ofrece reintentar y le dice al cliente «no vuelvas a pagar». Reintentar un cobro que pudo ocurrir es cobrar dos veces.

Lo que ve el cliente cuando el cobro queda en duda (servidor simulado del SDK).

Después, FINORA consulta al banco por su cuenta. Cuando sabe qué pasó, la sesión pasa a APROBADA o RECHAZADA y tu servidor recibe un segundo aviso para la misma sesión. Trata siempre el último aviso como el definitivo.

Con tarjeta, la orden viaja a un terminal físico. Si el terminal no la toma a tiempo, o el cajero la cancela en el equipo, la sesión vuelve a CREADA con el código TERMINAL_SIN_RESPUESTA o CANCELADA_EN_TERMINAL, y el cliente puede elegir otro medio. Mientras el terminal tiene la orden aceptada, el cliente no puede cancelar ni cambiar de medio: la tarjeta puede estar en el lector en ese momento.