VTOL Payment Bridge - Integración 3.8.0.5





REVISIONES


Fecha

Revisión

Cambios – Motivo

 

1.0

Creación del documento

 

1.1Actualización de campos en "paymentData" para ventas PEI.
30-04-20211.2Integración con VIS



CONTENIDO


1. Introducción

1.1 Acerca de este documento

Este documento describe los aspectos técnicos de integración, para aquellos comercios que deseen procesar cobros on-line, con sus sistemas de E-Commerce, a través de la API de VTOL Payment Bridge.

La implementación del servicio de VTOL Payment Bridge requiere conocimientos de desarrollo de software, para poder generar código que interactúe con la API de VPB para invocar servicios y procesar respuestas.


1.2 ¿Qué es VTOL Payment Bridge?

Es un componente Web que permite a un sitio de eCommerce capturar los datos de la tarjeta y del tarjeta habiente, para luego autorizar, a través de VTOL Server, los pagos de compras realizadas en Internet. De esta manera no es necesario que el comercio esté certificado bajo las normas PCI.

Cuando el cliente de la tienda online quiere pagar su compra con tarjeta, se hace una redirección segura hacia VTOL Payment Bridge, quien solicita los datos para efectuar el pago.

A continuación se muestra una imagen del formulario que solicita los datos de la tarjeta:

Formulario de pago de VTOL Payment Bridge


Además, el formulario de VTOL Payment Bridge permitirá ingresar datos adicionales del titular de la tarjeta, como ser Fecha de nacimiento, Dirección y Teléfono. Estos datos podrán ser enviados por el eCommerce a VPB en el mensaje de autorización de pago, o bien que VPB se los solicite al usuario en el formulario de ingreso de datos. Se mostrará una imagen como la siguiente:

Formulario de pago de VPB con datos adicionales del tarjeta habiente


1.3 Ventajas

Algunas de las ventajas de usar VTOL Payment Bridge son:

  1. Velocidad de integración con VTOL Server.
  2. Evitar implementar un formulario de ingreso de datos de tarjeta y sus correspondientes validaciones.
  3. Cumplir con las normas PCI ya que el e-commerce no tiene conocimiento de los datos sensibles de la tarjeta.
  4. Simplificar la conciliación con VTOL Server.


1.4 Alcance

1.4.1 VTOL Payment Bridge

  1. Proveer un marco de intercambio de información seguro para evitar ataques y fraudes. Utilización de protocolo https.
  2. Autorizar mediante VTOL Server las transacciones de pago con tarjeta en Internet.
  3. Facilitar los datos de transacciones autorizadas.
  4. Brindar un mecanismo de conciliación entre el e-commerce y VTOL Server.

1.4.2 E-Commerce

  1. Utilización de protocolo seguro https.
  2. Consultar a VPB el estado y datos de la transacción autorizada.
  3. Indicar a VPB si debe confirmar o cancelar la transacción.
  4. Brindar a VPB información sobre confirmación o cancelación de una transacción cuando este lo requiera, mediante una invocación GET.


1.5 Alta disponibilidad

La versión actual de VTOL Payment Bridge no soporta alta disponibilidad. Es decir, que la aplicación actualmente está construida para trabajar como un nodo único.


1.6 Validaciones en el formulario VPB

El formulario que despliega VTOL Payment Bridge para el ingreso de datos de la tarjeta realiza una serie de validaciones sobre los datos que ingresa el usuario. En caso de que se ingresen mal los datos de la tarjeta, se mostrarán mensajes informando los errores para que el usuario los pueda corregir. Existen dos tipos de errores que se pueden cometer sobre los campos de ingreso:

  • Omitir ingresar datos obligatorios.
  • Ingresar datos de tarjeta inválidos.

Los errores del primer tipo, no son validados por VPB, directamente se validan en el browser. Por ejemplo, si no se ingresa el Titular de la tarjeta, se mostrará el siguiente mensaje: "El campo Nombre en Tarjeta es requerido".

Los errores del segundo tipo, sí son validados por VPB. Por ejemplo que se ingrese una tarjeta vencida, o un código de seguridad menor al largo requerido. Este tipo de error sólo permite que se intente hasta tres veces ingresar los datos. En el cuarto intento, VPB hará una redirección a la URL de CallbackError, informando el error al eCommerce. 

1.6.1 Time Out de la compra

En VPB se puede limitar el tiempo con el que el tarjetahabiente cuenta para completar los datos sensibles de la tarjeta. En el formulario de ingreso de datos se muestra un timer en la esquina superior derecha, con el tiempo corriendo hacia atrás.

Esta funcionalidad suele usarse en comercios que necesitan liberar entradas o butacas si la transacción lleva más de un determinado tiempo y no recibió respuesta de finalización de la transacción.

Por default, la sesión caduca en 5 minutos. Para cambiar este parámetro, se debe modificar un archivo de configuración.


1.7 Integración con VTOL Integration Services

Para que VPB pueda obtener las opciones de pago disponibles, deberá integrarse con VTOL Integration Services.

Se deberá configurar el siguiente valor de la propiedad "linkPago.visBaseUrl" del archivo "application.properties" ubicado en \apache-tomcat-9.0.11-windows-x64\conf

#URL del servicio VIS - Vtol Integration Service
linkPago.visBaseUrl=https://localhost:8554/v2/crdb/app/paymentLink

Las APIs de integración se encuentran especificadas en el siguiente documento: VTOL Integration Services - Integración.


2. Autenticación (HTTP Basic Authentication)


Para la integración con VPB a través de la API REST, se requiere autenticación HTTP Basic. El comercio necesitará las siguientes credenciales:

  • Usuario
  • Contraseña

Se deben enviar estos datos en el "Header" de cada invocación a los servicios de VPB.

  • Las credenciales se utilizan en el backend del comercio y debe ser secreta. Las mismas serán provistas por el equipo de Soporte de NAPSE.


2.1 Servicios de VPB que requieren Basic Authentication

Los siguientes servicios utilizan autenticación HTTP Basic

  • /service/v2/paymentIntention.html
  • /service/v2/checkTransactionStatus.html
  • /service/v2/closeTransaction.html
  • /service/v2/refund.html


2.2 Flujo de una transacción con Basic Authentication


Diagrama de integración con HTTP Basic Authentication


  1. El eCommerce desde su frontend solicita un token de acceso, por lo cual desde su backend el eCommerce invoca al servicio de VPB que permite crear una Intención de Pago al endpoint “/service/v2/paymentIntention” enviando todos los datos de la venta e incluyendo el usuario y la contraseña en el Header (Basic authentication). En el parámetro data pasa un JSON. Entre esos datos se envía el identificador de transacción generado por el eCommerce (transactionId), el cual es un valor único.
  2. La respuesta del servicio “/paymentIntention” retorna un Token generado a partir del JSON recibido.
  3. El backend del eCommerce envía el valor del Token generado en el paso 2 al frontend.
  4. Desde el frontend del comercio se realiza un POST al formulario de VPB en el endpoint “/service/v2/authorizeForm” para cursar finalmente el Pago. El Token se informa como parámetro en la url del servicio.
  5. VPB por su parte despliega una ventana segura para capturar los datos sensibles de la tarjeta. Una vez completados los datos, autoriza la transacción contra VTOL Server y responde a una dirección de callback, incluyendo el transactionId enviado en el requerimiento de /paymentIntention.
  6. El eCommerce posteriormente realiza la consulta del estado de la transacción pasando como parámetro su identificador en una invocación GET a VPB. 
  7. Por último y una vez que finalizó la operación con el cliente, el eCommerce realiza una invocación POST a VPB al endpoint "/service/v2/closeTransaction" indicando la confirmación o cancelación de la transacción. VPB al recibir el requerimiento de confirmación o cancelación, envía un Commit o Rollback a VTOL Server.


Importante: Todas las invocaciones realizadas se encuentran sobre protocolo seguro HTTPS.



2. Integración

En esta sección se detalla la manera de integrar el eCommerce con VTOL Payment Bridge.

Importante

El formulario de pago para capturar los datos de la tarjeta se desplegará únicamente cuando se invoque a los servicios de Autorización de Pago (ya sea en una fase o en dos fases).

Los demás servicios, como ser Consulta de estado, Cancelación, Devolución, no desplegarán ningún formulario. La API de VPB retornará una respuesta con un status code según cada invocación, las cuales están descritas en los siguientes apartados.


2.1 Servicios brindados por VPB

Las operaciones disponibles son:

  • Operaciones con tarjetas de crédito y débito
    • Transacción en 1 fase
      • Autorización de Pago
      • Autorización de Pago PEI
    • Transacción en 2 fases
      • Autorización de pago
      • Captura de pago (sólo para transacción en 2 pasos)
      • Cancelar autorización de pago (sólo para transacción en 2 pasos)
    • Consultar estado de transacción
    • Devoluciones
      • Devolución total de Pago y Pago PEI
      • Devolución parcial de Pago y Pago PEI

2.1.1 Transacción en 1 fase (Venta)

VTOL Payment Bridge ofrece la posibilidad de realizar una transacción en una sola fase, llamada Venta (cargo). Directamente se realiza la transacción financiera. En esta modalidad VPB verifica y captura el importe de la venta, todo de una vez.

En este esquema también es posible realizar operaciones PEI (Pago Electrónico Inmediato). Dichos pagos se realizarán con tarjetas de débito, y las mismas serán autorizadas a través de Red LINK.


2.1.1.1 Intención de Pago

POST

Servicio: /web-vtol/service/v2/paymentIntention

La intención de pago es el primer paso necesario para ejecutar una transacción de pago entre un comercio y la API REST de VPB. Como resultado se obtiene un Token de acceso para poder cursar el pago.

Invocación:

En el Header se envían las credenciales usuario y contraseña de autenticación HTTP Basic

En el POST enviar el atributo transactionType=sale.

Parámetro

Tipo

Obligatorio

Descripción

ecommerceObjectSIDatos del comercio electrónico

companyAlfanuméricoSICódigo de la compañía que realiza la solicitud de pago.

storeNuméricoSICódigo de la tienda asociada a la compañía que realiza la solicitud de pago.
transactionTypeAlfanuméricoSITipo de transacción. Enviar sale
transactionIdNuméricoSI

Identificador único de la transacción de pago. 16 dígitos de longitud. Debe ser generado por el e-commerce de manera tal que identifique unívocamente a una operación de pago, respetando el siguiente formato: yyyyMMddHHmmssxx, donde:

yyyyMMddHHmmss: Fecha en que se realiza la operación con 4 dígitos para el año, 2 dígitos para el mes, 2 dígitos para el día, dos dígitos para la hora, dos dígitos para los minutos y 2 dígitos para los segundos.

