Versões comparadas

Chave

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


worddav5aed48d39692ce94c73a51a61eb81fe5.pngImage RemovedImage Added

...

Manual librería VTOLClient Java

...



VTOL CLIENT JAVA - Manual librería 1.1.10




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


Expandir
titleExpandir revisiones


Fecha

Revisión

Observaciones

 24/01/2005

1.0

Generación del documento

24/11/2005

1.1

Inclusión campo 74,75

21/03/2006

1.2

Encriptacion

19/07/2006

1.3

Agregado campos para transacciones de debito

22/09/2006

1.4

Libreria para vb

02/10/2006

1.5

Agregado y actualización de información de la librería JAVA.

14/05/2007

1.6

Reestructuración del documento. Incorporación de información del protocolo

...

VTOL (llavecitas)

05/10/2010

1.7

Agregado de parámetro de configuración librería dinámica TOTALNODESNUMBER y INITIALNODENUMBER

19/04/2012

1.8

Agregado de mayor flexibilidad para configurar los archivos de configuración. Agregado de logeo nativo de Java.

01/09/2014

1.9

Revisión de parámetros de configuración de la librería.

10/02/2015

1.10

Agregado de la modalidad VirtualVTOLClient para locales virtuales donde VTOL Server gestionará la asignación de nodos.

01/12/2016

1.11

Agregado de comunicación sobre protocolo SSL. Detalle de los nuevos parámetros de configuración disponibles para SSL.

28/03/20181.12Modificación en las revisiones del documento.

...





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


Expandir
titleExpandir contenido

Índice



1. Introducción

1.1 Introducción

...

1.2 Protocolo de comunicación POS - VTOL

Synthesis Se establece un protocolo de comunicación para la interacción POS - VTOL, el cual se denomina "Protocolo SynthesisVTOL" 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 VTOL 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.

...

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)
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á:

...


Las siguientes constantes deben ser inicializadas para hacer uso de la librería:


Nombre constante

Descripción

HOSTIP

 

Identifica el parámetro que se usa para determinar la IP de VTOL Server

HOSTPORT

 

Identifica el port TCP al cual se tiene que conectar con VTOL Server

RESPONSETIMEOUT

[Opcional]

Tiempo máximo en (milisegundos) de espera para un respuesta de VTOL server antes de salir por timeout. Superado este tiempo se lanza la excepción TimeoutClientException.

 


Valor por defecto 30000.

TIMEOUTCONNECTIONHOST

[Opcional]

Tiempo máximo de conexión a VTOL Server expresado en milisegundos. Superado este valor y no lograda la conexión, se arroja la excepción VtolClientException

 


Un valor de cero significa infinito.

 


Valor por defecto 20000.

TIMEOUTOBTAINNODE

 

Tiempo máximo en milisegundos a esperará antes de arrojar una excepción al tratar de obtener un nodo.

TIMEOUTEXPIRATIONNODE

 

Identifica el parámetro utilizado para indicar el tiempo en liberar un nodo. En caso de no liberarse dentro de ese tiempo, será liberado por la aplicación.

USEVTOLCLIENTFINDER

 

Establece la utilización o no del VTOLClientFinder. 
El VTOL CLIENT FINDER es una manera de determinar qué acción tomar en caso de existir una transacción pendiente al momento de intentar autorizar una transacción. 
Si éste parámetro está desactivado, entonces ante una respuesta de transacción pendiente, se le devolverá el control al código de la aplicación integradora. 
Si éste parámetro está activado, entonces se tomará la acción (Commit o Rollback) que es determinado por el método configurado en el parámetro CLIENTFINDER 
Valores posible:

  True

  False (valor por defecto)

CLIENTFINDER

[Opcional]

Este parámetro será utilizado si está activo el parámetro USEVTOLCLIENTFINDER
Valores posible:

  R (siempre determinada realizar un Rollback de la transacción pendiente)

  C (siempre determinada realizar un Commit de la transacción pendiente, valor por defecto) 

Nota: Existe la posibilidad de definir una implementación propia de la estrategia a utilizar para determinar la acción ante una transacción pendiente. 
La manera de hacerlo consiste en implementar la interfaz

     ar.com.synthesis.vtol.client.VtolClientFinder

y configurarla antes de inicializar la librería, por ejemplo:

 vtolClientLib.setVtolClientFinder(new MyTrxFinder());

 vtolClientLib.init();

USEENCRYPTEDDATA

Establece la utilización de encriptación en los mensajes. 
Valores posible:

  • True
  • False (valor por defecto)

ENCRYPTER

