VTOL CD CA - Manual mensajería POS - VTOL CA



VTOL CRÉDITO DÉBITO CENTROAMÉRICA






Fecha

Revisión

Observaciones

01/10/2019

1.0

Generación del documento

20/01/2020

1.1

Ajusto mensaje Sale para reflejar que el POS nos enviará directamente el campo 201 con el json devuelto por el PIN Pad








1. Protocolo de comunicación POS – VTOL


Napse establece un protocolo de comunicación para la interacción POS - VTOL, el cual se denomina "Protocolo VTOL" o "llavecitas". Dicho protocolo se basa en un esquema recursivo compuesto por campos y separadores. A continuación se provee una especificación detallada de su estructura junto con los consecuentes diagramas para un mejor entendimiento.
Para implementar esta mensajería, VTOL provee una librería en el cual se encuentra la declaración de funciones y las definiciones de constantes y tipos necesarias. La librería es en realidad un módulo cliente que se comunica vía TCP/IP con el servidor de transacciones VTOL. El cliente podrá implementar esta mensajería sin utilizar la librería, pero deberá respetar el formato de la misma.
El formato del protocolo Synthesis se basa en la siguiente estructura:

Header

Mensaje

Longitud del mensaje (4 bytes)

Indica si el mensaje requiere respuesta o no (2 bytes)

Ejemplo: {25:20020426172836;1:5;2:1;27:00;26:ISO8583;28:Aprobado}


La estructura posee dos partes separadas que son el Header y el Mensaje propiamente dicho.


1.1 Header

Dentro del Header viaja información específica del mensaje que se encuentra a continuación del mismo, como ser su longitud y si requiere o no una respuesta. Para ello fueron destinados 6 bytes que se distribuyen de la siguiente manera: los primeros 4 bytes son destinados a la longitud (expresado en hexadecimal, con el último byte como el más significativo) y los últimos 2 indican la necesidad de recibir o no una respuesta (expresado en hexadecimal, con el último byte como el más significativo)
Longitud máxima representable por medio de este protocolo: 2047 MB (Mega Bytes) (cantidad máxima representable por un entero: 2147483647 bytes)

Un ejemplo de lo explicado anteriormente podría ser el siguiente:

HEADER


Longitud del mensaje

Requiere respuesta

A101

01


En este ejemplo la longitud del mensaje será:

0001  0000  0001  1010
   1       0        1        A  = 212 + 24 + 23 + 21 = 4122

NOTA: se ordena la longitud A101colocando el byte más significativo a la izquierda, con lo cual resulta: 101A.


1.2 Mensaje


A continuación del Header se encuentra el Mensaje propiamente dicho, el cual contiene la información que el emisor desea transmitirle al sistema receptor.
Existen dos opciones para la estructura del Mensaje, las cuales se presentan a continuación:

  1. Simple



Mensaje Campo Valor Campo Valor

El mensaje viajará encerrado entre "{ }" (llaves). Cada campo del mismo se compondrá de la siguiente manera: los primeros dígitos indicarán el número de campo y a partir de los ":" (dos puntos) se encontrará el valor del campo. Los campos viajan separados por ";" (punto y coma).

Ejemplo:

{1:5;2:1;26:ISO8583;27:00;28:Aprobado}

El mensaje anterior posee 5 campos, los cuales se identifican con los números 1, 2, 26, 27 y 28. A continuación de cada uno de ellos (luego del separador ":") se encuentra el valor de cada campo. En el ejemplo presentado, para el campo 1 el valor es "5", para el campo 2 el valor es "1" y así sucesivamente.


1.3 Escape de caracteres


Si se desea enviar el carácter especial punto y coma (;) en el valor e algún campo, será necesario escaparlo.
Para realizar el escape de un caracter especial se deberá usar "'\" inmediatamente antes del carácter a escapar.

Ejemplo:

A continuación se presenta un campo cuyo valor incluye el carácter ; y se muestra como escapar el mismo: {1:14\;56}


1.4 Mecanismo de "Tercer Mensaje"

1.4.4 Descripción


VTOL es un intermediario entre el POS y el Centro Autorizador. Cuando VTOL responde al POS un requerimiento a partir de la información recibida desde el Centro Autorizador, el mismo desconoce la interacción que se está teniendo entre el cliente y el operador y los problemas técnicos que pueda tener el POS (impresora, enlaces, etc). Es necesario cargar al POS con la responsabilidad de confirmar a VTOL cómo terminó la transacción, pudiéndose confirmar o reversar. Para ello existe el Tercer Mensaje del POS a VTOL.

Por lo tanto, el tercer mensaje es un mecanismo para asegurar la consistencia y concordancia de las transacciones realizadas que son registradas en VTOL.

A fines de simplificar el esquema de comunicación, suponiendo que el Centro Autorizador aprueba el requerimiento de VTOL, el flujo de mensajes entre el POS y VTOL es el siguiente:

  1. El POS envía un requerimiento de autorización a VTOL.
  2. VTOL responde al POS que el requerimiento fue autorizado y envía el ID de la transacción.
  3. El POS informa a VTOL con el Tercer Mensaje si la transacción se debe confirmar o reversar (COMMIT / ROLLBACK)