xx: 2 dígitos para el trace de transacciones. Es un valor incremental que inicia en 01 y su valor máximo es 99.

autoCommitBooleanNO

Identifica si las transacciones serán confirmadas por VPB sin esperar un "tercer mensaje". Valores posibles:

True: Las transacciones que retornen aprobadas desde VTOL, serán confirmadas automáticamente.

False: Las transacciones que retornen aprobadas desde VTOL, deberán ser confirmadas con un tercer mensaje por parte del eCommerce.

Si no se envía este campo, por defecto se toma el valor False.

paymentDataObjectSIOpciones de pago.

planAlfanuméricoSIPlan. Enviar valor 0.

paymentsNuméricoSICantidad de cuotas.

paymentConditionAlfanuméricoNOCondición de pago, asociada con el campo payments. Sólo se encuentra presente si existe una condición de pago vinculada con la transacción.
additionalCardHolderBooleanNO

Campo que podrá enviar el eCommerce para que VPB solicite datos adicionales del tarjeta habiente en el formulario de pago, para ser validados por antifraude. Estos datos serán enviados en el objeto cardHolder. Valores posibles:

True: VPB solicitará los datos adicionales del tarjeta habiente en el formulario de pago.

False: VPB no solicitará datos adicionales del tarjeta habiente en el formulario. Dichos datos deberán ser enviados por el eCommerce.

Si no se envía este campo, los datos adicionales del cliente no serán solicitados por ningún sistema.

cardHolderObjectNODatos del titular de la tarjeta.

identificationTypeAlfanuméricoCondicional

Tipo de identificación. Valores posibles:

2: Número único

Obligatorio si additionalCardHolder=False


identificationNumberNuméricoCondicional

Número de identificación. Máximo 8 dígitos.

Obligatorio si additionalCardHolder=False


birthdate

DateCondicional

Fecha de nacimiento del tarjeta habiente. Formato DDMMYYYY.

Obligatorio si additionalCardHolder=False


phoneNuméricoNOTeléfono del tarjeta habiente. Máximo 11 dígitos.

deliveryAddress

ObjectNODatos de dirección de entrega del resumen de la tarjeta del pagador.



streetName

AlfanuméricoCondicional

Calle.

Obligatorio si additionalCardHolder=False



streetNumber

NuméricoCondicional

Número de puerta.

Obligatorio si additionalCardHolder=False



complementAlfanuméricoNOPiso / departamento.



zipCode

NuméricoNOCódigo postal. Máximo 4 dígitos.
customerData
ObjectNODatos del usuario registrado en el e-commerce

customerNameAlfanuméricoNONombre del cliente del e-commerce. Longitud máxima 30.

customerLastNameAlfanuméricoNOApellido del cliente del e-commerce. Longitud máxima 30.

customerIdentificationTypeAlfanuméricoNOTipo de documento del cliente del e-commerce

customerIdentificationNumberAlfanuméricoNONúmero de documento del cliente del e-commerce

customerIdAlfanuméricoNONombre o id del usuario del e-commerce.

customerIPAlfanuméricoSIDirección IP del usuario del e-commerce.
cardValidationObjectSIDatos que utilizará VPB para validar la tarjeta ingresada por el usuario en el formulario.

brandAlfanuméricoNOMarca de la tarjeta. Máximo 10 caracteres. Corresponde a la marca de tarjeta cargada en VTOL.

providerAlfanuméricoSICódigo del Proveedor de tarjeta cargado en VTOL. Ejemplo VI (Visa). Longitud máxima 20.

bankAlfanuméricoNOBanco emisor de la tarjeta. Longitud máxima 20. Corresponde a la descripción del banco cargado en VTOL.
amountNuméricoSIImporte total a pagar.

currency

Alfanumérico

SI

Tipo de Moneda:

  • $ = Pesos
  • U$S = Dólares
interestAmountAlfanuméricoNOEste campo es por si se necesita enviar el monto de los intereses en el mensaje a Autorizar. Normalmente el monto ya contiene los intereses en el caso de pagar en cuotas. Pero existen casos de tarjetas especiales donde el monto hay que enviarlo libre de intereses y en otro campo los intereses.
urlObjectSIDatos de las URLs de callback.


callbackUrlError

Alfanumérico

SI

URL de respuesta a la cual VPB hace la redirección cuando el requerimiento genera un error de validación o se produce algún problema interno. En la invocación se envía el transaccionID correspondiente y un mensaje que detalla el error ocurrido.


callbackUrlSuccessful

Alfanumérico

SI

URL de respuesta a la cual VPB hace la redirección cuando el requerimiento finaliza correctamente. En la invocación se envía el transacciónID correspondiente.
Importante: que haya sido enviado a VTOL Server no significa que la operación se encuentre Aprobada.


callbackUrlCancelAlfanuméricoSIURL de respuesta que será invocado cuando el pago de la compra sea cancelado por el usuario desde VPB.

checkTransactionStatusAlfanuméricoSI

URL definida por el e-commerce donde VPB podrá realizar una invocación GET, y poder obtener qué acción realizar sobre una transacción, confirmarla o cancelarla. Ver Servicios brindados por el ecommerce

formDataObjectNODatos del comercio que se mostrarán en el formulario de ingreso de datos de la tarjeta


merchantName

AlfanuméricoNO

Nombre que se visualizará en el formulario para el ingreso de datos de la tarjeta.

Si no se envía este campo, se mostrará un nombre por defecto.


merchantImageURL

AlfanuméricoNO

URL donde VPB podrá tomar la imagen que se visualizará en el formulario para el ingreso de datos de la tarjeta.

Si no se envía este campo, se mostrará una imagen por defecto.


merchantImageMobileURLAlfanuméricoNO

URL donde VPB podrá tomar la imagen que se visualizará en el formulario para el ingreso de datos de la tarjeta en dispositivos móviles y tablets.

Si no se envía este campo, se mostrará una imagen por defecto.

orderDescriptionAlfanuméricoNOEste campo se utiliza para enviar desde el eCommerce una leyenda que se mostrará en el formulario de VPB. En caso de que no se envíe este campo, se mostrará una leyenda por defecto.
posTicketAlfanuméricoNOInformación del ticket en formato xml y posteriormente transformado en Base 64. Ver sección Estructura del campo posTicket
ecommerceCustomFieldAlfanuméricoNOMáximo 255 caracteres. Campo generado por el eCommerce, lo puede enviar a VPB para que este lo guarde y pueda ser usado para trazabilidad del eCommerce.
validationDataObjectNOColección para informar los campos que VPB validará si coinciden con los datos ingresados por el usuario en el formulario.

identificationNumberMatchBooleanNO

Indica si el campo identificationNumber de la colección cardHolder, debe validar coincidencia entre el dato enviado por el eCommerce y valor ingresado por el cliente en el formulario de VPB.

True: VPB verificará si coinciden los datos. Ver validaciones del campo.

False: VPB no verificará si coinciden los datos.

Si el eCommerce no envía este campo, entonces VPB no realizará ninguna verificación.

* Campos Condicionales:

Si additionalPayerData=False, entonces el eCommerce debe enviar obligatoriamente los siguientes campos:

  • identificationType
  • identificationNumber
  • birthdate
  • streetName
  • streetNumber

Si additionalPayerData=True, entonces VPB deberá solicitar obligatoriamente los siguientes campos en el formulario:

  • identificationType
  • identificationNumber
  • birthdate
  • streetName
  • streetNumber


Ejemplo:

json
{
   "ecommerce": {
      "company": "C1",
      "store": "1"
   },
   "transactionType": "sale",
   "autoCommit": false,
   "additionalCardHolder": false,
   "transactionId": 1569441914224,
   "orderDescription": "El total de su compra es de $110.99. Ha elegido pagar en Pesos Argentinos (ARS)",
   "amount": "110.90",
   "currency": "$",
   "interestAmount": "0",
   "userId": "",
   "posTicket": "",
   "ecommerceCustomField": "Ref001",
   "cardHolder": {
      "identificationType": "2",
      "identificationNumber": "32058821",
      "birthdate": "22/07/1986",
      "phone": "3425340300",
      "deliveryAddress": {
         "streetName": "25 de mayo",
         "streetNumber": "3587",
         "complement": "2B",
         "zipCode": "3000"
      }
   },
   "url": {
      "callbackUrlError": "https://localhost:8843/emulatorEcommerce/callbackErrorURL.jsp",
      "callbackUrlSuccessful": "https://localhost:8843/emulatorEcommerce/callbackOKURL.jsp",
      "callbackUrlCancel": "https://localhost:8843/emulatorEcommerce/callBackCancel.jsp",
      "checkTransactionStatus": "http://localhost:8280/emulatorEcommerce/service/checkStatusReturnRandom.html"
   },
   "formData": {
      "merchantName": "My Company",
      "merchantImageURL": "https://ip/image.png"
   },
   "paymentData": {
      "payments": "1",
      "plan": "0"
   },
   "cardValidation": {
      "brand": "VISA",
      "provider": "VI",
      "bank": "BANCO GALICIA"
   },
   "customerData": {
      "customerId": "100",
      "customerIP": "10.90.100.101",
      "customerName": "Juan Carlos",
      "customerLastName": "Rodriguez",
      "customerIdentificationType": "2",
      "customerIdentificationNumber": "32123456"
   }
}


Respuesta:

Se obtiene un JSON con los siguientes campos:

ParámetroTipoDescripción
statusNuméricoHTTP Status
codeNuméricoCódigo de respuesta de la operación realizada.
messageAlfanuméricoDescripción de la respuesta.
tokenAlfanuméricoToken de acceso para utilizar en la Autorización de Pago.


Ejemplo de respuesta:

Response
{
  "status": "200",
  "code": "0",
  "message": "Success",
  "token": "33C021C23EEF3DB7148DD30DF1F75134C89648FEBA505029443F48CC5E10C371"
}


2.1.1.2 Autorización de Pago

POST

Servicio: /web-vtol/service/v2/authorizeForm

Una vez generado y almacenado el token de acceso, se deberá ejecutar la Autorización de pago, utilizando en esta instancia el token previamente generado.

Invocación:

Al invocar a este servicio, VPB desplegará una ventana segura con el formulario de pago para capturar los datos de la tarjeta.

Se envían los siguientes parámetros de la operación dentro de la URL:

CampoTipoObligatorioDescripción
tokenAlfanuméricoSIToken obtenido en la respuesta del servicio paymentIntention


Ejemplo:

https://localhost:8843/web-vtol/service/v2/authorizeForm.html?token=33C021C23EEF3DB7148DD30DF1F75134C89648FEBA505029443F48CC5E10C371


Respuesta:

La respuesta se realiza en la dirección de callback especificada por el eCommerce.

Se responden los siguientes campos:

ParámetroTipoDescripción
transactionTypeAlfanuméricoTipo de transacción realizada.
ecommerceObjectDatos del comercio electrónico

companyAlfanuméricoCódigo de la compañía que realiza la compra.

storeNuméricoCódigo de la tienda asociada a la compañía que realiza la compra.
transactionIdNuméricoIdentificador único de la transacción de pago generado por el eCommerce.
responseCodeNuméricoCódigo de respuesta de la operación realizada.
statusAlfanuméricoEstado en el cual quedó registrada de la transacción realizada.


Importante

Cuando el eCommerce recibe el callback, tiene que obtener la información completa del recurso, accediendo al endpoint de consulta de la API: /checkTransactionStatus


Ejemplo de respuesta:

json
{
   "transactionType": "Sale",
   "ecommerce": {
      "company": "C1",
      "store": "1"
   },
   "transactionId": "1580408171332",
   "responseCode": "00",
   "status": "Pending"
}


2.1.1.3 Intención de Pago PEI

VTOL Payment Bridge ofrece la posibilidad de realizar Pagos PEI (Pago Electrónico Inmediato), con tarjeta de débito. Estas operaciones se transfieren desde la cuenta del cliente a la cuenta del Comercio y se acreditan de manera instantánea. Dichos pagos serán autorizados por Red LINK.

Tener en cuenta

Los pagos PEI tienen un tope límite diario para el consumidor final. Para compra de bienes, se podrán realizar por un importe acumulado diario que no exceda el equivalente a 5 veces el Salario Mínimo Vital y Móvil.

Esta validación es realizada por Red LINK.


POST

Servicio: /web-vtol/service/v2/paymentIntention

La intención de pago es el primer paso necesario para ejecutar una transacción de pago PEI entre un comercio y la API REST de VPB. Como resultado se obtiene un Token de acceso para poder cursar el pago.

Invocación:

En el Header se envían las credenciales usuario y contraseña de autenticación HTTP Basic

En el POST enviar el atributo transactionType=SalePEI.

Parámetro

Tipo

Obligatorio

Descripción

ecommerceObjectSIDatos del comercio electrónico

companyAlfanuméricoSICódigo de la compañía que realiza la solicitud de pago.

storeNuméricoSICódigo de la tienda asociada a la compañía que realiza la solicitud de pago.
transactionTypeAlfanuméricoSITipo de transacción. Enviar: SalePEI
transactionIdNuméricoSI

Identificador único de la transacción de pago. 16 dígitos de longitud. Debe ser generado por el eCommerce para identificar unívocamente una operación de pago, respetando el siguiente formato: yyyyMMddHHmmssxx, donde:

yyyyMMddHHmmss: Fecha en que se realiza la operación con 4 dígitos para el año, 2 dígitos para el mes, 2 dígitos para el día, dos dígitos para la hora, dos dígitos para los minutos y 2 dígitos para los segundos.

xx: 2 dígitos para el trace de transacciones. Es un valor incremental que inicia en 01 y su valor máximo es 99.

paymentDataObjectSIDatos de las opciones de pago

paymentsNuméricoSICuotas. Enviar siempre el valor 1.

planAlfanuméricoSIPlan. Enviar siempre el valor 0.
additionalCardHolderBooleanNO

Campo que podrá enviar el eCommerce para que VPB solicite datos adicionales del tarjeta habiente en el formulario de pago, y ser validados por antifraude. Estos datos serán enviados en el objeto cardHolder.

Valores posibles:

True: VPB solicitará datos adicionales del tarjeta habiente en el formulario de pago.

False: VPB no solicitará datos adicionales del tarjeta habiente en el formulario. Dichos datos deberán ser enviados por el eCommerce.

Si no se envía este campo, los datos adicionales del cliente no serán solicitados por ningún sistema.

cardHolderObjectNODatos del titular de la tarjeta.

identificationTypeAlfanuméricoNO

Tipo de identificación. Valores posibles:

2: Número único


identificationNumberNuméricoNO

Número de identificación. Máximo 8 dígitos.


birthdateDateCondicional

Fecha de nacimiento del tarjeta habiente. Formato DDMMYYYY.

Obligatorio si additionalCardHolder=False


phoneNuméricoNOTeléfono del tarjeta habiente. Máximo 11 dígitos.

deliveryAddress

ObjectNODatos de dirección de entrega del resumen de la tarjeta del pagador.



streetName

AlfanuméricoCondicional

Calle.

Obligatorio si additionalCardHolder=False



streetNumber

NuméricoCondicional

Número de puerta.

Obligatorio si additionalCardHolder=False



complementAlfanuméricoNOPiso / departamento.



zipCode

NuméricoNOCódigo postal. Máximo 4 dígitos.
customerData
ObjectNODatos del usuario registrado en el e-commerce

customerNameAlfanuméricoNONombre del cliente del e-commerce. Longitud máxima 30.

customerLastNameAlfanuméricoNOApellido del cliente del e-commerce. Longitud máxima 30.

customerIdentificationTypeAlfanuméricoNOTipo de documento del cliente del e-commerce

customerIdentificationNumberAlfanuméricoNONúmero de documento del cliente del e-commerce

customerIdAlfanuméricoNONombre o id del usuario del e-commerce.

customerIPAlfanuméricoSIDirección IP del usuario del e-commerce.
cardValidationObjectSIDatos que utilizará VPB para validar la tarjeta ingresada por el usuario en el formulario.

brandAlfanuméricoNOMarca de la tarjeta. Máximo 10 caracteres. Corresponde a la marca de tarjeta cargada en VTOL.

providerAlfanuméricoSICódigo del Proveedor de tarjeta cargado en VTOL. Ejemplo VI (Visa). Longitud máxima 20.

bankAlfanuméricoNOBanco emisor de la tarjeta. Longitud máxima 20. Corresponde a la descripción del banco cargado en VTOL.
amountNuméricoSIImporte total a pagar.

currency

Alfanumérico

SI

Tipo de Moneda:

  • $ = Pesos
urlObjectSIDatos de las URLs de callback.


callbackUrlError

Alfanumérico

SI

URL de respuesta a la cual VPB hace la redirección cuando el requerimiento genera un error de validación o se produce algún problema interno. En la invocación se envía el transaccionID correspondiente y un mensaje que detalla el error ocurrido.


callbackUrlSuccessful

Alfanumérico

SI

URL de respuesta a la cual VPB hace la redirección cuando el requerimiento finaliza correctamente. En la invocación se envía el transacciónID correspondiente.
Importante: que haya sido enviado a VTOL Server no significa que la operación se encuentre Aprobada.


callbackUrlCancelAlfanuméricoSIURL de respuesta que será invocado cuando el pago de la compra sea cancelado por el usuario desde VPB.
formDataObjectNODatos del comercio que se mostrarán en el formulario de ingreso de datos de la tarjeta


merchantName

AlfanuméricoNO

Nombre que se visualizará en el formulario para el ingreso de datos de la tarjeta.

Si no se envía este campo, se mostrará un nombre por defecto.


merchantImageURL

AlfanuméricoNO

URL donde VPB podrá tomar la imagen que se visualizará en el formulario para el ingreso de datos de la tarjeta.

Si no se envía este campo, se mostrará una imagen por defecto.


merchantImageMobileURLAlfanuméricoNO

URL donde VPB podrá tomar la imagen que se visualizará en el formulario para el ingreso de datos de la tarjeta en dispositivos móviles y tablets.

Si no se envía este campo, se mostrará una imagen por defecto.

orderDescriptionAlfanuméricoNOEste campo se utiliza para enviar desde el eCommerce una leyenda que se mostrará en el formulario de VPB. En caso de que no se envíe este campo, se mostrará una leyenda por defecto.
posTicketAlfanuméricoNOInformación del ticket en formato xml y posteriormente transformado en Base 64. Ver sección Estructura del campo posTicket
ecommerceCustomFieldAlfanuméricoNOMáximo 255 caracteres. Campo generado por el eCommerce, lo puede enviar a VPB para que este lo guarde y pueda ser usado para trazabilidad del eCommerce.
validationDataObjectNOColección para informar los campos que VPB validará si coinciden con los datos ingresados por el usuario en el formulario.

identificationNumberMatchBooleanNO

Indica si el campo identificationNumber de la colección cardHolder, debe validar coincidencia entre el dato enviado por el eCommerce y valor ingresado por el cliente en el formulario de VPB.

True: VPB verificará si coinciden los datos. Ver validaciones del campo.

False: VPB no verificará si coinciden los datos.

Si el eCommerce no envía este campo, entonces VPB no realizará ninguna verificación.


Validaciones del campo identificationNumberMatch:

    • Si el valor enviado por el eCommerce y el valor ingresado por el usuario en el formulario de VPB coinciden, entonces se enviará la transacción a VTOL Sever para ser autorizada.
    • Si el valor enviado por el eCommerce y el valor ingresado por el usuario en el formulario de VPB NO coinciden, entonces se mostrará el siguiente mensaje en pantalla: "Algo salió mal. Ingrese nuevamente los datos". Se mostrará el formulario de VPB con todos los campos en blanco para que se vuelvan a cargar. Sólo se podrá ingresar 3 veces un valor no coincidente. Al cuarto intento que no coinciden los DNI, se retornará a la url de callbackError al eCommerce, informando el error "Excedió el número de reintentos". Estos intentos se sumarizan junto a los errores que valida VPB antes de enviar la transacción a VTOL Server. Ver Validaciones en el formulario VPB

Ejemplo de requerimiento:

