Flujo de una transacción
Nuestra API provee principalmente dos tipos de transacciones:
Transacciones directas que básicamente son autorizadas inmediatamente con los datos solicitados al usuari, medios de pago de ejemplo:
- Tarjeta de crédito
- Debito a cuenta ACH (Puerto Rico)
Transacciones de redirección que requieren que el usuario sea enviado a una URL donde debe continuar el proceso para poder lograr una autorización, medios de pago de ejemplo:
- PSE
- Boton Bancolombia
- Boton Aval
Transacción directa
Se trata de un proceso para realizar la transacción que involucra el consumo de los servicios descritos en este documento.
-
Una vez se capture el número de tarjeta del usuario se realiza el consumo al servicio de información
information
enviándolo en la petición -
Se analiza la respuesta del servicio para disponer las opciones que siguen
- Si la respuesta trae tipos de crédito
credits
se deben mostrar al usuario para permitirle seleccionar cual desea usar. - Si la respuesta trae el parámetro
requirePocket
en true, se debe mostrar los bolsillospockets
al usuario para permitirle seleccionar cual desea usar. - Si la respuesta trae el parámetro
requireAvs
en true, se debe exigir del usuario el ingreso de código postal y validar la entrada con el formatozipCodeFormat
. - Si la respuesta trae el parámetro
accountVerification
en true, se debe hacer el consumo al servicio de verificación de cuentas y obtener el instrumento cuenta verificado. - Si la respuesta tiene el parámetro
displayInterest
en true, se debe, una vez seleccionado un tipo de crédito, consumir el servicio de cálculo de interesesinterests
y mostrar al usuario la respuesta, así cada vez que el usuario cambie de tipo de crédito. - Si la respuesta trae el parámetro
requireOtp
en true, se debe hacer el consumo al servicio de generación de OTP (otpGeneration) y obtener del usuario el código que será de 6 dígitos para enviarlo posteriormente en el servicio de validación de OTPotp/validate
una vez se tenga una respuesta se enviará el resultado signature bajo el campo OTP de la solicitud de procesamiento.
- Si la respuesta trae tipos de crédito
-
Una vez se haya obtenido el tipo de crédito (si lo hay), el código postal, el bolsillo, la cuenta verificada, el OTP (si se requiere) se consume el servicio de procesamiento de transacción
process
y se analiza la respuesta que puede ser final aprobada, declinada o fallida o que puede estar pendiente. En ambos casos se retornará un valor para internalReference que es muy importante almacenar porque le permitirá realizar consultas posteriores con el servicioquery
.- Si se aprobó la transacción es importante almacenar también el número de autorización, le permitirá realizar reembolsos posteriormente si fuese necesario.
- Generalmente las transacciones son culminadas en un tiempo corto (menos de 3 seg), pero si la transacción queda en estado pendiente es importante tener un cron job o similar que esté consultando cada 5 minutos por las transacciones pendientes hasta que se resuelvan.
-
Generalmente las transacciones son culminadas en un tiempo corto (menos de 3 seg), pero se pueden dar los siguientes escenarios que deben controlarse
- Si la respuesta es pendiente, se puede tomar la referencia interna y realizar un consumo al servicio de query cada 5m hasta que termine en un estado final (APPROVED, REJECTED o FAILED).
- Si hubo una falla en la red o en el servicio y no se tiene respuesta del servicio de
process
, es necesario realizar un consumo del servicio desearch
con la referencia y monto enviado hasta que este servicio te confirme o bien que encontró la transacción o que efectivamente por el error de conexión no se logró realizar.
Diagrama de Flujo
Transacción de redirección
-
Una vez se capture el medio de pago a utilizar se hace la petición de
information
con el instrumento correspondienteredirection
como se puede ver en los ejemplos del API -
Se analiza la respuesta del servicio, la cual contendrá el atributo
requireRedirection
y este se encontrará entrue
así mismo contiene un atributobankList
que contiene todos los posibles valores a mostrar al cliente para que seleccione la entidad bancaria que desea utilizar -
Se presentan las opciones al cliente de bancos listados para su selección
-
Se envía a procesar la petición con el código de banco seleccionado por el usuario la respuesta de este servicio contiene un objeto
redirection
que tiene un atributoprocessURL
a la cual debe ser enviado el usuario -
El usuario una vez termine su flujo será redireccionado a la URL enviada como
returnURL
en la solicitud de procesamiento anterior -
Se consulta el estado de la transacción mediante el API de consulta de estado