Dicho esquema requiere que cada transacción aprobada deba ser confirmada o reversada con un tercer mensaje. Si VTOL responde al POS con la aprobación de una transacción y no se confirma o reversa, a la próxima transacción que el POS envíe VTOL responderá que aún existe una transacción pendiente y hasta que no se envíe el tercer mensaje correspondiente no se podrá tratar la transacción en curso.


 
El tercer mensaje puede enviarse embebido en un requerimiento. Así en una misma transacción se enviará un requerimiento y la confirmación o reverso de una transacción pendiente.
No siempre cada transacción en el POS se corresponde con un único pago electrónico. Una operación de venta en el POS podría tener una o más transacciones de pago electrónico validadas por intermedio de VTOL. En dicho escenario, para el envío del tercer mensaje debe establecerse una condición por la que se da por finalizada la venta en el POS. Esta condición podría ser el registro de la transacción o la impresión del comprobante, pero se deberá tener en cuenta que para confirmar una transacción, VTOL se tiene que asegurar que la venta que contiene esa transacción sea procesada por el POS, que se emitan los comprobantes correspondientes, etc.
Por otro lado, si la venta en el POS se registra como anulada o directamente no se registra (ya sea por pedido del operador, o por problemas técnicos) se debe asegurar que en el tercer mensaje de las transacciones correspondientes vaya la orden de ROLLBACK para esta transacción.


1.4.2 Control de operaciones pendientes (mensaje "CheckPending")


Los mensajes de confirmación no son respondidos por VTOL. Además estos mensajes pueden ser embebidos en futuros mensajes de pedido de autorización, lo que da lugar a que algunas operaciones queden pendientes de confirmación entre dos transacciones distintas. El cierre o la eventual caída del punto de venta podrían ocasionar dicha contingencia ya que no existiría un futuro mensaje de confirmación o pedido de autorización con la confirmación embebida.
Ante esta problemática, el esquema de comunicación entre el POS y VTOL posee un mecanismo para asegurar que ninguna transacción quede pendiente de confirmación en VTOL. El mecanismo consta de los siguientes pasos:

  1. El punto de venta envía un mensaje de chequeo de pendientes "CheckPending" a VTOL. Para ello, el mensaje debe contar con el siguiente campo: 71:True.
  2. VTOL verificará la existencia de transacciones pendientes y en caso de existir responderá con un mensaje que, entre otros campos, tendrá los siguientes:
    1. Campo 24: ID de la Transacción pendiente.
    2. Campo 26: TrxIsPending.
  3. El punto de venta envía la confirmación de dicha transacción (Commit/Rollback) y envía un nuevo mensaje de chequeo de pendientes. Esto se podría realizar en un solo paso, enviando un mensaje de chequeo de pendientes con la confirmación embebida.
  4. Se deberá repetir el proceso hasta tanto existan transacciones pendientes en VTOL. Cuando ya no existan VTOL responderá APROBADA.




1.4.3 Tercer Mensaje con múltiples operaciones


También existe la posibilidad de deshabilitar el chequeo de pendientes (Campo 71:False). Esto permite realizar un conjunto de transacciones que podrán ser confirmadas o reversadas posteriormente haciendo que VTOL se dedique a la transacción en curso. Por ejemplo:


 
IMPORTANTE: La implementación del Tercer Mensaje y Mensajes de Control de Pendientes, dependerá del tipo de integración que se realiza en el Punto de Venta, y quedará a elección del cliente utilizar algunos, o todos los Mensajes descritos.



2. Campos de los mensajes

2.1 Formato

La mensajería entre el cliente y VTOL se compone por una serie de campos que tienen un determinado formato.

A continuación se muestra el formato que se utilizará para determinar la representación de cada campo.
El formato de cada campo puede tener los siguientes valores:
NX(F)Caracteres numéricos con longitud fija de X caracteres
NX(V)Caracteres numéricos con longitud variable de máximo X caracteres
AX(F)Caracteres alfabéticos, numéricos y/o especiales con longitud fija de X caracteres
AX(V)Caracteres alfabéticos, numéricos y/o especiales con longitud variable de máximo X caracteres
Si no se especifica (F) o (V) se considera por default una longitud variable (V)


2.2 Transacciones permitidas


En esta sección se detallarán las transacciones soportadas por VTOL así como los campos requeridos u opcionales de cada transacción.

2.2.1 Venta

Requerimiento

#

FieldId

Formato

Requerido

Descripción

1

store

A10(V)

SI

Identificador del sitio originador de la transacción

2

node

N10(V)

SI

Identificación del nodo, en el sitio originador, donde se generó la transacción

3

server

A4(F)

Compatibilidad atrás.

Constante VTOL

4

messageType

A4(F)

Compatibilidad atrás.

Constante Data

6

cardNumber

N19(V)

Obligatorio si es Manual

Número de tarjeta. Sólo presente si el modo de ingreso fue Manual.

7

expiration

N6(F)

Obligatorio si es Manual

Formato YYYYMM Fecha de vencimiento de la tarjeta. Sólo presente si el modo de ingreso fue Manual.

9

track2

A200(V)

Obligatorio para todos los modos de ingreso excepto Manual

Track2 de la tarjeta.
Para transacciones con esquema cifrado activado se enviará un Track Dummy armado con el número de tarjeta recibido por el PIN Pad.
Si el PIN Pad devuelve la tarjeta enmascarada, se deberá enviar a VTOL los caracteres enmascarados como 0 y NO como *,X o cualquier otro.

10

posInputMode

A20(V)

Obligatorio

Modo de Ingreso:

  • Manual – Captura Manual
  • Chip = Tarjeta insertada PIN Pad
  • MSR Chip = Tarjeta deslizada PIN Pad
  • MSR ChipNR = Ingreso Manual PIN Pad
  • MSR ChipError = Fallback PIN Pad
  • Contactless = Contactless EMV
  • MSR Contactless – Captura de los datos de la banda magnética sin contacto

