Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.


Image RemovedImage Added




VTOL Payment Bridge

...

Manual de Integración

...

- Integración 3.8.0.5





Painel
borderColor#E4E3E3
bgColor#ffffff
titleColor#ffffff
borderWidth1px
titleBGColor#704581
titleREVISIONES


Expandir
titleExpandir 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

...





Painel
borderColor#E4E3E3
titleColor#ffffff
borderWidth1
titleBGColor#704581
titleCONTENIDO


Expandir
titleExpandir contenido

Índice



Âncora
_Toc434487091
_Toc434487091
1. Introducción

...

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:0: CUIT
1: CUIL

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.

...

Bloco de código
themeMidnight
titlejson
{
   "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á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:

Bloco de código
languagejs
themeMidnight
titleResponse
{
  "status": "200",
  "code": "0",
  "message": "Success",
  "token": "33C021C23EEF3DB7148DD30DF1F75134C89648FEBA505029443F48CC5E10C371"
}

...

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:

Bloco de código
languagejs
themeMidnight
https://localhost:8843/web-vtol/service/v2/authorizeForm.html?token=33C021C23EEF3DB7148DD30DF1F75134C89648FEBA505029443F48CC5E10C371

...

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:0: CUIT

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

...

Bloco de código
languagejs
themeMidnight
titleRequest
{
   "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á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:

Bloco de código
languagejs
themeMidnight
titleResponse
{
  "status": "200",
  "code": "0",
  "message": "Success",
  "token": "33C021C23EEF3DB7148DD30DF1F75134C89648FEBA505029443F48CC5E10C371"
}

...

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:

Bloco de código
languagejs
themeMidnight
https://localhost:8843/web-vtol/service/v2/authorizeForm.html?token=33C021C23EEF3DB7148DD30DF1F75134C89648FEBA505029443F48CC5E10C371

...

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.


Informações
titleImportante

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

...

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


Informações
titleImportante

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.

...

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:


0: CUIT
1: CUIL
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.

...

Bloco de código
themeMidnight
titlejson
linenumberstrue
{
   "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á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:

Bloco de código
languagejs
themeRDark
titleResponse
{
  "status": "200",
  "code": "0",
  "message": "Success",
  "token": "33C021C23EEF3DB7148DD30DF1F75134C89648FEBA505029443F48CC5E10C371"
}

...

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:

Bloco de código
languagejs
themeMidnight
https://localhost:8843/web-vtol/service/v2/authorizeForm.html?token=33C021C23EEF3DB7148DD30DF1F75134C89648FEBA505029443F48CC5E10C371

...

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.


Informações
titleImportante

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

...

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.

...