Request
{
   "ecommerce": {
      "company": "100",
      "store": "101"
   },
   "paymentData": {
      "payments": "1",
      "plan": "0"
   },
   "validationData": {
      "identificationNumberMatch": true
   },
   "transactionType": "salePEI",
   "autoCommit": "false",
   "additionalCardHolder": "false",
   "transactionId": "20201027122637",
   "orderDescription": "El total de su compra es de $110.99. Ha elegido pagar en Pesos Argentinos (ARS)",
   "amount": "110.90",
   "currency": "$",
   "posTicket": "",
   "ecommerceCustomField": "",
   "cardHolder": {
      "identificationType": "2",
      "identificationNumber": "12345678",
      "birthdate": "01/10/2001",
      "phone": "",
      "deliveryAddress": {
         "streetName": "Venezuela",
         "streetNumber": "3158",
         "complement": "Edificio Lumina",
         "zipCode": "B1603"
      }
   },
   "url": {
      "callbackUrlError": "http://localhost:8280/emulatorEcommerce/callbackErrorURL.jsp",
      "callbackUrlSuccessful": "http://localhost:8280/emulatorEcommerce/callbackOKURL.jsp",
      "callbackUrlCancel": "http://localhost:8280/emulatorEcommerce/callBackCancel.jsp",
      "checkTransactionStatus": "http://localhost:8280/emulatorEcommerce/service/checkStatusReturnRandom.html"
   },
   "formData": {
      "merchantName": "",
      "merchantImageURL": "",
      "merchantImageMobileURL": ""
   },
   "cardValidation": {
      "brand": "Visa",
      "provider": "EL"
   },
   "customerData": {
      "customerId": "100",
      "customerIP": "10.90.100.101",
      "customerName": "NOMBRE25",
      "customerLastName": "APELLIDO25",
      "customerIdentificationType": "2",
      "customerIdentificationNumber": "34000499"
   }
}


Respuesta:

Se obtiene un JSON con los siguientes campos:

ParámetroTipoDescripción
statusNuméricoHTTP Status
codeNuméricoCódigo de respuesta de la operación realizada.
messageAlfanuméricoDescripción de la respuesta.
tokenAlfanuméricoToken de acceso para utilizar en la Autorización de Pago.


Ejemplo de respuesta:

Response
{
  "status": "200",
  "code": "0",
  "message": "Success",
  "token": "33C021C23EEF3DB7148DD30DF1F75134C89648FEBA505029443F48CC5E10C371"
}


2.1.1.4 Autorización de Pago PEI

POST

Servicio: /web-vtol/service/v2/authorizeForm

Una vez generado y almacenado el token de acceso, se deberá ejecutar la Autorización de pago PEI, utilizando en esta instancia el token previamente generado.

Invocación:

Al invocar a este servicio, VPB desplegará una ventana segura con el formulario de pago para capturar los datos de la tarjeta.

Se envían los siguientes parámetros de la operación dentro de la URL:

CampoTipoObligatorioDescripción
tokenAlfanuméricoSIToken obtenido en la respuesta del servicio paymentIntention


Ejemplo:

https://localhost:8843/web-vtol/service/v2/authorizeForm.html?token=33C021C23EEF3DB7148DD30DF1F75134C89648FEBA505029443F48CC5E10C371


Respuesta:

La respuesta se realiza en el dirección de callback, especificada por el eCommerce. Los campos se envían en formato json "Nombre del campo":"valor".

Se responden los siguientes campos:

ParámetroTipoDescripción
transactionTypeAlfanuméricoTipo de transacción realizada.
ecommerceObjectDatos del comercio electrónico

companyAlfanuméricoCódigo de la compañía que realiza la compra.

storeNuméricoCódigo de la tienda asociada a la compañía que realiza la compra.
transactionIdNuméricoIdentificador único de la transacción de pago generado por el eCommerce.
responseCodeNuméricoCódigo de respuesta de la operación realizada.
statusAlfanuméricoEstado en el cual quedó registrada de la transacción realizada.


Importante

Cuando el eCommerce recibe el callback, tiene que obtener la información completa del recurso, accediendo al endpoint de consulta de la API: /checkTransactionStatus.

Ante una falla en la respuesta, si el eCommerce no recibe el callback de VPB, tendrá que consultar el estado de la transacción, accediendo al endpoint de consulta: /checkTransactionStatus.

Dado que las operaciones PEI una vez que fueron aprobadas no permiten reversar, para poder llevar a cabo esta acción, el comercio deberá generar una operación de devolución (RefundPEI).



2.1.1.5 Consultar Estado de Transacción

GET

Servicio: /web-vtol/service/v2/checkTransactionStatus

VPB permite consultar el estado y los datos de una operación, a través de una invocación GET a la URL de VPB.

Invocación:

En el Header se envían las credenciales usuario y contraseña de autenticación HTTP Basic

Se envían los siguientes parámetros dentro de la URL:

CampoTipoObligatorioDescripción
transactionIdNuméricoSIIdentificador único de la transacción de pago generado por el ecommerce.
ecommerceObjectSIDatos del comercio electrónico

company

Alfanumérico

SICódigo de la compañía que realiza la consulta.

storeNuméricoSICódigo de la tienda asociada a la compañía que realiza la consulta.


Ejemplo:

json
{
   "transactionId": "1580409092436",
   "ecommerce": {
      "company": "C1",
      "store": "1"
   }
}

Respuesta de operación de Crédito

La respuesta retorna los siguientes campos:

Campo

Tipo

Descripción

companyAlfanuméricoCódigo de la compañía que realizó la transacción.
storeNuméricoCódigo de la tienda asociada a la compañía que realizó la transacción.

responseCode

Numérico

Código de Respuesta de la transacción. Ver sección Códigos de Respuesta.

responseMessage

Alfanumérico

Descripción del Código de Respuesta

authorizationStatus

Alfanumérico

Estado de la transacción. Puede ser:

Initialized: Inicializado.

Cancel: Cancelada por el usuario.

Authorize: Autorizando.

Rejected: Rechazada.

Pending: Pendiente de confirmación. (No disponible para operaciones PEI)

Commit: Confirmada.

Rollback: Cancelada. (No disponible para operaciones PEI)

node

Numérico

Código de nodo de VTOL Server utilizado para la autorización.

transactionId

Numérico

Identificador único de la transacción en VPB.

amount

Numérico

Importe total de la operación.

currency

Alfanumérico

Tipo de moneda.

ticket

Numérico

Ticket generado en VTOL Server

authorizationCode

Numérico

Código de autorización de la transacción, en caso de que haya sido aprobada.

vtolTrxId

Numérico

Identificador de la transacción en VTOL Server. Longitud entre 19 y 20 dígitos, debido a que utiliza el día como parte de formato.

providerCode

Alfanumérico

Código de la tarjeta.

providerNameAlfanuméricoDescripción de la tarjeta.

displayMessage

Alfanumérico

Mensaje adicional enviado por el autorizador y que debe ser visualizado.

transactionDateAlfanuméricoFecha y hora de la transacción.
maskedCardNumberAlfanuméricoNúmero de tarjeta del pago. Está enmascarado. Por ejemplo: 4507******0010

Los campos se responden en formato json "Nombre del campo":"valor"


Ejemplo de respuesta:

json
{ 
   "company":"C1",
   "amount":"100.00",
   "providerCode":"VI"
   "providerName":"Visa",
   "ticket":"4",
   "authorizationCode":"123456",
   "store":"1",
   "transactionDate":"2020-01-30 15:31:57.417",
   "authorizationStatus":"Pending",
   "responseCode":"00",
   "node":"0000000001",
   "displayMessage":"prueba de impresion",
   "currency":"$",
   "transactionId":114,
   "responseMessage":"APROBADA",
   "vtolTrxId":"30012015321300000110",
   "maskedCardNumber":"4540******0010"
}


Respuesta de operación PEI

La respuesta retorna los siguientes campos:

Campo

Tipo

Descripción

companyAlfanuméricoCódigo de la compañía que realizó la transacción.
storeNuméricoCódigo de la tienda asociada a la compañía que realizó la transacción.

responseCode

Numérico

Código de Respuesta de la transacción. Ver sección Códigos de Respuesta.

responseMessage

Alfanumérico

Descripción del Código de Respuesta

authorizationStatus

Alfanumérico

Estado de la transacción. Puede ser:

Initialized: Inicializada.

Cancel: Cancelada por el usuario.

Authorize: Autorizando.

Rejected: Rechazada.

Commit: Confirmada

Undefined: Indefinida

node

Numérico

Código de nodo de VTOL Server utilizado para la autorización.

transactionId

Numérico

Identificador único de la transacción en VPB.

amount

Numérico

Importe total de la operación.

currency

Alfanumérico

Tipo de moneda.

providerCode

Alfanumérico

Código de la tarjeta.

providerNameAlfanuméricoDescripción de la tarjeta.

displayMessage

Alfanumérico

Mensaje adicional enviado por el autorizador y que debe ser visualizado.

transactionDate

AlfanuméricoFecha y hora de la transacción.
trxReferenceNumberNuméricoIdentificador de la transacción en VTOL Server. Longitud entre 19 y 20 dígitos, debido a que utiliza el día como parte de formato.
idOperationPEINuméricoIdentificador de la operación PEI de pago o de devolución, retornada por el autorizador.
bankingRefNumNuméricoNúmero de referencia bancaria de la operación. Es retornada por Red Link en la operación de pago y devolución.
idCommercePEIAlfanuméricoNúmero de comercio PEI de la transacción.

idBranchPEI

AlfanuméricoCódigo de sucursal PEI de la transacción.
maskedCardNumberAlfanuméricoNúmero de tarjeta del pago. Está enmascarado, el largo total coincide con la tarjeta. Por ejemplo: 4507******0010


Importante

En caso de recibir una respuesta con status Undefined, el eCommerce debe consultar al servicio /checkTransactionStatus de VPB hasta obtener un status distinto de Undefinde. Esto se debe a que pudo existir un problema de conexión con el Autorizador y la operación haya quedado aprobada, pero VPB no logró obtener la respuesta. Entonces VPB al recibir una consulta desde el eCommerce, consultará a su vez con el Autorizador hasta obtener un resultado, ya sea Aprobado o Rechazado.


Ejemplo de respuesta:

Response body
{ 
   "company":"C1",
   "store":"1",
   "amount":"100.00",
   "providerCode":"EL",
   "providerName":"Visa Electron",
   "transactionDate":"2020-01-30 15:31:57.417",
   "authorizationStatus":"Commit",
   "responseCode":"00",
   "responseMessage":"APROBADA"
   "node":"0000000001",
   "displayMessage":"prueba de impresion",
   "currency":"$",
   "transactionId":114,
   "trxReferenceNumber":"30012015321300000110",
   "idOperationPEI":"7589999999999999758",
   "bankingRefNum":"123456",
   "idCommercePEI":"SYN01",
   "idBranchPEI":"RSYN",
   "maskedCardNumber":"4507******0010"
}



2.1.1.6 Cierre de Transacción

POST

Servicio: /web-vtol/service/v2/closeTransaction

VPB permite cerrar la transacción para confirmarla o cancelarla, a través de un método POST a la URL de VPB.

Importante

Para Operaciones PEI, el Cierre de Transacción no aplica. Es decir, no se debe invocar esta acción, ya que las operaciones PEI quedan confirmadas automáticamente. Si VPB responde que la operación PEI resultó Aprobada, dicha operación quedará en status commit.