Debe corresponder con el modo de ingreso que devuelve el PIN Pad en el campo entryMode

Valor BACValor VTOL
MNLMSR ChipNR
CHPChip
MSEMSR Chip
COFRecurring
FBKMSR ChipError
CLCContactless
CLBMSR Contactless
OTP-


11

trxType

A20(V)

Obligatorio

Tipo de Transacción:

  • Sale = Compra

12

amount

N12(V)

Obligatorio

Monto de la transacción en centavos. Se envía sin coma.
Ejemplo: 1000 equivale a 10.00
Debe corresponder con el campo totalAmount enviado en el json del campo 201

13

currencyPosCode

A5(V)

Obligatorio

Tipos de Moneda:

  • $ = Pesos
  • U$S = Dólares

14

payments

N2(V)

Obligatorio

Cantidad de cuotas/parcialidades (meses). 2 dígitos como máximo.

15

plan

A1(F)

Obligatorio

Plan

25

dateTime

N14(F)

Obligatorio

Fecha de generación de la trx en el POS. Formato YYYYMMDDHHmmss

53

paymentCondition

A3(V)

Opcional

Condición de pago. Sólo se encuentra presente si existe una condición de pago vinculada con la transacción.

71

checkPendingString

A5(V)

Opcional, default = true

Indica si VTOL debe o no efectuar el chequeo de pendientes (se emplea para pagos parciales de tarjetas)
Valores posibles:

  • True = activa chequeo de pendientes.
  • False = desactiva chequeo de pendientes.

201

additionalMessageData

A2000(V)

Opcional

Cuerpo del mensaje de la petición en formato JSON codificado en base 64


Respuesta

#

FieldId

Tipo

Descripción

1

store

Alfanumérico

Identificador del sitio originador de la transacción

2

node

Numérico

Identificación del nodo, en el sitio originador, donde se generó la transacción

22

authorizationCode

Numérico

Código de autorización generado por el centro autorizador para la transacción.

23

authorizationMode

Alfanumérico

Modo de Autorización:

  • Online = La autorización fue realizada por el Centro Autorizador.
  • Offline = La autorización fue realizada fuera de línea

24

lastTrxId

Numérico

Id de transacción. En caso que el Campo 26 sea TrxIsPending, contendrá el trxId de la transacción pendiente.

25

dateTime

Numérico

Fecha y hora de realización de la transacción en formato YYYYMMDDHHMMSS.

26

responseCode

Alfanumérico

Puede contener uno de los siguientes valores:

  • Iso8583 = la autorización fue procesada. Para evaluar si fue aprobada chequear el campo 27
  • Error = ver sección Código de errores del CORE
  • TrxIsPending: indica si existen transacciones pendientes de confirmar. En este caso, el ID de transacción a confirmar está en el campo 24.

27

isoCode

Numérico

Código de Respuesta emitido por el centro autorizador. 2 dígitos como máximo

28

responseMessage

Alfanumérico

Mensaje de la Respuesta

29

serialNumber

Numérico

Número de la terminal en la que se procesó la transacción.

30

businessNumber

Numérico

Número de comercio en el que se procesó la transacción.

32

ticket

Numérico

Número de Ticket correspondiente a la transacción. 4 dígitos como máximo.

34

hostName

Alfanumérico

Nombre del canal por el cual se autorizó la tarjeta.

35

errorDescription

Alfanumérico

Descripción de error. Sólo se encuentra presente si el valor del campo 26 es "Error".

68

rrn

Numérico

Número de referencia de la transacción informado por el centro autorizador

102

chipTokens

Alfanumérico

Issuer scripts que deben aplicarse a la tarjeta si la transacción utiliza EMV.

126

additionalRespData

Alfanumérico

Respuesta del canal en formato JSON codificada en base 64

161

cardType

Alfanumérico

Tipo de tarjeta, según la configuración en VTOL:

  • Crédito
  • Débito
    Sin Clasificar

166

trxReferenceNumber

Numérico

  • Identificador único 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.

287

systemTrace

Numérico

Número único de la transacción informado por el centro autorizador

288

giftMessage

Alfanumérico

Mensaje de premio regresado por el host en caso que el comercio afiliado tenga algún convenio para la entrega de premios o se requiera presentar algún mensaje adicional en el voucher.

289

acquirerTrxId

Alfanumérico

Identificación de la transacción en el banco de datos del adquiriente

290

taxDiscount

Numérico

Monto de devolución de impuesto.
En algún país se puede presentar que el autorizador aplique una devolución en el monto del impuesto. Si este dato está presente (Inclusive monto 0) debe imprimirse con la leyenda DEVOL. ISV y debe restarse al monto total para la impresión del comprobante.
Formato: $$$$$$$$$$¢¢

309

cardBrand

Alfanumérico

Marca de tarjeta. Informado por Centro Autorizador


2.2.2 Devolución

Requerimiento

#

FieldId

Formato

Requerido

Descripción

1

store

A10(V)

SI

Identificador del sitio originador de la transacción

2

node

N10(V)

SI

Identificación del nodo, en el sitio originador, donde se generó la transacción

3

server

A4(F)

Compatibilidad atrás.

Constante VTOL

4

messageType

A4(F)

Compatibilidad atrás.

Constante Data

6

cardNumber

N19(V)

Obligatorio si es Manual

Número de tarjeta. Sólo presente si el modo de ingreso fue Manual.

7

expiration

N6(F)

Obligatorio si es Manual

