VTOL Payment Bridge
...
Manual de Integración
...
- Integración 3.8.0.5
Painel | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||
|
...
|
Painel | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
|
Âncora_Toc434487091 _Toc434487091
1. Introducción
_Toc434487091 | |
_Toc434487091 |
...
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)
...
- 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.
- La respuesta del servicio “/paymentIntention” retorna un Token generado a partir del JSON recibido.
- El backend del eCommerce envía el valor del Token generado en el paso 2 al frontend.
- 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.
- 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.
- 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.
- 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.
...
Parámetro | Tipo | Obligatorio | Descripción | ||
---|---|---|---|---|---|
ecommerce | Object | SI | Datos del comercio electrónico | ||
company | Alfanumérico | SI | Código de la compañía que realiza la solicitud de pago. | ||
store | Numérico | SI | Código de la tienda asociada a la compañía que realiza la solicitud de pago. | ||
transactionType | Alfanumérico | SI | Tipo de transacción. Enviar sale | ||
transactionId | Numérico | SI | 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. | ||
autoCommit | Boolean | NO | 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. | ||
paymentData | Object | SI | Opciones de pago. | ||
plan | Alfanumérico | SI | Plan. Enviar valor 0. | ||
payments | Numérico | SI | Cantidad de cuotas. | ||
paymentCondition | Alfanumérico | NO | Condició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. | ||
additionalCardHolder | Boolean | NO | 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. | ||
cardHolder | Object | NO | Datos del titular de la tarjeta. | ||
identificationType | Alfanumérico | Condicional | Tipo de identificación. Valores posibles: 0: CUIT Obligatorio si additionalCardHolder= | ||
identificationNumber | Numérico | Condicional | Número de identificación. Máximo 8 dígitos. Obligatorio si additionalCardHolder= | ||
birthdate | Date | Condicional | Fecha de nacimiento del tarjeta habiente. Formato DDMMYYYY. Obligatorio si additionalCardHolder= | ||
phone | Numérico | NO | Teléfono del tarjeta habiente. Máximo 11 dígitos. | ||
deliveryAddress | Object | NO | Datos de dirección de entrega del resumen de la tarjeta del pagador. | ||
streetName | Alfanumérico | Condicional | Calle. Obligatorio si additionalCardHolder= | ||
streetNumber | Numérico | Condicional | Número de puerta. Obligatorio si additionalCardHolder= | ||
complement | Alfanumérico | NO | Piso / departamento. | ||
zipCode | Numérico | NO | Código postal. Máximo 4 dígitos. | ||
customerData | Object | NO | Datos del usuario registrado en el e-commerce | ||
customerName | Alfanumérico | NO | Nombre del cliente del e-commerce. Longitud máxima 30. | ||
customerLastName | Alfanumérico | NO | Apellido del cliente del e-commerce. Longitud máxima 30. | ||
customerIdentificationType | Alfanumérico | NO | Tipo de documento del cliente del e-commerce | ||
customerIdentificationNumber | Alfanumérico | NO | Número de documento del cliente del e-commerce | ||
customerId | Alfanumérico | NO | Nombre o id del usuario del e-commerce. | ||
customerIP | Alfanumérico | SI | Dirección IP del usuario del e-commerce. | ||
cardValidation | Object | SI | Datos que utilizará VPB para validar la tarjeta ingresada por el usuario en el formulario. | ||
brand | Alfanumérico | NO | Marca de la tarjeta. Máximo 10 caracteres. Corresponde a la marca de tarjeta cargada en VTOL. | ||
provider | Alfanumérico | SI | Código del Proveedor de tarjeta cargado en VTOL. Ejemplo VI (Visa). Longitud máxima 20. | ||
bank | Alfanumérico | NO | Banco emisor de la tarjeta. Longitud máxima 20. Corresponde a la descripción del banco cargado en VTOL. | ||
amount | Numérico | SI | Importe total a pagar. | ||
currency | Alfanumérico | SI | Tipo de Moneda:
| ||
interestAmount | Alfanumérico | NO | Este 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. | ||
url | Object | SI | Datos 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. | ||
callbackUrlCancel | Alfanumérico | SI | URL de respuesta que será invocado cuando el pago de la compra sea cancelado por el usuario desde VPB. | ||
checkTransactionStatus | Alfanumérico | SI | 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 | ||
formData | Object | NO | Datos del comercio que se mostrarán en el formulario de ingreso de datos de la tarjeta | ||
merchantName | Alfanumérico | NO | 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érico | NO | 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. | ||
merchantImageMobileURL | Alfanumérico | NO | 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. | ||
orderDescription | Alfanumérico | NO | Este 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. | ||
posTicket | Alfanumérico | NO | Información del ticket en formato xml y posteriormente transformado en Base 64. Ver sección Estructura del campo posTicket | ||
ecommerceCustomField | Alfanumérico | NO | Má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. | ||
validationData | Object | NO | Colección para informar los campos que VPB validará si coinciden con los datos ingresados por el usuario en el formulario. | ||
identificationNumberMatch | Boolean | NO | 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. |
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
{ "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": "12", "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": "12", "customerIdentificationNumber": "32123456" } } |
...
Se obtiene un JSON con los siguientes campos:
Parámetro | Tipo | Descripción | |
---|---|---|---|
status | Numérico | HTTP Status | |
code | Numérico | Código de respuesta de la operación realizada. | |
message | Alfanumérico | Descripción de la respuesta. | |
token | Alfanumérico | Token de acceso para utilizar en la Autorización de Pago. |
Ejemplo de respuesta:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "status": "200", "code": "0", "message": "Success", "token": "33C021C23EEF3DB7148DD30DF1F75134C89648FEBA505029443F48CC5E10C371" } |
...
Se envían los siguientes parámetros de la operación dentro de la URL:
Campo | Tipo | Obligatorio | Descripción | |
---|---|---|---|---|
token | Alfanumérico | SI | Token obtenido en la respuesta del servicio paymentIntention |
Ejemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
https://localhost:8843/web-vtol/service/v2/authorizeForm.html?token=33C021C23EEF3DB7148DD30DF1F75134C89648FEBA505029443F48CC5E10C371 |
...
Parámetro | Tipo | Descripción | |
---|---|---|---|
transactionType | Alfanumérico | Tipo de transacción realizada. | |
ecommerce | Object | Datos del comercio electrónico | |
company | Alfanumérico | Código de la compañía que realiza la compra. | |
store | Numérico | Código de la tienda asociada a la compañía que realiza la compra. | |
transactionId | Numérico | Identificador único de la transacción de pago generado por el eCommerce. | |
responseCode | Numérico | Código de respuesta de la operación realizada. | |
status | Alfanumérico | Estado en el cual quedó registrada de la transacción realizada. |
...
Parámetro | Tipo | Obligatorio | Descripción | ||
---|---|---|---|---|---|
ecommerce | Object | SI | Datos del comercio electrónico | ||
company | Alfanumérico | SI | Código de la compañía que realiza la solicitud de pago. | ||
store | Numérico | SI | Código de la tienda asociada a la compañía que realiza la solicitud de pago. | ||
transactionType | Alfanumérico | SI | Tipo de transacción. Enviar: SalePEI | ||
transactionId | Numérico | SI | 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. | ||
paymentData | Object | SI | Datos de las opciones de pago | ||
payments | Numérico | SI | Cuotas. Enviar siempre el valor 1. | ||
plan | Alfanumérico | SI | Plan. Enviar siempre el valor 0. | ||
additionalCardHolder | Boolean | NO | 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. | ||
cardHolder | Object | NO | Datos del titular de la tarjeta. | ||
identificationType | Alfanumérico | NO | Tipo de identificación. Valores posibles:0: CUIT 2: Número único | ||
identificationNumber | Numérico | NO | Número de identificación. Máximo 8 dígitos. | ||
birthdate | Date | Condicional | Fecha de nacimiento del tarjeta habiente. Formato DDMMYYYY. Obligatorio si additionalCardHolder= | ||
phone | Numérico | NO | Teléfono del tarjeta habiente. Máximo 11 dígitos. | ||
deliveryAddress | Object | NO | Datos de dirección de entrega del resumen de la tarjeta del pagador. | ||
streetName | Alfanumérico | Condicional | Calle. Obligatorio si additionalCardHolder= | ||
streetNumber | Numérico | Condicional | Número de puerta. Obligatorio si additionalCardHolder= | ||
complement | Alfanumérico | NO | Piso / departamento. | ||
zipCode | Numérico | NO | Código postal. Máximo 4 dígitos. | ||
customerData | Object | NO | Datos del usuario registrado en el e-commerce | ||
customerName | Alfanumérico | NO | Nombre del cliente del e-commerce. Longitud máxima 30. | ||
customerLastName | Alfanumérico | NO | Apellido del cliente del e-commerce. Longitud máxima 30. | ||
customerIdentificationType | Alfanumérico | NO | Tipo de documento del cliente del e-commerce | ||
customerIdentificationNumber | Alfanumérico | NO | Número de documento del cliente del e-commerce | ||
customerId | Alfanumérico | NO | Nombre o id del usuario del e-commerce. | ||
customerIP | Alfanumérico | SI | Dirección IP del usuario del e-commerce. | ||
cardValidation | Object | SI | Datos que utilizará VPB para validar la tarjeta ingresada por el usuario en el formulario. | ||
brand | Alfanumérico | NO | Marca de la tarjeta. Máximo 10 caracteres. Corresponde a la marca de tarjeta cargada en VTOL. | ||
provider | Alfanumérico | SI | Código del Proveedor de tarjeta cargado en VTOL. Ejemplo VI (Visa). Longitud máxima 20. | ||
bank | Alfanumérico | NO | Banco emisor de la tarjeta. Longitud máxima 20. Corresponde a la descripción del banco cargado en VTOL. | ||
amount | Numérico | SI | Importe total a pagar. | ||
currency | Alfanumérico | SI | Tipo de Moneda:
| ||
url | Object | SI | Datos 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. | ||
callbackUrlCancel | Alfanumérico | SI | URL de respuesta que será invocado cuando el pago de la compra sea cancelado por el usuario desde VPB. | ||
formData | Object | NO | Datos del comercio que se mostrarán en el formulario de ingreso de datos de la tarjeta | ||
merchantName | Alfanumérico | NO | 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érico | NO | 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. | ||
merchantImageMobileURL | Alfanumérico | NO | 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. | ||
orderDescription | Alfanumérico | NO | Este 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. | ||
posTicket | Alfanumérico | NO | Información del ticket en formato xml y posteriormente transformado en Base 64. Ver sección Estructura del campo posTicket | ||
ecommerceCustomField | Alfanumérico | NO | Má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. | ||
validationData | Object | NO | Colección para informar los campos que VPB validará si coinciden con los datos ingresados por el usuario en el formulario. | ||
identificationNumberMatch | Boolean | NO | 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. |
...
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "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": "02", "customerIdentificationNumber": "34000499" } } |
...
Se obtiene un JSON con los siguientes campos:
Parámetro | Tipo | Descripción | |
---|---|---|---|
status | Numérico | HTTP Status | |
code | Numérico | Código de respuesta de la operación realizada. | |
message | Alfanumérico | Descripción de la respuesta. | |
token | Alfanumérico | Token de acceso para utilizar en la Autorización de Pago. |
Ejemplo de respuesta:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "status": "200", "code": "0", "message": "Success", "token": "33C021C23EEF3DB7148DD30DF1F75134C89648FEBA505029443F48CC5E10C371" } |
...
Se envían los siguientes parámetros de la operación dentro de la URL:
Campo | Tipo | Obligatorio | Descripción | |
---|---|---|---|---|
token | Alfanumérico | SI | Token obtenido en la respuesta del servicio paymentIntention |
Ejemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
https://localhost:8843/web-vtol/service/v2/authorizeForm.html?token=33C021C23EEF3DB7148DD30DF1F75134C89648FEBA505029443F48CC5E10C371 |
...
Se responden los siguientes campos:
Parámetro | Tipo | Descripción | |
---|---|---|---|
transactionType | Alfanumérico | Tipo de transacción realizada. | |
ecommerce | Object | Datos del comercio electrónico | |
company | Alfanumérico | Código de la compañía que realiza la compra. | |
store | Numérico | Código de la tienda asociada a la compañía que realiza la compra. | |
transactionId | Numérico | Identificador único de la transacción de pago generado por el eCommerce. | |
responseCode | Numérico | Código de respuesta de la operación realizada. | |
status | Alfanumérico | Estado en el cual quedó registrada de la transacción realizada. |
Informações | ||
---|---|---|
| ||
Cuando el eCommerce recibe el callback, tiene que obtener la información completa del recurso, accediendo al endpoint de consulta de la API: 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: 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). |
...
Campo | Tipo | Obligatorio | Descripción | |
---|---|---|---|---|
transactionId | Numérico | SI | Identificador único de la transacción de pago generado por el ecommerce. | |
ecommerce | Object | SI | Datos del comercio electrónico | |
company | Alfanumérico | SI | Código de la compañía que realiza la consulta. | |
store | Numérico | SI | Código de la tienda asociada a la compañía que realiza la consulta. |
...
Campo | Tipo | Descripción |
---|---|---|
company | Alfanumérico | Código de la compañía que realizó la transacción. |
store | Numérico | Có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. |
providerName | Alfanumérico | Descripción de la tarjeta. |
displayMessage | Alfanumérico | Mensaje adicional enviado por el autorizador y que debe ser visualizado. |
transactionDate | Alfanumérico | Fecha y hora de la transacción. |
maskedCardNumber | Alfanumérico | Número de tarjeta del pago. Está enmascarado. Por ejemplo: 4507******0010 |
...
La respuesta retorna los siguientes campos:
Campo | Tipo | Descripción |
---|---|---|
company | Alfanumérico | Código de la compañía que realizó la transacción. |
store | Numérico | Có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. |
providerName | Alfanumérico | Descripción de la tarjeta. |
displayMessage | Alfanumérico | Mensaje adicional enviado por el autorizador y que debe ser visualizado. |
transactionDate | Alfanumérico | Fecha y hora de la transacción. |
trxReferenceNumber | 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. |
idOperationPEI | Numérico | Identificador de la operación PEI de pago o de devolución, retornada por el autorizador. |
bankingRefNum | Numérico | Número de referencia bancaria de la operación. Es retornada por Red Link en la operación de pago y devolución. |
idCommercePEI | Alfanumérico | Número de comercio PEI de la transacción. |
idBranchPEI | Alfanumérico | Código de sucursal PEI de la transacción. |
maskedCardNumber | Alfanumérico | Número de tarjeta del pago. Está enmascarado, el largo total coincide con la tarjeta. Por ejemplo: 4507******0010 |
Informações | ||
---|---|---|
| ||
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. |
...
Campo | Tipo | Obligatorio | Descripción | |
---|---|---|---|---|
transactionId | Numérico | SI | Identificador único de la transacción de pago generado por el ecommerce. | |
ecommerce | Object | SI | Datos del comercio electrónico | |
company | Alfanumérico | SI | Código de la compañía que realiza el cierre de la transacción. | |
store | Numérico | SI | Có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 |
...
Parámetro | Tipo | Obligatorio | Descripción | ||
---|---|---|---|---|---|
ecommerce | Object | SI | Datos del comercio electrónico | ||
company | Alfanumérico | SI | Código de la compañía que realiza la solicitud de pago. | ||
store | Numérico | SI | Código de la tienda asociada a la compañía que realiza la solicitud de pago. | ||
transactionType | Alfanumérico | SI | Tipo de transacción. Enviar authorization | ||
transactionId | Numérico | SI | 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. | ||
autoCommit | Boolean | NO | 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. | ||
paymentData | Object | ||||
plan | Alfanumérico | SI | Plan. Enviar valor 0. | ||
payments | Numérico | SI | Cantidad de cuotas. | ||
paymentCondition | Alfanumérico | NO | Condició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. | ||
additionalCardHolder | Boolean | NO | 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. | ||
cardHolder | Object | NO | Datos del titular de la tarjeta. | ||
identificationType | Alfanumérico | Condicional | Tipo de identificación. Valores posibles:0: CUIT
Obligatorio si additionalCardHolder= | ||
identificationNumber | Numérico | Condicional | Número de identificación. Máximo 8 dígitos. Obligatorio si additionalCardHolder= | ||
birthdate | Date | Condicional | Fecha de nacimiento del tarjeta habiente. Formato DDMMYYYY. Obligatorio si additionalCardHolder= | ||
phone | Numérico | NO | Teléfono del tarjeta habiente. Máximo 11 dígitos. | ||
deliveryAddress | Object | NO | Datos de dirección de entrega del resumen de la tarjeta del pagador. | ||
streetName | Alfanumérico | Condicional | Calle. Obligatorio si additionalCardHolder= | ||
streetNumber | Numérico | Condicional | Número de puerta. Obligatorio si additionalCardHolder= | ||
complement | Alfanumérico | NO | Piso / departamento. | ||
zipCode | Numérico | NO | Código postal. Máximo 4 dígitos. | ||
customerData | Object | NO | Datos del usuario registrado en el e-commerce | ||
customerName | Alfanumérico | NO | Nombre del cliente del e-commerce | ||
customerLastName | Alfanumérico | NO | Apellido del cliente del e-commerce | ||
customerIdentificationType | Alfanumérico | NO | Tipo de documento del cliente del e-commerce | ||
customerIdentificationNumber | Alfanumérico | NO | Número de documento del cliente del e-commerce | ||
customerId | Alfanumérico | NO | Nombre o id del usuario del e-commerce. | ||
customerIP | Alfanumérico | SI | Dirección IP del usuario del e-commerce. | ||
cardValidation | Object | SI | Datos que utilizará VPB para validar la tarjeta ingresada por el usuario en el formulario. | ||
brand | Alfanumérico | NO | Marca de la tarjeta. Máximo 10 caracteres. Corresponde a la marca de tarjeta cargada en VTOL. | ||
provider | Alfanumérico | SI | Código del Proveedor de tarjeta cargado en VTOL. Ejemplo VI (Visa). Longitud máxima 20. | ||
bank | Alfanumérico | NO | Banco emisor de la tarjeta. Longitud máxima 20. Corresponde a la descripción del banco cargado en VTOL. | ||
amount | Numérico | SI | Importe total a pagar. | ||
currency | Alfanumérico | SI | Tipo de Moneda:
| ||
interestAmount | Alfanumérico | NO | Este 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. | ||
url | Object | SI | Datos 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. | ||
callbackUrlCancel | Alfanumérico | SI | URL de respuesta que será invocado cuando el pago de la compra sea cancelado por el usuario desde VPB. | ||
checkTransactionStatus | Alfanumérico | SI | 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 | ||
formData | Object | NO | Datos del comercio que se mostrarán en el formulario de ingreso de datos de la tarjeta | ||
merchantName | Alfanumérico | NO | 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érico | NO | 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. | ||
merchantImageMobileURL | Alfanumérico | NO | 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. | ||
orderDescription | Alfanumérico | NO | Este 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. | ||
posTicket | Alfanumérico | NO | Información del ticket en formato xml y posteriormente transformado en Base 64. Ver sección Estructura del campo posTicket | ||
ecommerceCustomField | Alfanumérico | NO | Má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. | ||
validationData | Object | NO | Colección para informar los campos que VPB validará si coinciden con los datos ingresados por el usuario en el formulario. | ||
identificationNumberMatch | Boolean | NO | 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. |
...
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "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": "12", "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": "12", "customerIdentificationNumber": "32123456" } } |
...
Se obtiene un JSON con los siguientes campos:
Parámetro | Tipo | Descripción | |
---|---|---|---|
status | Numérico | HTTP Status | |
code | Numérico | Código de respuesta de la operación realizada. | |
message | Alfanumérico | Descripción de la respuesta. | |
token | Alfanumérico | Token de acceso para utilizar en la Autorización de Pago. |
Ejemplo de respuesta:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "status": "200", "code": "0", "message": "Success", "token": "33C021C23EEF3DB7148DD30DF1F75134C89648FEBA505029443F48CC5E10C371" } |
...
Se envían los siguientes parámetros de la operación dentro de la URL:
Campo | Tipo | Obligatorio | Descripción | |
---|---|---|---|---|
token | Alfanumérico | SI | Token obtenido en la respuesta del servicio paymentIntention |
Ejemplo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
https://localhost:8843/web-vtol/service/v2/authorizeForm.html?token=33C021C23EEF3DB7148DD30DF1F75134C89648FEBA505029443F48CC5E10C371 |
...
Parámetro | Tipo | Descripción | |
---|---|---|---|
transactionType | Alfanumérico | Tipo de transacción. | |
ecommerce | Object | Datos del comercio electrónico | |
company | Alfanumérico | Código de la compañía que realiza la compra. | |
store | Numérico | Código de la tienda asociada a la compañía que realiza la compra. | |
transactionId | Numérico | Identificador único de la transacción de pago generado por el eCommerce. | |
responseCode | Numérico | Código de respuesta de la operación realizada. | |
status | Alfanumérico | Estado en el cual quedó registrada de la transacción realizada. |
...
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 | Object | SI | Datos del comercio electrónico | |
company | Alfanumérico | SI | Código de la compañía que realiza la solicitud de pago. | |
store | Numérico | SI | Código de la tienda asociada a la compañía que realiza la solicitud de pago. | |
action | Alfanumérico | SI | Valores posibles: commit: Confirmada |
...
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 | Object | SI | Datos del comercio electrónico | |
company | Alfanumérico | SI | Código de la compañía que realiza la solicitud de pago. | |
store | Numérico | SI | Código de la tienda asociada a la compañía que realiza la solicitud de pago. | |
amount | Numérico | SI | Importe definitivo de la venta. | |
action | Alfanumérico | SI | Valores posibles: commit: Confirmada |
...
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 | Object | SI | Datos del comercio electrónico | |
company | Alfanumérico | SI | Código de la compañía que realiza la solicitud de pago. | |
store | Numérico | SI | Código de la tienda asociada a la compañía que realiza la solicitud de pago. | |
action | Alfanumérico | SI | Enviarrollback: Cancelar autorización |
...
Parámetro | Tipo | Descripción | |
---|---|---|---|
transactionId | Numérico | Identificador único de la transacción de devolución generado por el eCommerce. | |
transactionType | Alfanumérico | Tipo de transacción: Refund | |
ecommerce | Object | Datos del comercio electrónico | |
company | Alfanumérico | Código de la compañía que realiza la compra. | |
store | Numérico | Código de la tienda asociada a la compañía que realiza la compra. |
...
Campo | Tipo | Obligatorio | Descripción | |
---|---|---|---|---|
transactionId | Numérico | SI | Identificador único de la transacción de pago generado por el ecommerce. | |
ecommerce | Object | SI | Datos del comercio electrónico. | |
company | Alfanumérico | SI | Código de la compañía que realiza el cierre de la transacción. | |
store | Numérico | SI | Có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 |
...
Se responden los siguientes campos:
Parámetro | Tipo | Descripción | |
---|---|---|---|
transactionId | Numérico | Identificador único de la transacción de devolución generado por el eCommerce. | |
transactionType | Alfanumérico | Tipo de transacción: Refund | |
ecommerce | Object | Datos del comercio electrónico | |
company | Numérico | Código de la compañía que realiza la compra. | |
store | Numérico | Código de la tienda asociada a la compañía que realiza la compra. |
Informações | ||
---|---|---|
| ||
Cuando el eCommerce recibe el callback, tiene que obtener la información completa del recurso, accediendo al endpoint de consulta de la API: |
...
Parámetro | Tipo | Obligatorio | Descripción |
---|---|---|---|
company | Alfanumérico | SI | Código de la compañía que realiza la solicitud de pago. |
store | Numérico | SI | Có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. |
...
Parámetro | Tipo | Descripción |
---|---|---|
company | Alfanumérico | Código de la compañía que realiza la solicitud de pago. |
store | Numérico | Có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. |
...
A continuación se detallan las respuestas posibles de VTOL Server, cuando se opera con PEI:
Código | Descripción |
---|---|
00 | APROBADA |
300 | Se agoto el tiempo de espera |
301 | La sucursal ingresada es incorrecta |
302 | El concepto ingresado es incorrecto |
303 | El concepto ingresado no esta disponible |
304 | El concepto ingresado no esta habilitado |
305 | La cuenta destino del pago es incorrecta |
306 | La cuenta destino no esta habilitada |
307 | La cuenta origen del pago es incorrecta |
308 | La cuenta origen no esta habilitada |
309 | La Red destino del pago es incorrecta |
310 | La cuenta del comercio es incorrecta |
311 | La cuenta de la sucursal es incorrecta |
312 | El comercio supero el importe máximo |
313 | La sucursal supero el importe máximo |
314 | La tarjeta ha superado el importe diario |
315 | Comercio ha superado el importe diario |
316 | Comercio ha superado el importe mensual |
317 | Comercio supero las trxs diarias |
318 | Comercio supero las trxs mensuales |
319 | La sucursal supero el importe diario |
320 | La sucursal supero el importe mensual |
321 | La sucursal supero las trxs diarias |
322 | La sucursal supero las trxs mensuales |
323 | Encriptacion incorrecta |
324 | El DNI no coincide con el de la tarjeta |
325 | Los datos de tarjeta no se condicen |
326 | El comercio es invalido |
327 | Cuenta destino del comercio es invalida |
328 | La tarjeta es invalida |
329 | La referencia de trx ya fue utilizada |
330 | El importe no es un numero mayor a cero |
331 | Ultimos 4 dig. no coinciden con la tarj. |
332 | Tarjeta inhabilitada para operar |
333 | Tarjeta vencida |
334 | Fondos insuficientes |
335 | El CBU Banelco ingresado es incorrecto |
336 | El ALIAS CBU Banelco es incorrecto |
337 | El id de pago es invalido |
338 | El id del canal es invalido |
339 | Importe excede saldo remanente del pago |
340 | El ID de requerimiento es invalido |
341 | IP de cliente invalida |
342 | Existe una devolucion aprobada del pago |
343 | El pago tiene devoluciones parciales |
344 | Pago no admite el tipo de devolucion |
345 | Pago no admite el tipo de devolucion |
346 | Terminal en uso |
347 | Terminal PEI Invalida |
348 | Comercio PEI Invalido |
349 | Sucursal PEI Invalida |
350 | Id operacion Requerido |
351 | Id operacion Rango invalido |
352 | Ultimos cuatro digitos invalidos |
353 | Numero de documento requerido |
354 | Trx original no se puede devolver |
355 | La cuenta es incorrecta |
356 | La cuenta no está habilitada |
357 | La cuenta del comercio es incorrecta |
358 | La cuenta de la sucursal es incorrecta |
359 | Comercio supero monto para concepto |
360 | Sucursal supero monto para concepto |
361 | Tarjeta supero monto tipo de operacion |
362 | Comercio supero monto tipo operacion |
363 | Comercio supero monto tipo operacion |
364 | Comercio supero cantidad transacciones |
365 | Comercio supero cantidad transacciones |
366 | Sucursal supero monto diario permitido |
367 | Sucursal supero monto mensual permitido |
368 | Sucursal supero cantidad trxs diarias |
369 | Sucursal supero cantidad trx mensuales |
370 | Error al desencriptar campos encriptados |
371 | La cuenta destino del comercio invalida |
372 | Ref de trx del comercio ya fue utilizada |
373 | Ultimos 4 digitos incorrectos |
374 | El ID de requerimiento enviado invalido |
375 | Error General |
376 | Concepto ingresado no habilitado |
377 | Concepto ingresado no habilitado |
378 | Cuenta es incorrecta |
379 | Cuenta no está habilitada |
380 | ALIAS CBU red Banelco es incorrecto |
381 | El pago tiene devoluciones parciales |
382 | Esta operacion no acepta devol. total |
383 | Esta operacion no acepta devol. parcial |
384 | La fecha es invalida |
385 | El estado del pago es invalido |
386 | El Concepto Operacion es invalido |
387 | Estado trx original no acepta devolucion |
388 | Importe devolucion supero monto limite |
389 | No se encontró la trx original |
390 | No es posible devolver una devolución |
391 | Error en comunicación |
392 | Campo DateTimeOriginalTrx invalido |
393 | Autorizacion Original en Proceso |
394 | No permite operar tarjeta de credito |
3. Flujo transaccional
A continuación se detallan los diagramas de secuencia de cada tipo de operación.
...