Invocación:

En el Header se envían las credenciales usuario y contraseña de autenticación HTTP Basic

Se envían los siguientes parámetros de la operación:

Campo

Tipo

Obligatorio

Descripción

transactionIdNuméricoSIIdentificador único de la transacción de pago generado por el ecommerce.
ecommerceObjectSIDatos del comercio electrónico

companyAlfanuméricoSICódigo de la compañía que realiza el cierre de la transacción.

storeNuméricoSICódigo de la tienda asociada a la compañía que realiza el cierre de la transacción.

action

Alfanumérico

SI

commit: Confirmada

rollback: Cancelada


Ejemplo:

json
{
   "transactionId": "1580408171332",
   "ecommerce": {
      "company": "C1",
      "store": "1"
   },
   "action": "commit"
}


Respuesta:

La respuesta sólo retorna un código HTTP 200.

Importante

Luego de recibir el código HTTP 200, el eCommerce deberá consultar el estado de la transacción, para confirmar que el Cierre de Transacción se realizó correctamente. Para eso deberá invocar el servicio /checkTransactionStatus con un método GET.



2.1.2 Transacción en 2 fases (Autorización y Captura)

VTOL Payment Bridge ofrece la posibilidad de realizar transacciones en dos pasos, primero se realiza una pre-autorización, y luego se genera la captura. Son operaciones llamadas de dos fases.

La pre-autorización es una reserva de fondos en la tarjeta del comprador. Esto significa que al realizar la misma, todavía no se generó un cobro al cliente en su tarjeta. Nunca aparece en el resumen de cuenta del tarjeta habiente. Solo cuando se realice una captura el cliente verá el pago.

Importante

Para Operaciones PEI, las transacción en 2 fases no aplica. Las operaciones PEI sólo se podrán hacer en 1 fase.


2.1.2.1 Intención de Pago

POST

Servicio: /web-vtol/service/v2/paymentIntention

La intención de pago es el primer paso necesario para ejecutar una transacción de pago entre un comercio y la API REST de VPB. Como resultado se obtiene un Token de acceso para poder cursar el pago.

El pedido de pre-autorización es un servicio que valida la información de la tarjeta que se envía, para verificar si es posible continuar con el proceso de pago y reservar los fondos del tarjeta habiente.

Invocación:

En el Header se envían las credenciales usuario y contraseña de autenticación HTTP Basic

Para realizar una intención de pago en 2 fases, en el POST enviar el atributo transactionType=authorization.

Parámetro

Tipo

Obligatorio

Descripción

ecommerceObjectSIDatos del comercio electrónico

companyAlfanuméricoSICódigo de la compañía que realiza la solicitud de pago.

storeNuméricoSICódigo de la tienda asociada a la compañía que realiza la solicitud de pago.
transactionTypeAlfanuméricoSITipo de transacción. Enviar authorization
transactionIdNuméricoSI

Identificador único de la transacción de pago. 16 dígitos de longitud. Debe ser generado por el e-commerce de manera tal que identifique unívocamente a una operación de pago, respetando el siguiente formato: yyyyMMddHHmmssxx, donde:

yyyyMMddHHmmss: Fecha en que se realiza la operación con 4 dígitos para el año, 2 dígitos para el mes, 2 dígitos para el día, dos dígitos para la hora, dos dígitos para los minutos y 2 dígitos para los segundos.

xx: 2 dígitos para el trace de transacciones. Es un valor incremental que inicia en 01 y su valor máximo es 99.

autoCommitBooleanNO

Identifica si las transacciones serán confirmadas por VPB sin esperar un "tercer mensaje". Valores posibles:

True: Las transacciones que retornen aprobadas desde VTOL, serán confirmadas automáticamente.

False: Las transacciones que retornen aprobadas desde VTOL, deberán ser confirmadas con un tercer mensaje por parte del eCommerce.

Si no se envía este campo, por defecto se toma el valor False.

paymentDataObject


planAlfanuméricoSIPlan. Enviar valor 0.

paymentsNuméricoSICantidad de cuotas.

paymentConditionAlfanuméricoNOCondición de pago, asociada con el campo payments. Sólo se encuentra presente si existe una condición de pago vinculada con la transacción.
additionalCardHolderBooleanNO

Campo que podrá enviar el eCommerce para que VPB solicite datos adicionales del tarjeta habiente en el formulario de pago, para ser validados por antifraude. Estos datos serán enviados en el objeto cardHolder. Valores posibles:

True: VPB solicitará los datos adicionales del tarjeta habiente en el formulario de pago.

False: VPB no solicitará datos adicionales del tarjeta habiente en el formulario. Dichos datos deberán ser enviados por el eCommerce.

Si no se envía este campo, los datos adicionales del cliente no serán solicitados por ningún sistema.

cardHolderObjectNODatos del titular de la tarjeta.

identificationTypeAlfanuméricoCondicional

Tipo de identificación. Valores posibles:


2: Número único

Obligatorio si additionalCardHolder=False


identificationNumberNuméricoCondicional

Número de identificación. Máximo 8 dígitos.

Obligatorio si additionalCardHolder=False


birthdate

DateCondicional

Fecha de nacimiento del tarjeta habiente. Formato DDMMYYYY.

Obligatorio si additionalCardHolder=False


phoneNuméricoNOTeléfono del tarjeta habiente. Máximo 11 dígitos.

deliveryAddress

ObjectNODatos de dirección de entrega del resumen de la tarjeta del pagador.



streetName

AlfanuméricoCondicional

Calle.

Obligatorio si additionalCardHolder=False



streetNumber

NuméricoCondicional

Número de puerta.

Obligatorio si additionalCardHolder=False



complementAlfanuméricoNOPiso / departamento.



zipCode

NuméricoNOCódigo postal. Máximo 4 dígitos.
customerData
ObjectNODatos del usuario registrado en el e-commerce

customerNameAlfanuméricoNONombre del cliente del e-commerce

customerLastNameAlfanuméricoNOApellido del cliente del e-commerce

customerIdentificationTypeAlfanuméricoNOTipo de documento del cliente del e-commerce

customerIdentificationNumberAlfanuméricoNONúmero de documento del cliente del e-commerce

customerIdAlfanuméricoNONombre o id del usuario del e-commerce.

customerIPAlfanuméricoSIDirección IP del usuario del e-commerce.
cardValidationObjectSIDatos que utilizará VPB para validar la tarjeta ingresada por el usuario en el formulario.

brandAlfanuméricoNOMarca de la tarjeta. Máximo 10 caracteres. Corresponde a la marca de tarjeta cargada en VTOL.

providerAlfanuméricoSICódigo del Proveedor de tarjeta cargado en VTOL. Ejemplo VI (Visa). Longitud máxima 20.

bankAlfanuméricoNOBanco emisor de la tarjeta. Longitud máxima 20. Corresponde a la descripción del banco cargado en VTOL.
amountNuméricoSIImporte total a pagar.

currency

Alfanumérico

SI

Tipo de Moneda:

  • $ = Pesos
  • U$S = Dólares
interestAmountAlfanuméricoNOEste campo es por si se necesita enviar el monto de los intereses en el mensaje a Autorizar. Normalmente el monto ya contiene los intereses en el caso de pagar en cuotas. Pero existen casos de tarjetas especiales donde el monto hay que enviarlo libre de intereses y en otro campo los intereses.
urlObjectSIDatos de las URLs de callback.


callbackUrlError

Alfanumérico

SI

URL de respuesta a la cual VPB hace la redirección cuando el requerimiento genera un error de validación o se produce algún problema interno. En la invocación se envía el transaccionID correspondiente y un mensaje que detalla el error ocurrido.


callbackUrlSuccessful

Alfanumérico

SI

URL de respuesta a la cual VPB hace la redirección cuando el requerimiento finaliza correctamente. En la invocación se envía el transacciónID correspondiente.
Importante: que haya sido enviado a VTOL Server no significa que la operación se encuentre Aprobada.


callbackUrlCancelAlfanuméricoSIURL de respuesta que será invocado cuando el pago de la compra sea cancelado por el usuario desde VPB.

checkTransactionStatusAlfanuméricoSI

URL definida por el e-commerce donde VPB podrá realizar una invocación GET, y poder obtener qué acción realizar sobre una transacción, confirmarla o cancelarla. Ver Servicios brindados por el ecommerce

formDataObjectNODatos del comercio que se mostrarán en el formulario de ingreso de datos de la tarjeta


merchantName

AlfanuméricoNO

Nombre que se visualizará en el formulario para el ingreso de datos de la tarjeta.

Si no se envía este campo, se mostrará un nombre por defecto.


merchantImageURL

AlfanuméricoNO

URL donde VPB podrá tomar la imagen que se visualizará en el formulario para el ingreso de datos de la tarjeta.

Si no se envía este campo, se mostrará una imagen por defecto.


merchantImageMobileURLAlfanuméricoNO

URL donde VPB podrá tomar la imagen que se visualizará en el formulario para el ingreso de datos de la tarjeta en dispositivos móviles y tablets.

Si no se envía este campo, se mostrará una imagen por defecto.

orderDescriptionAlfanuméricoNOEste campo se utiliza para enviar desde el eCommerce una leyenda que se mostrará en el formulario de VPB. En caso de que no se envíe este campo, se mostrará una leyenda por defecto.
posTicketAlfanuméricoNOInformación del ticket en formato xml y posteriormente transformado en Base 64. Ver sección Estructura del campo posTicket
ecommerceCustomFieldAlfanuméricoNOMáximo 255 caracteres. Campo generado por el eCommerce, lo puede enviar a VPB para que este lo guarde y pueda ser usado para trazabilidad del eCommerce.
validationDataObjectNOColección para informar los campos que VPB validará si coinciden con los datos ingresados por el usuario en el formulario.

identificationNumberMatchBooleanNO

Indica si el campo identificationNumber de la colección cardHolder, debe validar coincidencia entre el dato enviado por el eCommerce y valor ingresado por el cliente en el formulario de VPB.

True: VPB verificará si coinciden los datos.

False: VPB no verificará si coinciden los datos.

Si el eCommerce no envía este campo, entonces VPB no realizará ninguna verificación.

* Campos Condicionales:

Si additionalPayerData=False, entonces el eCommerce debe enviar obligatoriamente los siguientes campos:

  • identificationType
  • identificationNumber
  • birthdate
  • streetName
  • streetNumber

Si additionalPayerData=True, entonces VPB deberá solicitar obligatoriamente los siguientes campos en el formulario:

  • identificationType
  • identificationNumber
  • birthdate
  • streetName
  • streetNumber


Ejemplo:

json
{
   "ecommerce": {
      "company": "1",
      "store": "1"
   },
   "transactionType": "authorization",
   "autoCommit": false,
   "additionalCardHolder": false,
   "transactionId": 1569441914255,
   "orderDescription": "El total de su compra es de $110.99. Ha elegido pagar en Pesos Argentinos (ARS)",
   "amount": "110.90",
   "currency": "$",
   "interestAmount": "0",
   "userId": "",
   "posTicket": "",
   "ecommerceCustomField": "",
   "cardHolder": {
      "identificationType": "2",
      "identificationNumber": "32058821",
      "birthdate": "22/07/1986",
      "phone": "3425340300",
      "deliveryAddress": {
         "streetName": "25 de mayo",
         "streetNumber": "3587",
         "complement": "2B",
         "zipCode": "3000"
      }
   },
   "url": {
      "callbackUrlError": "https://localhost:8843/emulatorEcommerce/callbackErrorURL.jsp",
      "callbackUrlSuccessful": "https://localhost:8843/emulatorEcommerce/callbackOKURL.jsp",
      "callbackUrlCancel": "https://localhost:8843/emulatorEcommerce/callBackCancel.jsp",
      "checkTransactionStatus": "http://localhost:8280/emulatorEcommerce/service/checkStatusReturnRandom.html"
   },
   "formData": {
      "merchantName": "My Company Name",
      "merchantImageURL": "https://IP/companyImage.png"
   },
   "paymentData": {
      "payments": "1",
      "plan": "0"
   },
   "cardValidation": {
      "brand": "VISA",
      "provider": "VI",
      "bank": "BANCO GALICIA"
   },
   "customerData": {
      "customerId": "100",
      "customerIP": "10.90.100.101",
      "customerName": "Juan Carlos",
      "customerLastName": "Messi",
      "customerIdentificationType": "2",
      "customerIdentificationNumber": "32123456"
   }
}


Respuesta:

Se obtiene un JSON con los siguientes campos:

ParámetroTipoDescripción
statusNuméricoHTTP Status
codeNuméricoCódigo de respuesta de la operación realizada.
messageAlfanuméricoDescripción de la respuesta.
tokenAlfanuméricoToken de acceso para utilizar en la Autorización de Pago.


Ejemplo de respuesta:

Response
{
  "status": "200",
  "code": "0",
  "message": "Success",
  "token": "33C021C23EEF3DB7148DD30DF1F75134C89648FEBA505029443F48CC5E10C371"
}


2.1.2.2 Autorización de Pago

POST

Servicio: /web-vtol/service/v2/authorizeForm

Una vez generado y almacenado el token de acceso, se deberá ejecutar la Autorización de pago, utilizando en esta instancia el token previamente generado.

Invocación:

Al invocar a este servicio, VPB desplegará una ventana segura con el formulario de pago para capturar los datos de la tarjeta.

Se envían los siguientes parámetros de la operación dentro de la URL:

CampoTipoObligatorioDescripción
tokenAlfanuméricoSIToken obtenido en la respuesta del servicio paymentIntention


Ejemplo:

https://localhost:8843/web-vtol/service/v2/authorizeForm.html?token=33C021C23EEF3DB7148DD30DF1F75134C89648FEBA505029443F48CC5E10C371


Respuesta:

La respuesta se realiza en la dirección de callback, especificada en el POST inicial. De esta manera se devuelve el control al eCommerce.

Retorna los siguientes campos:

Parámetro

Tipo

Descripción

transactionTypeAlfanuméricoTipo de transacción.
ecommerce
ObjectDatos del comercio electrónico

company

Alfanumérico

Código de la compañía que realiza la compra.

storeNuméricoCódigo de la tienda asociada a la compañía que realiza la compra.
transactionIdNuméricoIdentificador único de la transacción de pago generado por el eCommerce.
responseCodeNuméricoCódigo de respuesta de la operación realizada.
statusAlfanuméricoEstado en el cual quedó registrada de la transacción realizada.


Importante

Cuando el eCommerce recibe el callback, tiene que obtener la información completa del recurso, accediendo al endpoint correspondiente de la API: /checkTransactionStatus


Ejemplo de respuesta:

json
{
   "transactionType": "Authorization",
   "ecommerce": {
      "company": "C1",
      "store": "13"
   },
   "transactionId": "1581605477722",
   "responseCode": "00",
   "status": "Pending"
}


Tener en cuenta

La reserva tendrá una validez de 15 días. Si no se realiza la captura hasta ese momento, será cancelada automáticamente.

La reserva también puede resultar rechazada, al igual que ocurre con una operación convencional, dependiendo si pasa las validaciones de la tarjeta.

Los fondos reservados no podrán ser utilizados por el comprador hasta que no sean capturados, por lo cual se recomienda realizar la captura en el menor tiempo posible.


2.1.2.3 Consultar Estado de Transacción

GET

Servicio: /web-vtol/service/v2/checkTransactionStatus

VPB permite consultar el estado y los datos de una autorización, a través de una invocación GET a la URL de VPB.

Invocación:

La invocación a este servicio es el mismo que en las operaciones de una fase: Consultar Estado de Transacción

En el Header se envían las credenciales usuario y contraseña de autenticación HTTP Basic



2.1.2.4 Captura de Pago

POST

Servicio: /web-vtol/service/v2/closeTransaction

Esta operatoria se utiliza exclusivamente luego de haber realizado un Pedido de Pre-Autorización en 2 pasos.

Para poder confirmar definitivamente el pago al cliente, es necesario capturar los fondos que se reservaron. Es posible realizar la captura por el monto total o de forma parcial.


Capturar el monto total de una reserva

Para hacer la captura por el monto total, se realizará una invocación POST a la URL de VPB, sin informar el monto, y enviando el atributo action=commit

Invocación:

En el Header se envían las credenciales usuario y contraseña de autenticación HTTP Basic

Se envían los siguientes parámetros con los datos de la captura:

Parámetro

Tipo de dato

Obligatorio

Descripción

transactionId

Numérico

SI

Identificador único de la transacción de pago generado por el eCommerce.

ecommerceObjectSIDatos del comercio electrónico

companyAlfanuméricoSICódigo de la compañía que realiza la solicitud de pago.

storeNuméricoSICódigo de la tienda asociada a la compañía que realiza la solicitud de pago.

action

Alfanumérico

SI

Valores posibles:

commit: Confirmada
rollback: Cancelada


Ejemplo:

json
{
   "transactionId": "1581605477722",
   "ecommerce": {
      "company": "C1",
      "store": "13"
   },
   "action": "commit"
}


Respuesta:

La respuesta sólo retorna un código HTTP 200.

Importante

Luego de recibir el código HTTP 200, el eCommerce deberá consultar el estado de la transacción, para confirmar que la Captura se realizó correctamente. Para eso deberá invocar el servicio /checkTransactionStatus con un método GET.


Capturar un monto distinto al reservado

Para hacer la captura por un monto distinto (mayor o menor) al reservado, se realizará una invocación POST a la URL de VPB, informando el monto con el importe definitivo, y enviando el atributo action=commit.

Invocación:

En el Header se envían las credenciales usuario y contraseña de autenticación HTTP Basic

En la invocación POST se envían los siguientes parámetros con los datos de la captura:

Parámetro

Tipo de dato

Obligatorio

Descripción

transactionId

Numérico

SI

Identificador único de la transacción de pago generado por el eCommerce.

ecommerceObjectSIDatos del comercio electrónico

companyAlfanuméricoSICódigo de la compañía que realiza la solicitud de pago.

storeNuméricoSICódigo de la tienda asociada a la compañía que realiza la solicitud de pago.
amountNuméricoSIImporte definitivo de la venta.

action

Alfanumérico

SI

Valores posibles:

commit: Confirmada
rollback: Cancelada


Ejemplo:

json
{
   "transactionId": "1581605477722",
   "ecommerce": {
      "company": "C1",
      "store": "13"
   },
   "amount":500.22,
   "action": "commit"
}


Respuesta:

La respuesta sólo retorna un código HTTP 200.

Importante

Luego de recibir el código HTTP 200, el eCommerce deberá consultar el estado de la transacción, para confirmar que la Captura se realizó correctamente. Para eso deberá invocar el servicio /checkTransactionStatus con un método GET.


2.1.2.5 Cancelar una Autorización de Pago

POST

Servicio: /web-vtol/service/v2/closeTransaction

Para realizar la cancelación de una autorización, se debe invocar un método POST a la URL de VPB, enviando el atributo action=rollback.

Invocación:

En el Header se envían las credenciales usuario y contraseña de autenticación HTTP Basic

Se envían los siguientes parámetros con los datos de la cancelación:

Parámetro

Tipo de dato

Obligatorio

Descripción

transactionId

Numérico

SI

Identificador único de la transacción de pago generado por el eCommerce.

ecommerce
ObjectSIDatos del comercio electrónico

companyAlfanuméricoSICódigo de la compañía que realiza la solicitud de pago.

storeNuméricoSICódigo de la tienda asociada a la compañía que realiza la solicitud de pago.

action

Alfanumérico

SI

Enviar rollback: Cancelar autorización


Ejemplo:

json
{
   "transactionId": "1581605477722",
   "ecommerce": {
      "company": "C1",
      "store": "13"
   },
   "action": "rollback"
}


Respuesta:

La respuesta sólo retorna un código HTTP 200.

Importante

Luego de recibir el código HTTP 200, el eCommerce deberá consultar el estado de la transacción, para confirmar que la Cancelación de la Autorización se realizó correctamente. Para eso deberá invocar el servicio /checkTransactionStatus con un método GET.


2.1.3 Devoluciones

VTOL Payment Bridge ofrece la posibilidad de realizar devoluciones de un pago y también de pagos PEI.

La Devolución de una Transacción de dos pasos, se hace por el monto efectivamente capturado (en el 2do paso).

A través de este método se realizan devoluciones totales o parciales. Para ello la transacción debe estar en estado Acreditada.


2.1.3.1 Realizar devolución total del pago

POST

Servicio: /web-vtol/service/v2/refunds

Se debe invocar un método POST a la URL de VPB, sin informar el monto, y enviando el atributo transactionType=refund.

Si no se informa el monto, la devolución se hará por el total de la orden.

Invocación:

En el Header se envían las credenciales usuario y contraseña de autenticación HTTP Basic

ParámetroTipo de datoObligatorioDescripción
ecommerceObjectSIDatos del comercio electrónico

companyAlfanuméricoSICódigo de la compañía que realiza la solicitud de pago.