Formato YYYYMM Fecha de vencimiento de la tarjeta. Sólo presente si el modo de ingreso fue Manual.

8

cvc

A4(V)

Obligatorio si es Manual. Además es opcional según la tarjeta.

Código de seguridad de la tarjeta. Sólo presente si el modo de ingreso fue Manual.

9

track2

A200(V)

Obligatorio para todos los modos de ingreso excepto Manual

Track2 de la tarjeta.
Para transacciones con esquema cifrado activado se enviará un Track Dummy correspondiente a una tarjeta del banco adquiriente

10

posInputMode

A20(V)

Obligatorio

Modo de Ingreso:

  • Manual – Captura Manual
  • Chip = Tarjeta insertada PIN Pad
  • MSR Chip = Tarjeta deslizada PIN Pad
  • MSR ChipNR = Ingreso Manual PIN Pad
  • MSR ChipError = Fallback PIN Pad
  • Contactless = Contactless EMV
  • MSR Contactless – Captura de los datos de la banda magnética sin contacto


Debe corresponder con el modo de ingreso que devuelve el PIN Pad en el campo entryMode

Valor BACValor VTOL
MNLMSR ChipNR
CHPChip
MSEMSR Chip
COFRecurring
FBKMSR ChipError
CLCContactless
CLBMSR Contactless
OTP-


11

trxType

A20(V)

Obligatorio

Tipo de Transacción:

  • Refund = Devolución

12

amount

N12(V)

Obligatorio

Monto de la transacción en centavos. Se envía sin coma.
Ejemplo: 1000 equivale a 10.00
Debe corresponder con el campo totalAmount enviado en el json del campo 201

13

currencyPosCode

A5(V)

Obligatorio

Tipos de Moneda:

  • $ = Pesos
  • U$S = Dólares

14

payments

N2(V)

Obligatorio

Cantidad de cuotas/parcialidades (meses). 2 dígitos como máximo.

15

plan

A1(F)

Obligatorio

Plan

16

originalDate

N8(F)

Obligatorio

Fecha de la transacción original en el formato YYYYMMDD.

17

originalTrxTicketNr

N6(V)

Obligatorio

Número de ticket de la transacción original. Este valor fue informado al POS en el campo 32 de la venta y es único por cada caja

25

dateTime

N14(F)

Obligatorio

Fecha de generación de la trx en el POS. Formato YYYYMMDDHHmmss

53

paymentCondition

A3(V)

Opcional

Condición de pago. Sólo se encuentra presente si existe una condición de pago vinculada con la transacción.

66

track1

A100(V)

Opcional a su lectura

Criptograma obtenido de la lectura del track 1 de la tarjeta.
En caso de que entryMode sea diferente a Manual

71

checkPendingString

A5(V)

Opcional, default = true

Indica si VTOL debe o no efectuar el chequeo de pendientes (se emplea para pagos parciales de tarjetas)
Valores posibles:

  • True = activa chequeo de pendientes.
  • False = desactiva chequeo de pendientes.

139

customerRef

A20(V)

Opcional

Número de referencia de comercio para trazabilidad.

201

additionalMessageData

A2000(V)

Opcional

Cuerpo del mensaje de la petición en formato JSON codificado en base 64

283

keyLabel

N4(F)

Condicional

Etiqueta de la llave utilizada para encripción

284

keySerialNumber

A20(V)

Condicional

Key Serial Number.
Debe ser enviado en caso de que se utilice el algoritmo DUKPT para el descifrado de los datos.
Formato Hexadecimal

286

encryptedTrack2

A100(V)

Condicional a su lectura

Criptograma obtenido de la lectura del track 2 de la tarjeta.
En caso de que inputMode sea diferente a Manual


Respuesta

#

FieldId

Tipo

Descripción

1

store

Alfanumérico

Identificador del sitio originador de la transacción

2

node

Numérico

Identificación del nodo, en el sitio originador, donde se generó la transacción

22

authorizationCode

Numérico

Código de autorización generado por el centro autorizador para la transacción.

23

authorizationMode

Alfanumérico

Modo de Autorización:

  • Online = La autorización fue realizada por el Centro Autorizador.
  • Offhost = La autorización fue realizada internamente por VTOL.
  • Offline = La autorización fue realizada localmente por el POS.

24

lastTrxId

Numérico

Id de transacción. En caso que el Campo 26 sea TrxIsPending, contendrá el trxId de la transacción pendiente.

25

dateTime

Numérico

Fecha y hora de realización de la transacción en formato YYYYMMDDHHMMSS.

26

responseCode

Alfanumérico

Puede contener uno de los siguientes valores:

  • Iso8583 = la autorización fue procesada. Para evaluar si fue aprobada chequear el campo 27
  • Error = ver sección Código de errores del CORE
  • TrxIsPending = indica si existen transacciones pendientes de confirmar. En este caso, el ID de transacción a confirmar está en el campo 24.

27

isoCode

Numérico

Código de Respuesta emitido por el centro autorizador

28

responseMessage

Alfanumérico

Mensaje de la Respuesta

29

serialNumber

Numérico

Número de la terminal en la que se procesó la transacción.

30

businessNumber

Numérico

Número de comercio en el que se procesó la transacción.

32

ticket

Numérico

Número de Ticket correspondiente a la transacción.

34

hostName

Alfanumérico

Nombre del canal por el cual se autorizó la tarjeta.

35

errorDescription

Alfanumérico

Descripción de error. Sólo se encuentra presente si el valor del campo 26 es "Error".

68

rrn

Numérico

