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.

  1. 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

  2. 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 bolsillos pockets 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 formato zipCodeFormat.
    • 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 intereses interests 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 OTP otp/validate una vez se tenga una respuesta se enviará el resultado signature bajo el campo OTP de la solicitud de procesamiento.
  3. 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 servicio query.

    • 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.
  4. 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 de search 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

Flujo

Transacción de redirección

  1. Una vez se capture el medio de pago a utilizar se hace la petición de information con el instrumento correspondiente redirection como se puede ver en los ejemplos del API

  2. Se analiza la respuesta del servicio, la cual contendrá el atributo requireRedirection y este se encontrará en true así mismo contiene un atributo bankList que contiene todos los posibles valores a mostrar al cliente para que seleccione la entidad bancaria que desea utilizar

  3. Se presentan las opciones al cliente de bancos listados para su selección

  4. 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 atributo processURL a la cual debe ser enviado el usuario

  5. El usuario una vez termine su flujo será redireccionado a la URL enviada como returnURL en la solicitud de procesamiento anterior

  6. Se consulta el estado de la transacción mediante el API de consulta de estado