storeNuméricoSICódigo de la tienda asociada a la compañía que realiza la solicitud de pago.
transactionTypeAlfanuméricoSITipo de transacción. Enviar refund
originalTrxIdNuméricoSIIdentificador de la transacción de compra original. Es el transactionId que se envió en la operación de compra.

transactionId

Numérico

SI

Identificador de la transacción de devolución. 16 dígitos de longitud. Debe ser generado por el e-commerce de manera tal que identifique unívocamente a una operación, respetando el siguiente formato: yyyyMMddHHmmssxx, donde:

yyyyMMddHHmmss: Fecha en que se realiza la operación con 4 dígitos para el año, 2 dígitos para el mes, 2 dígitos para el día, dos dígitos para la hora, dos dígitos para los minutos y 2 dígitos para los segundos.

xx: 2 dígitos para el trace de transacciones. Es un valor incremental que inicia en 01 y su valor máximo es 99.

amount

Numérico

NO

Importe de la devolución. La separación de decimales se realiza con un punto. Ejemplo: (200.00). Puede ser menor o igual al monto original de la compra.

Si no se envía, entonces la devolución será por el total de la compra.

currency

Alfanumérico

NO

Tipo de Moneda:

$ = Pesos

U$S = Dólares

urlObjectSIDatos de las URLs de callback.

callbackUrlErrorAlfanuméricoSIURL de respuesta a la cual VPB hace la redirección cuando el requerimiento genera un error de validación o se produce algún problema interno. En la invocación se envía el transaccionID correspondiente y un mensaje que detalla el error ocurrido.

callbackUrlSuccessfulAlfanuméricoSIURL de respuesta a la cual VPB hace la redirección cuando el requerimiento finaliza correctamente. En la invocación se envía el transacciónID correspondiente.

getTransactionStatusAlfanuméricoSIURL definida por el e-commerce donde VPB podrá realizar una invocación GET, y poder obtener qué acción realizar sobre una transacción, confirmarla o cancelarla. Ver Servicios brindados por el ecommerce


2.1.3.2 Realizar devolución parcial del pago

POST

Servicio: /web-vtol/service/v2/refunds

Se debe invocar un método POST a la URL de VPB, enviando el atributo transactionType=refund.

Es posible realizar devoluciones parciales (incluso más de una por orden, siempre y cuando no se supere el monto de la misma).

Invocación:

En el Header se envían las credenciales usuario y contraseña de autenticación HTTP Basic

Se debe indicar el monto a devolver, en el campo amount.

ParámetroTipo de datoObligatorioDescripción
ecommerceObjectSIDatos del comercio electrónico

companyAlfanuméricoSICódigo de la compañía que realiza la solicitud de pago.

storeNuméricoSICódigo de la tienda asociada a la compañía que realiza la solicitud de pago.
transactionTypeAlfanuméricoSITipo de transacción. Enviar refund
originalTrxIdNuméricoSIIdentificador de la transacción de compra original. Es el transactionId que se envió en la operación de compra.

transactionId

Numérico

SI

Identificador de la transacción de devolución. 16 dígitos de longitud. Debe ser generado por el e-commerce de manera tal que identifique unívocamente a una operación, respetando el siguiente formato: yyyyMMddHHmmssxx, donde:

yyyyMMddHHmmss: Fecha en que se realiza la operación con 4 dígitos para el año, 2 dígitos para el mes, 2 dígitos para el día, dos dígitos para la hora, dos dígitos para los minutos y 2 dígitos para los segundos.

xx: 2 dígitos para el trace de transacciones. Es un valor incremental que inicia en 01 y su valor máximo es 99.

amount

Numérico

SI

Importe de la devolución. La separación de decimales se realiza con un punto. Ejemplo: (200.00). Puede ser menor o igual al monto original de la compra.

currency

Alfanumérico

SI

Tipo de Moneda:

$ = Pesos

U$S = Dólares

urlObjectSIDatos de las URLs de callback.

callbackUrlErrorAlfanuméricoSIURL de respuesta a la cual VPB hace la redirección cuando el requerimiento genera un error de validación o se produce algún problema interno. En la invocación se envía el transaccionID correspondiente y un mensaje que detalla el error ocurrido.

callbackUrlSuccessfulAlfanuméricoSIURL de respuesta a la cual VPB hace la redirección cuando el requerimiento finaliza correctamente. En la invocación se envía el transacciónID correspondiente.

getTransactionStatusAlfanuméricoSIURL definida por el e-commerce donde VPB podrá realizar una invocación GET, y poder obtener qué acción realizar sobre una transacción, confirmarla o cancelarla. Ver Servicios brindados por el ecommerce


Respuesta:

La respuesta, tanto para devolución total como parcial, se realiza en la dirección de callback, especificada por el eCommerce en la operación de devolución.

Se responden los siguientes campos:

Parámetro

Tipo

Descripción

transactionIdNuméricoIdentificador único de la transacción de devolución generado por el eCommerce.
transactionTypeAlfanuméricoTipo de transacción: Refund
ecommerceObjectDatos del comercio electrónico

company

Alfanumérico

Código de la compañía que realiza la compra.

storeNuméricoCódigo de la tienda asociada a la compañía que realiza la compra.


Importante

Cuando el eCommerce recibe el callback, tiene que obtener la información completa del recurso, accediendo al endpoint de consulta de la API: /checkTransactionStatus


Ejemplo:

json
{
   "transactionId": "1581607736373",
   "transactionType": "Refund",
   "ecommerce": {
      "company": "C1",
      "store": "14"
   }
}


2.1.3.3 Cierre de transacción

Servicio: /web-vtol/service/v2/closeTransaction

VPB permite cerrar la transacción de Devolución para confirmarla o cancelarla, a través de un método POST a la URL de VPB. Esta operación se debe llevar a cabo para poder cerrar la transacción.

Importante

Para Operaciones PEI, el Cierre de Transacción no aplica. Es decir, no se debe invocar esta acción, ya que las operaciones PEI quedan confirmadas automáticamente. Si VPB responde que la operación PEI resultó Aprobada, dicha operación quedará en status commit.


POST

Invocación:

En el Header se envían las credenciales usuario y contraseña de autenticación HTTP Basic

Se envían los siguientes parámetros de la operación:

Campo

Tipo

Obligatorio

Descripción

transactionId

Numérico

SI

Identificador único de la transacción de pago generado por el ecommerce.

ecommerceObjectSIDatos del comercio electrónico.

companyAlfanuméricoSICódigo de la compañía que realiza el cierre de la transacción.

storeNuméricoSICódigo de la tienda asociada a la compañía que realiza el cierre de la transacción.

action

Alfanumérico

SI

commit: Confirmada

rollback: Cancelada


Ejemplo:

json
{
   "transactionId": "11445878985",
   "ecommerce": {
      "company": "1",
      "store": "1"
   },
   "action": "commit"
}


Respuesta:

La respuesta sólo retorna un código HTTP 200.

Importante

Luego de recibir el código HTTP 200, el eCommerce deberá consultar el estado de la transacción, para confirmar que la operación de Devolución se realizó correctamente. Para eso deberá invocar el servicio /checkTransactionStatus con un método GET.


2.1.3.4 Realizar devolución total de pago PEI

POST

Servicio: /web-vtol/service/v2/refunds

Se debe invocar un método POST a la URL de VPB, enviando el atributo transactionType=refundPEI.

Si no se informa el monto, la devolución se hará por el total de la orden.

Invocación:

En el Header se envían las credenciales usuario y contraseña de autenticación HTTP Basic

ParámetroTipo de datoObligatorioDescripción
ecommerceObjectSIDatos del comercio electrónico

companyAlfanuméricoSICódigo de la compañía que realiza la solicitud de pago.

storeNuméricoSICódigo de la tienda asociada a la compañía que realiza la solicitud de pago.
transactionTypeAlfanuméricoSITipo de transacción. Enviar refundPEI
originalTrxIdNuméricoSIIdentificador de la transacción de compra original. Es el transactionId que se envió en la operación de compra.

transactionId

Numérico

SI

Identificador de la transacción de devolución. 16 dígitos de longitud. Debe ser generado por el e-commerce de manera tal que identifique unívocamente a una operación, respetando el siguiente formato: yyyyMMddHHmmssxx, donde:

yyyyMMddHHmmss: Fecha en que se realiza la operación con 4 dígitos para el año, 2 dígitos para el mes, 2 dígitos para el día, dos dígitos para la hora, dos dígitos para los minutos y 2 dígitos para los segundos.

xx: 2 dígitos para el trace de transacciones. Es un valor incremental que inicia en 01 y su valor máximo es 99.

amount

Numérico

NO

Importe de la devolución. La separación de decimales se realiza con un punto. Ejemplo: (200.00). Puede ser menor o igual al monto original de la compra.

Si no se envía, entonces la devolución será por el total de la compra.

currency

Alfanumérico

NO

Tipo de Moneda:

$ = Pesos

urlObjectSIDatos de las URLs de callback.

callbackUrlErrorAlfanuméricoSIURL de respuesta a la cual VPB hace la redirección cuando el requerimiento genera un error de validación o se produce algún problema interno. En la invocación se envía el transaccionID correspondiente y un mensaje que detalla el error ocurrido.

callbackUrlSuccessfulAlfanuméricoSIURL de respuesta a la cual VPB hace la redirección cuando el requerimiento finaliza correctamente. En la invocación se envía el transacciónID correspondiente.


2.1.3.5 Realizar devolución parcial de pago PEI

POST

Servicio: /web-vtol/service/v2/refunds

Se debe invocar un método POST a la URL de VPB, enviando el atributo transactionType=refundPEI.

Es posible realizar devoluciones parciales (incluso más de una por orden, siempre y cuando no se supere el monto de la misma).

Invocación:

En el Header se envían las credenciales usuario y contraseña de autenticación HTTP Basic

Se debe indicar el monto a devolver, en el campo amount.

ParámetroTipo de datoObligatorioDescripción
ecommerceObjectSIDatos del comercio electrónico

companyAlfanuméricoSICódigo de la compañía que realiza la solicitud de pago.

storeNuméricoSICódigo de la tienda asociada a la compañía que realiza la solicitud de pago.
transactionTypeAlfanuméricoSITipo de transacción. Enviar refundPEI
originalTrxIdNuméricoSIIdentificador de la transacción de compra original. Es el transactionId que se envió en la operación de compra.

transactionId

Numérico

SI

Identificador de la transacción de devolución. 16 dígitos de longitud. Debe ser generado por el e-commerce de manera tal que identifique unívocamente a una operación, respetando el siguiente formato: yyyyMMddHHmmssxx, donde:

yyyyMMddHHmmss: Fecha en que se realiza la operación con 4 dígitos para el año, 2 dígitos para el mes, 2 dígitos para el día, dos dígitos para la hora, dos dígitos para los minutos y 2 dígitos para los segundos.

xx: 2 dígitos para el trace de transacciones. Es un valor incremental que inicia en 01 y su valor máximo es 99.

amount

Numérico

SI

Importe de la devolución. La separación de decimales se realiza con un punto. Ejemplo: (200.00). Puede ser menor o igual al monto original de la compra.

currency

Alfanumérico

SI

Tipo de Moneda:

$ = Pesos

urlObjectSIDatos de las URLs de callback.

callbackUrlErrorAlfanuméricoSIURL de respuesta a la cual VPB hace la redirección cuando el requerimiento genera un error de validación o se produce algún problema interno. En la invocación se envía el transaccionID correspondiente y un mensaje que detalla el error ocurrido.

callbackUrlSuccessfulAlfanuméricoSIURL de respuesta a la cual VPB hace la redirección cuando el requerimiento finaliza correctamente. En la invocación se envía el transacciónID correspondiente.


Respuesta:

La respuesta, tanto para devolución total como parcial, se realiza en la dirección de callback, especificada por el eCommerce en la operación de devolución.

Se responden los siguientes campos:

Parámetro

Tipo

Descripción

transactionIdNuméricoIdentificador único de la transacción de devolución generado por el eCommerce.
transactionTypeAlfanuméricoTipo de transacción: Refund
ecommerceObjectDatos del comercio electrónico

company

Numérico

Código de la compañía que realiza la compra.

storeNuméricoCódigo de la tienda asociada a la compañía que realiza la compra.


Importante

Cuando el eCommerce recibe el callback, tiene que obtener la información completa del recurso, accediendo al endpoint de consulta de la API: /checkTransactionStatus


Ejemplo:

Response body
{
   "transactionId": "1581607736373",
   "transactionType": "Refund",
   "ecommerce": {
      "company": "C1",
      "store": "12"
   }
}



2.2 Servicios brindados por el E-Commerce

El e-commerce debe brindar la posibilidad de realizar la consulta de estado de la transacción para que VPB pueda consultar si debe confirmar o cancelar la operación contra VTOL Server, en caso de producirse alguna desincronización de estados.


2.2.1 Consultar estado de transacción

VPB debe poder realizar una invocación GET a un servicio que disponibiliza el e-commerce. VPB debe conocer la URL del servicio para poder realizar la consulta. Dicha URL será informada por el e-commerce en el mensaje de Solicitud de Pago.


Servicio: /getTransactionStatus

Invocación:

En la invocación GET se envían los siguientes parámetros de la operación dentro de la URL:

Parámetro

Tipo

Obligatorio

Descripción

companyAlfanuméricoSICódigo de la compañía que realiza la solicitud de pago.
storeNuméricoSICódigo de la tienda asociada a la compañía que realiza la solicitud de pago.

transactionId

Numérico

SI

Identificador único de la transacción de pago generado por el ecommerce.


Ejemplo:

bash
https://www.e-commerce.com/service/getTransactionStatus.html?transactionId=1567105313489&company=1&store=1


Respuesta:

La respuesta retornará los siguientes campos:

Parámetro

Tipo

Descripción

companyAlfanuméricoCódigo de la compañía que realiza la solicitud de pago.
storeNuméricoCódigo de la tienda asociada a la compañía que realiza la solicitud de pago.

transactionId

Numérico

Identificador único de la transacción.

status

Alfanumérico

Estado de la transacción. Puede ser:

Commit: Confirmada

Rollback: Cancelada.


Los campos se responden en formato json "Nombre del campo":"valor"

Ejemplo de respuesta:

json
200:{
	"company":"1",
	"store":"1",	
	"transactionId":"1567105313489",
	"status":"Commit"
}



2.3 Códigos de Respuesta

VPB responde a cada transacción que recibe para autorizar con un código de respuesta y una descripción del mismo, indicando cual fue el resultado de la operación. 

A continuación se detallan las respuestas posibles.

2.3.1 Códigos recibidos de VTOL Server

Código

Descripción

'000'

Aprobada

'001'

Pedir autorización telefónica

'002'

Pedir autorización

'003'

Comercio inválido

'004'

Capturar tarjeta

'005'

Denegada

'007'

Retenga y llame

'011'

Aprobada

'012'

Transacción inválida

'013'

Monto inválido

'014'

Tarjeta inválida

'025'

No existe original

'030'

Error en formato

'038'

Excede ingreso de PIN

'043'

Retener tarjeta

'045'

No opera en cuotas

'046'

Tarjeta no vigente

'047'

PIN requerido

'048'

Excede máximo de cuotas

'049'

Error fecha de vencimiento

'050'

Entrega supera límite

'051'

Fondos insuficientes

'053'

Cuenta inexistente

'054'

Tarjeta vencida

'055'

PIN incorrecto

'056'

Tarjeta no habilitada

'057'

Transacción no permitida

'058'

Servicio inválido

'061'

Excede límite

'065'

Excede límite de tarjeta

'076'

Llamar al emisor

'077'

Error plan/cuotas

'085'

Aprobada

'086'

No envía fecha original

'089'

Terminal inválida

'091'

Emisor fuera de línea

'094'

Número de secuencia duplicado

'095'

Re-transmitiendo

'096'

Error en sistema

'098'

No aprobada

'099'

Error no clasificado

Modo de ingreso inválido

Proveedor inválido

Error CVC

Error creando mensaje

Tipo de mensaje inválido

No envía código de autorización

Error en fecha efectiva

Error en fecha vencimiento

Tarjeta no efectiva

No opera off-line

Devolución monto mayor

Original ya anulada

Original ya devuelta

Original reversada

Moneda inválida

No envía fecha

Campo 71 inválido

Campo 71 nulo

CVC inválido

Terjeta inválida

Track2 inválido

No envía moneda

No envía CVC

Timeout

Fecha original inválida

No envía ticket original

Ticket original inválido

No envía código de autorización de venta referida

Reintente


Nota: La respuesta con código '099' representa un error en el procesamiento interno de VTOL, independientemente de la interacción con el Centro Autorizador


2.3.2 Códigos de respuesta por validación en VPB

Código

Descripción

'100'

Iniciada

'101'

TransactionId duplicado.

'102'

No informó monto

'103'

No informó moneda

'104'

Autorizando

'105'

VTOL Server no responde

'106'

Error Interno VPB

'107'

No Informa URL OK

'108'

No Informa URL ERROR

'109'

Transacción No Existe

'110'

No Informa Plan

'111'

No Informa Payments


2.3.3 Códigos de respuesta de VTOL Server para PEI

A continuación se detallan las respuestas posibles de VTOL Server, cuando se opera con PEI:

Código

Descripción

00APROBADA
300Se agoto el tiempo de espera
301La sucursal ingresada es incorrecta
302El concepto ingresado es incorrecto
303El concepto ingresado no esta disponible
304El concepto ingresado no esta habilitado
305La cuenta destino del pago es incorrecta
306La cuenta destino no esta habilitada
307La cuenta origen del pago es incorrecta
308La cuenta origen no esta habilitada
309La Red destino del pago es incorrecta
310La cuenta del comercio es incorrecta
311La cuenta de la sucursal es incorrecta
312El comercio supero el importe máximo
313La sucursal supero el importe máximo
314La tarjeta ha superado el importe diario
315Comercio ha superado el importe diario
316Comercio ha superado el importe mensual
317Comercio supero las trxs diarias
318Comercio supero las trxs mensuales
319La sucursal supero el importe diario
320La sucursal supero el importe mensual
321La sucursal supero las trxs diarias
322La sucursal supero las trxs mensuales
323Encriptacion incorrecta
324El DNI no coincide con el de la tarjeta
325Los datos de tarjeta no se condicen
326El comercio es invalido
327Cuenta destino del comercio es invalida
328La tarjeta es invalida
329La referencia de trx ya fue utilizada
330El importe no es un numero mayor a cero
331Ultimos 4 dig. no coinciden con la tarj.
332Tarjeta inhabilitada para operar
333Tarjeta vencida
334Fondos insuficientes
335El CBU Banelco ingresado es incorrecto
336El ALIAS CBU Banelco es incorrecto
337El id de pago es invalido
338El id del canal es invalido
339Importe excede saldo remanente del pago
340El ID de requerimiento es invalido
341IP de cliente invalida
342Existe una devolucion aprobada del pago
343El pago tiene devoluciones parciales
344Pago no admite el tipo de devolucion
345Pago no admite el tipo de devolucion
346Terminal en uso
347Terminal PEI Invalida
348Comercio PEI Invalido
349Sucursal PEI Invalida
350Id operacion Requerido
351Id operacion Rango invalido
352Ultimos cuatro digitos invalidos
353Numero de documento requerido
354Trx original no se puede devolver
355La cuenta es incorrecta
356La cuenta no está habilitada
357La cuenta del comercio es incorrecta
358La cuenta de la sucursal es incorrecta
359Comercio supero monto para concepto
360Sucursal supero monto para concepto
361Tarjeta supero monto tipo de operacion
362Comercio supero monto tipo operacion
363Comercio supero monto tipo operacion
364Comercio supero cantidad transacciones
365Comercio supero cantidad transacciones
366Sucursal supero monto diario permitido
367Sucursal supero monto mensual permitido
368Sucursal supero cantidad trxs diarias
369Sucursal supero cantidad trx mensuales
370Error al desencriptar campos encriptados
371La cuenta destino del comercio invalida
372Ref de trx del comercio ya fue utilizada
373Ultimos 4 digitos incorrectos
374El ID de requerimiento enviado invalido
375Error General
376Concepto ingresado no habilitado
377Concepto ingresado no habilitado
378Cuenta es incorrecta
379Cuenta no está habilitada
380ALIAS CBU red Banelco es incorrecto
381El pago tiene devoluciones parciales
382Esta operacion no acepta devol. total
383Esta operacion no acepta devol. parcial
384La fecha es invalida
385El estado del pago es invalido
386El Concepto Operacion es invalido
387Estado trx original no acepta devolucion
388Importe devolucion supero monto limite
389No se encontró la trx original
390No es posible devolver una devolución
391Error en comunicación
392Campo DateTimeOriginalTrx invalido
393Autorizacion Original en Proceso
394No permite operar tarjeta de credito


3. Flujo transaccional

A continuación se detallan los diagramas de secuencia de cada tipo de operación.

3.1 Transacciones simples (de 1 fase)



3.2 Transacciones en dos fases



3.3 Devoluciones




  • Sem rótulos