Número de referencia de la transacción informado por el centro autorizador

161

cardType

Alfanumérico

Tipo de tarjeta, según la configuración en VTOL:

  • Crédito
  • Débito
  • Sin Clasificar

166

trxReferenceNumber

Numérico

Identificador único 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.

287

systemTrace

Numérico

Número único de la transacción informado por el centro autorizador

288

giftMessage

Alfanumérico

Mensaje de premio regresado por el host en caso que el comercio afiliado tenga algún convenio para la entrega de premios o se requiera presentar algún mensaje adicional en el voucher.

289

acquirerTrxId

Alfanumérico

Identificación de la transacción en el banco de datos del adquiriente

309

cardBrand

Alfanumérico

Marca de tarjeta. Informado por Centro Autorizador


2.2.3 Anulación

Requerimiento

#

FieldId

Formato

Requerido

Descripción

1

store

A10(V)

SI

Identificador del sitio originador de la transacción

2

node

N10(V)

SI

Identificación del nodo, en el sitio originador, donde se generó la transacción

3

server

A4(F)

Compatibilidad atrás.

Constante VTOL

4

messageType

A4(F)

Compatibilidad atrás.

Constante Data

6

cardNumber

N19(V)

Obligatorio si es Manual

Número de tarjeta. Sólo presente si el modo de ingreso fue Manual.

9

track2

A200(V)

Obligatorio para todos los modos de ingreso excepto Manual

Track2 de la tarjeta.
Para transacciones con esquema cifrado activado se enviará un Track Dummy correspondiente a una tarjeta del banco adquiriente

10

posInputMode

A20(V)

Obligatorio

Modo de Ingreso:

  • Manual – Captura Manual
  • Chip = Tarjeta insertada PIN Pad
  • MSR Chip = Tarjeta deslizada PIN Pad
  • MSR ChipNR = Ingreso Manual PIN Pad
  • MSR ChipError = Fallback PIN Pad
  • Contactless = Contactless EMV
  • MSR Contactless – Captura de los datos de la banda magnética sin contacto

Debe corresponder con el modo de ingreso que devuelve el PIN Pad en el campo entryMode

Valor BACValor VTOL

MNL

MSR ChipNR

CHP

Chip

MSE

MSR Chip

COF

Recurring

FBK

MSR ChipError

CLC

Contactless

CLB

MSR Contactless

OTP

-


11

trxType

A20(V)

Obligatorio

Tipo de Transacción:

  • VoidSale = Anulación

12

amount

N12(V)

Obligatorio

Monto de la transacción en centavos. Se envía sin coma.
Debe ser el mismo monto que la venta original.
Ejemplo: 1000 equivale a 10.00
Debe corresponder con el campo totalAmount enviado en el json del campo 201

13

currencyPosCode

A5(V)

Obligatorio

Tipos de Moneda:

  • $ = Pesos
  • U$S = Dólares

14

payments

N2(V)

Obligatorio

Cantidad de cuotas/parcialidades (meses). 2 dígitos como máximo. Debe ser el mismo valor que la venta original.

15

plan

A1(F)

Obligatorio

Plan. Debe ser el mismo valor que la venta original.

16

originalDate

N8(F)

Obligatorio si no se manda el campo 167

Fecha de la transacción original en el formato YYYYMMDD.

17

originalTrxTicketNr

N6(V)

Obligatorio si no se manda el campo 167

Número de ticket de la transacción original. Este valor fue informado al POS en el campo 32 de la venta y es único por cada caja

25

dateTime

N14(F)

Obligatorio

Fecha de generación de la trx en el POS. Formato YYYYMMDDHHmmss

53

paymentCondition

A3(V)

Opcional

Condición de pago. Sólo se encuentra presente si existe una condición de pago vinculada con la transacción.

71

checkPendingString

A5(V)

Opcional, default = true

Indica si VTOL debe o no efectuar el chequeo de pendientes (se emplea para pagos parciales de tarjetas)
Valores posibles:

  • True = activa chequeo de pendientes.
  • False = desactiva chequeo de pendientes.

139

customerRef

A20(V)

Opcional

Número de referencia de comercio para trazabilidad.

167

originalTrxReferenceNumber

N20(V)

Obligatorio si no se mandan los campos 16 y 17

Número de referencia de la transacción original. Es el valor recibido en el campo 166 de la respuesta a la venta original.

201

additionalMessageData

A2000(V)

Opcional

Cuerpo del mensaje de la petición en formato JSON codificado en base 64


Respuesta

#

FieldId

Tipo

Descripción

1

store

Alfanumérico

Identificador del sitio originador de la transacción

2

node

Numérico

Identificación del nodo, en el sitio originador, donde se generó la transacción

22

authorizationCode

Numérico

Código de autorización generado por el centro autorizador para la transacción.

23

authorizationMode

Alfanumérico

Modo de Autorización:

  • Online = La autorización fue realizada por el Centro Autorizador.
  • Offhost = La autorización fue realizada internamente por VTOL.
  • Offline = La autorización fue realizada localmente por el POS.

24

lastTrxId

Numérico

Id de transacción. En caso que el Campo 26 sea TrxIsPending, contendrá el trxId de la transacción pendiente.

25

dateTime

Numérico

Fecha y hora de realización de la transacción en formato YYYYMMDDHHMMSS.

26

responseCode

Alfanumérico

Puede contener uno de los siguientes valores:

  • Iso8583 = la autorización fue procesada. Para evaluar si fue aprobada chequear el campo 27
  • Error = ver sección Código de errores del CORE
  • TrxIsPending = indica si existen transacciones pendientes de confirmar. En este caso, el ID de transacción a confirmar está en el campo 24.