[Opcional]
Tipo de encriptación (este parámetro es utilizado si está activo el parámetro USEENCRYPTEDDATA
Valores posible:

  • DES (valor por defecto)
  • DESede

ENCRYPTKEY

[Opcional]
Clave a utilizar en la encriptacion. En el caso del algoritmo DES, su largo debe ser de minimo 8 caracteres, En el caso del triple DES debe ser mas de minimo 24 caracteres. (este parametro es opcional si está activo el parámetro USEENCRYPTEDDATA)

USEPENDINGAUTOMATIC

 


[Opcional]
Si está activo, cuando la librería envía una transaccion y VTOL responde con transaccion pendiente (incluye el trxId de la pendiente), si el trxId coincide con el trxId de la última transacción enviada, entonces hace un commit automático. Si no coincide hace un rollback automático. 
Este parámetro no debe usarse en conjunto con el parámetro USEVTOLCLIENTFINDER 
Valores posible:

  True

  False (valor por defecto)

TOTALNODESNUMBER

 


[Opcional]
Representa el número de nodos que estarán disponibles para el cliente de VTOL dinámico. Para garantizar un adecuado funcionamiento del parámetro es necesario que éste esté fijado al número de terminales + 1 que se tengan configuradas en VTOL. Este parámetro es necesario únicamente para versiones distintas a VTOL NT. 
Si este parámetro se encuentra declarado ya sea en inicialización o en el archivo de parámetros preconfigurados (ver sección 2.2.6) entonces no se hace el hadshake. Si por el contrario no se encuentra este parámetro en ninguna de las declaraciones antes mencionadas, la librería enviará el handshake. 
Si este parámetro es nulo o es cero entonces se utilizará el handshake para inicializar los nodos dinámicos.

DEFAULTTRANSACTIONSTATUS

 


[Opcional]
Indica el estado por defecto de las transacciones cuando se está utilzando el parámetro TOTALNODESNUMBER ya sea a través de la inicialización de la librería o bien a través de los parámetros preconfigurados. Si el parámetro de TOTALNODESNUMER no está configurado, entonces el transactionStatus se pasa por alto (emula el estado de la última transaccion procesada por el nodo informado por el HandShake, uso por compatiblidad hacia atrás). 
Nota: Es recomendable no utilizar éste parámetro salvo por recomendación de un especialista 
Valores posible:

  C (valor por defecto)

  R

INITIALNODENUMBER

 


[Opcional]
Indica el numero de nodo desde donde se comenzará a crear los nodos (si no se usa el HandShake). Este parámetro es opcional, y si no se configura se tomará el valor por defecto 1. Este valor debe ser > 0. 
Por último este parámetro solo tiene sentido para el uso de la librería dinámica.

VTOLCLIENTLIBCONFIGPATH

 


[Opcional]
Directorio donde se encuentra la configuracion de la librería. Si éste parámetro no está seteado, entonces se usuará la configuración base.

PRECONFIGUREDFIELDSFILENAME

 


[Opcional]
Nombre del archivo (sin PATH) XML que contiene la configuracion de los campos pre-configurados. Por defecto es vtol-client-preconfigured-fields.xml

PRECONFIGUREDFIELD

 


[Opcional]
Proporciona la funcionalidad adicional de indicar campos previamente configurados que se enviarán directamente en los mensajes a VTOL. El valor del parámetro está compuesto por 4 valores separados por comas, a continuación se detallan los mismos:

Posición

Definición

Valores disponibles

1

Número de campo

Representa el número de campo que debe estar dado de alta en la mensajería de VTOL con el POS.

2

Valor del campo

Es el valor que se enviará en la mensajería de VTOL con el POS

3

Tienda para el que aplica

Se puede indicar alguno de los siguientes valores:

( * ) que indica que se aplica para todas las tiendas o bien el número específico de la tienda.

4

Nodo para el que aplica

Se puede indicar alguno de los siguientes valores:

( * ) que indica que se aplica para todos los nodos o bien el número específico del nodo que enviará el parámetro indicado.


SSLENABLED

Indica cuando la comunicación con VTOL está sobre SSL:

  • True
  • False (valor por defecto)

SSLKEYSTORE

Ruta del archivo que contiene los certificados que se usaran para la validación. OBLIGATORIO cuando el parámetro SSLENABLED es True.

SSLKEYSTOREPASSWORD

Contraseña del archivo que contiene los certificados que se usaran para la validación. OBLIGATORIO cuando el parámetro SSLENABLED es True. Valor por defecto: nosotros.

SSLPROTOCOL

Versión de protocolo SSL/TLS. OBLIGATORIO cuando el parámetro SSLENABLED es True. Valores posibles:

  • SSL: Supports some version of SSL; may support other versions.
  • SSLv2: Supports SSL version 2 or later; may support other versions.
  • SSLv3: Supports SSL version 3; may support other versions.
  • TLS: Supports some version of TLS; may support other versions.
  • TLSv1: Supports RFC 2246: TLS version 1.0; may support other versions.
  • TLSv1.1: Supports RFC 4346: TLS version 1.1; may support other versions.
  • TLSv1.2: Supports RFC 5246: TLS version 1.2; may support other versions.


2.2.3 Métodos de VTOLClient

Method Summary

 ConnectionManager

createConnectionManager() 
          Devuelve una instancia de la clase, con los valores de las constantes 2, 3 y 10.

 TransactionFormat

createTransactionFormat() 
          Devuelve una nueva instancia del objeto VtolClientTransactionFormat.

static VtolClient

getDynamicVtolClient(java.lang.String _originator) 
          Devuelve una unica instancia del objeto DinamicVtolClient seteandole como originador a _originator.

 java.lang.String

getOriginator() 
          Devuelve el originador actual

 java.lang.String

getParameter(java.lang.String _nameString) 
          Devuelve el parámetro cuyo nombre es pasado como parámetro del método.

static VtolClient

getStaticVtolClient() 
          Devuelve una unica instancia del objeto StaticVtolClient.

static VtolClient

getStaticVtolClient(java.lang.String _originator) 
          Devuelve una unica instancia del objeto StaticVtolClient seteandole como originador a _originator.

static VtolClient

getUniqueInstanceOfVtolClient() 
          Devuelve una unica instancia del objeto DinamicVtolClient.

 VtolClientFinder

getVtolClientFinder() 
           

 java.util.Vector

getVtolNodesVector() 
          Retorna un vector de nodos.

 void

init() 
          Inicializa la clase

 boolean

isInitialized() 
          Retorna verdadero en caso de haber sido inicializado en caso contrario retorna falso.

 void

setInitialized(boolean newInitialized) 
          Setea la variable de inicialización en verdadero o falso según lo indique el parámetro newInitialized

 void

setOriginator(java.lang.String newOriginator) 
          Setea un nuevo originador.

 void

setParameter(java.lang.String _nameString, java.lang.String _valueString) 
          Setea el parámetro de nombre _nameString, con el valor _valueString.

 void

setVtolClientFinder(VtolClientFinder vtolClientFinder) 
           

 void

setVtolNodesVector(java.util.Vector newVtolNodesVector) 
          Setea un nuevo vector de nodos, según el parámetro


2.2.4 Métodos de VTOLNode

Method Summary

 void

addField(int _iFieldNumber, java.lang.String _valueString) 
          Agregado el campo identificado por _iFieldNumber con el valor _valueString a la transacción previamente creada.

 void

createTransaction() 
          Crea una transacción nueva para el proceso de un requerimiento de autorización

 ConnectionManager

getConnectionManager() 
          Devuelve el connectionManager

 Transaction

getCurrentTransaction() 
          Devuelve la transaccion actual asociada al nodo.

 DES

getEncrypter() 
          Obtencion del encriptador

 java.lang.String

getField(int _iFieldNumber) 
          Devuelve el valor del campo asociado al numero del campo _iFieldNumber.

 Transaction

getLastTransaction() 
          Devuelve la transaccion anterior a la actual.

 java.lang.String

getNodeId() 
          Devuelve el identificador del nodo o idetificador de Terminal(POS).

 java.util.Date

getObtainedDate() 
          Devuelve la fecha obtenida por el nodo.

 java.lang.String

getOriginator() 
          Devuelve el identificador del Originador o Tienda.

 java.util.Collection

getPreconfiguredFields() 
           

 NodeStatus

getStatus() 
          Devuelve el estado del nodo.

 TransactionFormat

getTransactionFormat() 
          Devuelve el objeto encargado de darle formato al transaccion asociada al nodo.

 VtolClientFinder

getVtolClientFinder() 
          Devuelve el objeto VtolClientFinder

 boolean

isUseVtolAutomaticPending() 
           

 boolean

isUseVtolClientFinder() 
          Indica si se esta utilizando un VtolClientFinder

 void

sendTransaction() 
          Envia a VTOL la transaccion asociada al nodo.

 void

sendTransactionWithoutResponse() 
          Envia la transaccion asociada al nodo a VTOL.

 void

setConnectionManager(ConnectionManager newConnectionManager) 
          Setter del connectionManager

 void

setCurrentTransaction(Transaction newCurrentTransaction) 
          Seteo de la transaccion actual.

 void

setEncrypter(DES encrypter) 
          seteo de un encriptador

 void

setLastTransaction(Transaction newLastTransaction) 
          Setea la transaccion anterior.

 void

setNodeId(java.lang.String newNodeId) 
          Seteo del identificador del nodo.

 void

setObtainedDate(java.util.Date newObtainedDate) 
          seteo de la fecha obtenida.

 void

setOriginator(java.lang.String newOriginator) 
          seteo de un nuevo originador.

 void

setPreconfiguredFields(java.util.Collection preconfiguredFields) 
           

 void

setStatus(NodeStatus newStatus) 
          Seteo de un nuevo estado.

 void

setTransactionFormat(TransactionFormat newTransactionFormat) 
          Seteo de un nuevo formateador.

 void

setUseVtolAutomaticPending(boolean useVtolAutomaticPending) 
           

 void

setUseVtolClientFinder(boolean b) 
          Forma de indicar que se usa un VtolClientFinder

 void

setVtolClientFinder(VtolClientFinder newVtolClientFinder) 
          Seteo de un vtolClientFinder


2.2.5 Interface VTOLClientFinder

...

Esta clase identifica cualquier excepción ocurrida en la librería e indica la misma a través de su mensaje.


Constructor Summary

VtolClientException()            

VtolClientException(java.lang.String _messageString)            

VtolClientException(java.lang.String _codeString, java.lang.String _messageString)            


Method Summary

 java.lang.String

getCode()            


2.2.7 Encriptación


La librería brinda la posibilidad de encriptar los mensajes con el algoritmo DES y Triple DES utilizando la clase DES.

...


El nombre del parámetro necesariamente es PRECONFIGUREDFIELD
El valor del parámetro está compuesto por 4 valores separados por comas, a continuación se detallan los mismos:


Posición

Definición

Valores disponibles

1

Número de campo

Representa el número de campo que debe estar dado de alta en la mensajería de VTOL con el POS.

2

Valor del campo

Es el valor que se enviará en la mensajería de VTOL con el POS

3

Tienda para el que aplica

Se puede indicar alguno de los siguientes valores:
( * ) que indica que se aplica para todas las tiendas o bien el número específico de la tienda.

4

Nodo para el que aplica

Se puede indicar alguno de los siguientes valores:
( * ) que indica que se aplica para todos los nodos o bien el número específico del nodo que enviará el parámetro indicado.


Con esto podemos tener 4 combinaciones

...

El archivo está compuesto por un tag principal llamado fields-configuration este tag contendrá cada uno de los campos previamente configurados que serán identificados con el tag preconfiguredField. La estructura de cada campo se muestra a continuación:


Nombre del Tag

Definición

Valores disponibles

fieldNumber

Representa el número del campo que se mandará a VTOL

Se debe incluir un número entero de acuerdo a las especificaciones del manual así como los campos disponibles para su recepción en VTOL.

fieldValue

Representa el valor del campo que se manda a VTOL

Cualquier valor que coincida con el tipo de dato y tamaño definidos en VTOL.

Originador

Es un tag que representa al originador junto con los nodos que enviarán este campo.

Este tag representa como tal a un originador, que incluye tanto si ID como uno o más nodos. Los tags válidos son: originatorId, node.

originatorId

Es el id del originador que enviará este campo.

Se puede indicar alguno de los siguientes valores:

( * ) que indica que se aplica para todas las tiendas o bien el número específico de la tienda.

Puede existir solo un elemento de este tipo por originador.

Node

Representa a un nodo como tal.

Pueden existir uno o más de estos elementos dentro del Nodo. Los tags váidos son: nodeId

nodeId

Nodo para

Se puede indicar alguno de los siguientes valores:
( * ) que indica que se aplica para todos los nodos
o bien el número específico del nodo.
Puede existir solo un elemento de este tipo por nodo.


Nota
Nota: Si se requiere el comportamiento de que todos los originadores envíen el campo definido, entonces se deberá poner únicamente un tag Originator, con su respectivo originatorId con ( *** ). Los tags originador que se encuentren posteriormente a éste, serán ignorados.

...

Para habilitar el logeo es necesario incluir en las opciones de la máquina virtual de JAVA la siguiente opción: 


-Djava.util.logging.config.file=[PATH_ABSOLUTO_ARCHIVO_CONFIGURACION]

 


Dónde: 


[PATH_ABSOLUTO_ARCHIVO_CONFIGURACION] corresponde al path y nombre de archivo completos de donde se encuentra el archivo de configuración del logeo.

...