27

isoCode

Numérico

Código de Respuesta emitido por el centro autorizador

28

responseMessage

Alfanumérico

Mensaje de la Respuesta

29

serialNumber

Numérico

Número de la terminal en la que se procesó la transacción.

30

businessNumber

Numérico

Número de comercio en el que se procesó la transacción.

32

ticket

Numérico

Número de Ticket correspondiente a la transacción.

34

hostName

Alfanumérico

Nombre del canal por el cual se autorizó la tarjeta.

35

errorDescription

Alfanumérico

Descripción de error. Sólo se encuentra presente si el valor del campo 26 es "Error".

68

rrn

Numérico

Número de referencia de la transacción informado por el centro autorizador

161

cardType

Alfanumérico

Tipo de tarjeta, según la configuración en VTOL:

  • Crédito
  • Débito
  • Sin Clasificar

166

trxReferenceNumber

Numérico

Identificador único 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.

287

systemTrace

Numérico

Número único de la transacción informado por el centro autorizador

289

acquirerTrxId

Alfanumérico

Identificación de la transacción en el banco de datos del adquiriente


2.2.4 Tercer Mensaje

Requerimiento

#

FieldId

Tipo

Descripción

1

store

Alfanumérico

Identificador del sitio originador de la transacción

2

node

Numérico

Identificación del nodo, en el sitio originador, donde se generó la transacción

3

server

Alfanumérico

Constante VTOL

4

messageType

Alfanumérico

Constante Data

11

trxType

Alfanumérico

Tipo de Transacción:

  • UnSyncCompletion = Mensaje de completamiento de transacción ("tercer mensaje")

19

lastTrxAction

Alfanumérico

Acción a realizar sobre la Transacción:

  • Commit = Confirma la transacción
  • Rollback = Reversa la transacción

24

lastTrxId

Numérico

Id de transacción a confirmar / reversar.

25

dateTime

Numérico

Fecha de generación de la trx en el POS. Formato YYYYMMDDHHmmss


Respuesta

El tercer mensaje no tiene respuesta, salvo que esté prendido el flag de chequeo de transacciones pendientes.


2.2.5 Tercer Mensaje Embebido


El tercer mensaje puede enviarse embebido en otro requerimiento. Así en una misma transacción se enviará un requerimiento y la confirmación o reverso de una transacción pendiente. Para ello, deberán ser agregados los siguientes campos a la transacción en curso:

Requerimiento

#

FieldId

Tipo

Descripción

19

lastTrxAction

Alfanumérico

Acción a realizar sobre la Transacción:

  • Commit = Confirma la transacción
  • Rollback = Reversa la transacción

24

lastTrxId

Numérico

Id de transacción a confirmar / reversar.


Respuesta

El tercer mensaje embebido, al igual que el Tercer Mensaje, no tiene respuesta. De todas formas, sí existe respuesta para la transacción que lo embebe.


2.2.6 Chequeo de Pendientes


El mensaje de chequeo de pendientes sirve para averiguar si el POS que envía la transacción tiene alguna transacción pendiente de confirmación.

Requerimiento

#

FieldId

Tipo

Descripción

1

store

Alfanumérico

Identificador del sitio originador de la transacción

2

node

Numérico

Identificación del nodo, en el sitio originador, donde se generó la transacción

3

server

Alfanumérico

Identificador del Server que procesará la transacción. (en el caso de eVTOL será 'VTOL')

4

messageType

Alfanumérico

Tipo de Mensaje:

  • Control = Mensaje de Control, para uso interno por parte de un módulo en su comunicación con el server.
  • Data = Mensaje de la Aplicación cliente.

11

trxType

Alfanumérico

Tipo de Transacción:

  • CheckPending = Mensaje de chequeo de pendientes.

25

dateTime

Numérico

Fecha de generación de la trx en el POS. Formato YYYYMMDDHHmmss


Respuesta

#

FieldId

Tipo

Descripción

2

node

Numérico

Identificación del nodo, en el sitio originador, donde se generó la transacción.
OPCIONAL: Aparece si campo 26 es TrxIsPending.

24

trxId

Numérico

OPCIONAL: En caso que el Campo 26 sea TrxIsPending, contendrá el trxId de la transacción pendiente.

25

dateTime

Numérico

Fecha y hora de realización de la transacción en formato YYYYMMDDHHMMSS.

26

responseCode

Alfanumérico

Puede contener uno de los siguientes valores:

  • Iso8583 = la autorización fue procesada. Para evaluar si fue aprobada chequear el campo 27
  • Error = ver sección Código de errores del CORE
  • TrxIsPending: indica si existen transacciones pendientes de confirmar. En este caso, el ID de transacción a confirmar está en el campo 24.

27

isoCode

Numérico

Código de Respuesta emitido por VTOL. OPCIONAL: Aparece si campo 26 no es TrxIsPending.

28

responseMessage

Alfanumérico

Mensaje de respuesta. Por ejemplo "Aprobada"
OPCIONAL: Aparece si campo 26 no es TrxIsPending.


Nota: si la respuesta es "Aprobada" significa que no hay transacciones pendientes.


2.2.7 Chequeo de pendientes en lista


Requerimiento

#

FieldId

Tipo

Obligatorio

Description

1

store

Alfanumérico

Obligatorio

Identificador del sitio originador de la transacción

2

node

Numérico

Obligatorio si la tienda no es virtual

Identificación del nodo, en el sitio originador, donde se generó la transacción
Este campo no se envía cuando la tienda con el código store está configurada como una tienda virtual en VTOL.

3

server

Alfanumérico

Obligatorio

Valor constante 'VTOL'

4

messageType

Alfanumérico

Obligatorio

Valor constante Data

11

trxType

Alfanumérico

Obligatorio

Tipo de transacción:

  • CheckPendingList
    Mensaje para obtener una lista de todas las transacciones pendientes para un originador o para todos los originadores dependiendo del campo 162.

25

dateTime

Numérico

Obligatorio

Fecha de generación de la transacción en el POS. Formato YYYYMMDDHHmmss

162

storeFilter

Alfanumérico

Opcional

ID del originador del que se desea obtener la lista de transacciones pendientes. Si este campo no está presente se devolverá la lista de las transacciones pendientes para todos los originadores.

163

Threshold

Alfanumérico

Opcional; default=0

Número de minutos hacia atrás que se ignoraran para buscar transacciones pendientes.
Todas las transacciones hechas entre la hora actual y (hora actual - Threshold) no serán incluidas en la respuesta.
Para incluir todas las transacciones enviar el valor 0.

Ejemplo:
Field 163 = 60 VTOL buscará todas las transacciones pendientes que existan y que no sean más recientes de 60 minutos. Es decir, si actualmente son las 10:00, las transacciones realizadas entre las 9:00 y las 10:00 no serán consideradas.
Field 163 = 1440 VTOL ignorará todas las transacciones pendientes del último día y la respuesta sólo incluirá transacciones pendientes del día anterior y más antiguas.

169

nodeFilter

Numérico

Opcional

Identificación de nodos, en el sitio originador, del que se desea obtener la lista de transacciones pendientes dado un rango de nodos.
El formato de este campo es:
Field 169 = numeroNodoInicial,numeroNodoFinal
Si este campo no está presente o el formato no es correcto se devolverá la lista de las transacciones pendientes para todos los originadores.
Ejemplo de envió de campo:
Field 169 = 1,10


Respuesta

#

FieldId

Tipo

Descripción

2

node

Numeric

Identificación del nodo, en el sitio originador, donde se generó la transacción

25

dateTime

Numeric

Fecha y hora de realización de la transacción en formato YYYYMMDDHHMMSS.

26

responseCode

Alphanumeric

Puede contener uno de los siguientes valores:

  • Iso8583 = la autorización fue procesada. Para evaluar si fue aprobada chequear el campo 27
  • Error = ver sección Código de errores del CORE
  • TrxIsPending: indica si existen transacciones pendientes de confirmar. En este caso, la lista de transacciones pendientes está en el campo 161.

27

isoCode

Numeric

Código de Respuesta ISO-8583 emitido por el centro autorizador. 2 dígitos como máximo
OPCIONAL: Aparece si campo 26 no es TrxIsPending.

28

responseMessage

Alphanumeric

Mensaje de la Respuesta ISO-8583
OPCIONAL: Aparece si campo 26 no es TrxIsPending.

161

trxIdList

Alphanumeric

Lista de transacciones pendientes de confirmación por el originador en el siguiente formato:

[Store&Node&TrxIdList|Store&Node&TrxIdList|…]

Donde:

  • Store: Código del originador al que pertenece la lista de transacciones pendientes.
  • Node: Código de nodo al que pertenecen las transacciones pendientes. Para el caso de originadores virtuales, se devuelve la constante V
  • TrxIdList: Lista de los IDs de las transacciones pendientes de confirmación, separados por coma.

Ejemplo:

[0000000001&0000000006&4,2,3]

Y para un originador virtual:

[0000000006&V&13021512453900002321,13021512453600002320]


2.2.8 Tercer mensaje en lista

Requerimiento

#

FieldId

Tipo

Obligatorio

Descripción

1

store

Alfanumérico

Obligatorio

Identificador del sitio originador de la transacción

2

node

Numérico

Obligatorio si la tienda no es virtual

Identificación del nodo, en el sitio originador, donde se generó la transacción
Este campo no se envía cuando la tienda con el código store está configurada como una tienda virtual en VTOL.

3

server

Alfanumérico

Obligatorio

Constante "VTOL"

4

messageType

Alfanumérico

Obligatorio

Constante: "Data"

11

trxType

Alfanumérico

Obligatorio

Tipo de transacción

  • UnSyncCompletionList = Mensaje de completamiento de transacción ("tercer mensaje")

19

lastTrxAction

Alfanumérico

Obligatorio

Acción a realizar sobre las transacciones del campo 161:

  • Commit = Confirma la transacción
  • Rollback = Reversa la transacción

25

dateTime

Numérico

Obligatorio

Fecha de generación de la trx en el POS. Formato YYYYMMDDHHmmss

161

lastTrxIdList

Alfanumérico

Obligatorio

Lista de transacciones a confirmar/reversar para una tienda y nodo en el siguiente formato:

[Store&Node&TrxIdList|Store&Node&TrxIdList|…]

Donde:

  • Store – Originador a la que pertenecen las transacciones en el subcampo TrxIdList
  • Node – Código de Nodo al que pertenecen las transacciones en el subcampo TrxIdList. Para un originador virtual, enviar este subcampo con valor constante V
  • TrxIdList – Listado de los IDs de las transacciones a confirmar/reversar, separados por comas.


Ejemplo:

{11:UnSyncCompletionList;1:1;2:1;25:20130511213613;19:Commit;3:VTOL;4:Data;161:[1&1&50,51,52|1&2&84,95|2&1&99,124]}

En este ejemplo, de acuerdo a los campos 19 y 161, VTOL tomará las siguientes acciones sobre las transacciones:

Store

Node

Transaction Id

Action

1

1

50,51,52

Commit

1

2

84,95

Commit

2

1

99,124

Commit


Para el caso de un originador virtual:


{11:UnSyncCompletionList;1:1;2:1;25:20130511213613;19:Commit;3:VTOL;4:Data;161:[1&V&50000000000000000000,51000000000000000000,52000000000000000000,84000000000000000000,95000000000000000000|2&V&99000000000000000000,124000000000000000000]}


Store

Transaction Id

Action

1

50000000000000000000,51000000000000000000,52000000000000000000, 84000000000000000000,95000000000000000000

Commit

2

99000000000000000000,124000000000000000000

Commit


Respuesta

El tercer mensaje en lista no tiene respuesta.


2.2.9 Echo


Este mensaje puede ser utilizado para monitorear que VTOL esté levantado. El propósito es saber si VTOL server está ejecutándose. No devuelve ninguna información adicional de salud de los canales, locales, etc.

Requerimiento

#

FieldId

Tipo

Obligatorio

Description

11

trxType

Alfanumérico

Obligatorio

Tipo de transacción:

  • Echo


El contenido del mensaje de requerimiento a nivel bytes es el siguiente:

09 00 00 00 00 01 7b 31 31 3a 45 63 68 6f 7d

9 0 0 0 0 1 123 49 49 58 69 99 104 111 125

......{11:Echo}

*el punto "." representa caracteres no imprimibles

Los primeros 6 bytes del mensaje representan el header del protocolo llavecitas. Ver sección 1.1.1

Respuesta

#

FieldId

Tipo

Descripción

25

dateTime

Numeric

Fecha y hora de realización de la transacción en formato YYYYMMDDHHMMSS.

28

responseMessage

Alfanumérico

Mensaje de la Respuesta valor constante:
"OK"



El contenido del mensaje de respuesta a nivel bytes es el siguiente:

19 00 00 00 00 00 7b 32 35 3a 32 30 31 36 31 31 30 39 31 33 34 33 30 36 3b 32 38 3a 4f 4b 7d 00

25 0 0 0 0 0 123 50 53 58 50 48 49 54 49 49 48 57 49 51 52 52 50 51 59 50 56 58 79 75 125

......{25:20161109134306;28:OK}

*el punto "." representa caracteres no imprimibles

Los primeros 6 bytes del mensaje representan el header del protocolo llavecitas.

2.3 Códigos de Respuesta al POS


La respuesta que el POS recibe de VTOL se encuentra en los siguientes campos:

  1. Campo 27: Código de Respuesta
  2. Campo 28: Descripción de la Respuesta


A continuación se detallan las respuestas posibles con una breve descripción de cada una:

Únicamente el mensaje 00-APROBADA es totalmente satisfactorio.

Si se recibe el mensaje 08-ACEPTE CON IDENTIFICACIÓN la transacción ha sido aprobada pero se debe pedir la identificación al cliente. En caso de que se encuentre algo sospechoso en la identificación se debe anular la transacción desde el sistema.

Código

Descripción

00

Aprobada

01

Consulte verbal

02

Consulte verbal

03

Comercio inválido

04

Capture tarjeta

05

Denegada

08

Acepte con identificación

09

Aceptado

10

Aceptado por '$x.xx'

12

Transacción inválida

13

Cantidad inválida

14

Tarjeta inválida

19

Reintente transacción

21

Sin transacciones

25

Reintente TR NT

41

Retener tarjeta

43

Retener tarjeta

51

Denegada FI

54

Tarjeta vencida

57

Transacción no permitida

58

Transacción no permitida

60

Denegada

61

Denegada

62

Denegada

63

Denegada

75

Denegada

78

Tran. No encontrado

79

Lote ya abierto

80

Error en número de lote

85

Lote no existe

89

Terminal inválido

94

Transacción duplicada

95

Espere transmisión

96

Error en sistema


Código de seguridad inválido


Error de comunicación


Reintente cierre


Monto inválido


Terminal inválida


Tipo de mensaje inválido


Sistema no disponible


Reintente transacción TO


Reintente transacción ND


Transacción inválida


Reintente to REM


Trans. ya procesada


Error en lectura de track


Error acceso a BD


Error interno del WS


Usuario inválido


Rechazado por sistema de recarga


Sistema de recarga no disponible


Número de teléfono inválido


Denegado por coinca


Billetera no existe


OTP Vencido


OTP Inválido


Moneda inválida


OTP Cancelado


OTP Expirado


Fondos insuficientes


Sup. Limite billetera


Monto no autorizado


No acepta anulación

'99'

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


Chiptokens Invalido


Campo emvFullGradeIcc Inválido


Error script


Error criptograma


Error cardSequenceNumber


Check-in no confirmado



Nota: La respuesta con código '99' representa un error en el procesamiento interno de VTOL, independientemente de la interacción con el Centro Autorizador. Dicho error no debe ser manejado por el POS.


2.4 Código de errores del CORE

Es posible que VTOL responda "Error" en el campo 26 del mensaje de respuesta. Éste valor indica que se ha producido un error dentro del flujo inicial y principal del core de VTOL, previo al procesamiento de las reglas de negocio asociadas al tipo de transacción.
Normalmente los casos en donde se puede dar ésta situación son los siguientes:

Por ejemplo:


El mensaje de respuesta tiene siempre el siguiente formato:

Dónde: