Manual de Integración
Librería Full EMVKIT AR 1.2.45
Cambios por revisiones
Fecha | Revisión | Cambios – Motivo |
06/01/2014 | 1.0 | Creación del documento |
17/08/2015 | 1.1 | Definición de librería como servicio. Explicación de integración |
23/10/2015 | 1.2 | Agregado de Operación Procesar Mensaje Crédito Débito. Incorporación de identificador único de transacción en VTOL Server, campo: 166-trxReferenceNumber |
09/11/2015 | 1.3 | Agregado de campo 1102–Proveedor seleccionado en mensaje Procesar Operación con Tarjeta |
13/05/2016 | 1.4 | Agregado de campo 137–ConfVersion en GetConfiguration, 10–inputMode en Sale/VoidSale/Etc y 1010–currentSessionId en el mensaje Crear sesión |
16/05/2016 | 1.5 | Revisión del documento |
06/06/2016 | 1.6 | Agregado del valor FORCED_CLOSE en el campo 1008–closeSessionAction del mensaje Cerrar Sesión |
14/07/2016 | 1.7 | Agregados los tipos de transacciones CashBack, VoidCashBack, ServicePayment y VoidServicePayment |
18/08/2016 | 1.8 | Agregado del anexo "Mecanismo de Autorización Telefónica" |
15/09/2016 | 1.9 | Agregado de campo 57 - Tipo de Cuenta en la respuesta al POS para el procesamiento de operación con tarjeta. |
19/09/2016 | 1.10 | Se modifica la condición del campo 1113 – cardIsDebit. |
21/09/2016 | 1.11 | Posibilidad de recibir desde el POS, el valor que indica la capacidad de captura de la terminal. |
23/09/2016 | 1.12 | Agregado del tipo de operación "Cancelar Lectura de Tarjeta" |
06/10/2016 | 1.13 | Se incorpora definición de timeout de librería fullEMVKIT. Se eliminan los campos: Store y Node de los mensajes: Leer Datos de la Tarjeta - Cancelar Lectura de Tarjeta - Procesar Operación con Tarjeta - Procesar Mensaje Crédito Debito - Obtener Configuración de POS - Cerrar Sesión |
05/04/2017 | 1.14 | Agregado de propiedad approveInSecondInstance en sección de Configuración de PINPAD |
16/05/2017 | 1.15 | Modificación del apartado Mecanismo de Autorización Telefónica |
17/05/2017 | 1.16 | Agregado del valor MSR Chip en campo inputMode |
30/05/2017 | 1.17 | Agregado del apartado "Circuito Operativo de la Librería FullEMVKIT" |
06/06/2017 | 1.18 | Actualización de la tabla Prefijo en el apartado Formato Interface POS. Mayor detalle del campo MasterKey Position, incluyendo el valor 99. |
07/07/2017 | 1.19 | Agregado del campo promocional en Configuración de POS para indicar que se aplica una promoción sobre un plan de pago. |
23/04/2018 | 1.20 | Revisión general del documento. Agregado de apartado Pagos Parciales. |
11/05/2018 | 1.21 |
|
Âncora | ||||
---|---|---|---|---|
|
Índice |
---|
Âncora | ||||
---|---|---|---|---|
|
Âncora | ||||
---|---|---|---|---|
|
El presente documento explica la manera de integrarse a la Librería VTOL Full Argentina.
Âncora | ||||
---|---|---|---|---|
|
...
EMVKIT?
La librería Full EMVKIT es una utilidad que simplifica la integración y la comunicación con el medio de pago de tarjetas abstrayendo a la aplicación de punto de venta de procesos como:
- el manejo del PINPAD (inicialmente el modelo Verifone VX820)
- el reconocimiento de tarjetas (crédito/débito y otras, como supervisor, tarjeta regalo, etc)
- la comunicación e integración con Gateway de transacciones VTOL
- detectar y resolver problemas de contingencia
- etc
Âncora | ||||
---|---|---|---|---|
|
Arquitectura general de la Librería Full EMVKIT
Como se observa en la imagen, la librería Full EMVKIT se encarga de comunicarse con el PINPAD, desligando al aplicativo de punto de venta de dicha responsabilidad con el objetivo de simplificar la integración, y con el Gateway de transacciones VTOL.
Esta librería se ejecutará de manera stand alone –autónoma– en el punto de venta, pudiendo iniciarse como servicio, transmitiendo una comunicación server TCP IP capaz de interpretar el protocolo VTOL. El mismo protocolo es utilizado para comunicarse con VTOL Server.
La integración entre la aplicación de punto de venta y la librería Full EMVKIT será a través de la utilización de la librería cliente de VTOL, la que llamaremos librería cliente o librería liviana.
La aplicación de punto de venta solo debe incorporar esta librería liviana que le permitirá, mediante llamadas JAVA, construir los mensajes para comunicarse con la librería FullEMVKIT.
Arquitectura y Comunicación de la Librería FullEMVKIT
En la imagen se observan ejemplos de tramas de requerimiento y de respuesta transmitidas por TCP IP entre la librería liviana y la librería FullEMVKIT. Los tipos de operaciones son los siguientes y se explayan en el apartado 1.9 Tipos de Operación:
- Creación de la sesión
- Lectura de los datos de la tarjeta
- Procesamiento de una operación con tarjeta
- Procesamiento del mensaje Crédito Débito
- Obtención de la configuración del POS
- Cierre de la sesión
Âncora | ||||
---|---|---|---|---|
|
La librería Full EMVKIT tiene el siguiente alcance:
...
- La identificación del banco por medio de opciones en pantalla (siempre y cuando no sea una tarjeta Mastercard, que posee la identificación en el track, ya que será devuelto por la librería en el caso de que existan promociones bancarias)
- La validación de los últimos N dígitos de la tarjeta
- La confirmación del monto
- El cálculo de promociones, la validación de plan de pago, la determinación de cuotas y la aplicación de la selección de tarjeta en la instancia que la librería detecte más de una coincidencia (en algunos casos, debido a normas PCI, la determinación de la tarjeta se hace por contacto visual ya que se comparte el BIN)
- Impresión del voucher y duplicado
Âncora | ||||
---|---|---|---|---|
|
Âncora | ||||
---|---|---|---|---|
|
A continuación, se listan los requisitos mínimos que requiere la librería Full EMVKIT para su correcto funcionamiento:
1.5.1 Plataformas Soportadas
- Windows 32/64 bits
- Linux 32/64 bits
1.5.2 Requerimientos de Hardware
- Memoria RAM: 64MB disponibles
- Procesador: 2 núcleos de 1.6GHZ o superior (sujeto a pruebas ya que hay dependencias de arquitecturas de hardware, por ejemplo, pudiera funcionar con 1 núcleo pero más potente)
- Capacidad de almacenamiento en disco rígido: Al menos 150MB
1.5.3 Requerimientos de Software
- Java Virtual Machine (JDK) 1.6.x/1.7.x/1.8.x (32/64 bits acorde con el sistema operativo)
- Conexión a VTOL Server por red TCP/IP
Âncora | ||||
---|---|---|---|---|
|
Âncora | ||||
---|---|---|---|---|
|
La librería Full EMVKIT tiene la responsabilidad de abstraer a la aplicación de punto de venta de operaciones tales como el operar con el PINPAD, la comunicación y el procesamiento de transacciones con VTOL Server, el almacenamiento de información de transacciones, mantener la seguridad PCI, resolver contingencias, etc.
...
En líneas generales, el orden de ejecución de cada llamada es similar al anteriormente mencionado.
Primero se inicia sesión, donde la librería Full EMVKIT carga la configuración desde VTOL, sincroniza el estado de las transacciones, verifica el funcionamiento del PINPAD, etc. Posteriormente se entra en un ciclo de llamadas para obtener información de la tarjeta y luego procesarla (autorizarla). Esto se realiza tantas veces como tarjetas se utilicen para pagar la transacción. Finalmente se procede al cierre de sesión donde la librería Full EMVKIT confirma las transacciones contra el servidor VTOL.
En el apartado 1.9 Tipos de Operación se explica en mayor detalle cada operación en particular y en el anexo 1.15 Circuito Operativo de la Librería FullEMVKIT se detalla el flujo de operación.
2.1.1 Procesamiento de Transacciones
A continuación se puede observar el modo de interacción genérico de la aplicación de venta con la librería FullEMVKIT:
- Iniciar sesión.
- Obtener información de la tarjeta, sin importar el modo de ingreso.
- Con esta información la aplicación de punto de venta procede al cálculo de promociones, intereses, opciones de pago, etc., según corresponda.
- Finalizados estos cálculos, la aplicación de punto de venta solicita el procesamiento de la transacción. En este punto la librería Full EMVKIT valida y solicita otros datos a través del PINPAD. Si todo marcha bien, procede a la autorización con VTOL Server y este a su vez contra los centros autorizadores.
- Cuando arriba la respuesta desde VTOL, la librería almacena la transacción y le responde a la aplicación de punto de venta para que continúe con su lógica de negocio.
- En caso de que se ingrese otro pago con tarjeta, se vuelve al paso 2 y así sucesivamente.
- Una vez que finaliza el cobro de la transacción, el punto de venta cierra la sesión contra la librería FullEMVKIT, indicando si la misma finalizó con éxito o se debe cancelar. Para ambos casos, la librería se sincroniza con VTOL Server confirmando las transacciones cerradas o reversando las canceladas.
Âncora | ||||
---|---|---|---|---|
|
La librería Full EMVKIT está pensada para funcionar como una aplicación stand alone e, inicialmente, se entrega contenida en un archivo ZIP, como por ejemplo: vtol-pos-client-lib-ar-1.2.X.zip
...
Carpeta | Descripción |
CONFIG | Contiene los archivos de configuración requeridos para la librería FullEMVKIT |
LIB | Contiene todos los archivos JAR, propietarios y de terceros, requeridos para el funcionamiento de la librería FullEMVKIT |
Aviso |
---|
Importante: En la carpeta raíz se encuentra el archivo start.cmd que permite ejecutar la librería FullEMVKIT. |
La librería también puede configurarse como un servicio del sistema haciendo uso del JAVA SERVICE WRAPPER.
Âncora | ||||
---|---|---|---|---|
|
Âncora | ||||
---|---|---|---|---|
|
La librería Full EMVKIT cuenta con los siguientes archivos de configuración:
Âncora | ||||
---|---|---|---|---|
|
Para que la librería Full EMVKIT funcione correctamente se deben configurar los siguientes parámetros (el archivo start.cmd ya trae una configuración por defecto):
...
Parámetros | Descripción |
-DLIB_BIND_ADDRESS | Dirección IP en la cual la librería recibirá y enviará los mensajes al punto de venta. Si no se menciona esta propiedad, el bind por defecto es 127.0.0.1 |
-DBASE_CONF_DIR | Directorio absoluto de la configuración de la librería |
-DLOG_DIR | Directorio absoluto de logeo de la aplicación. Esta variable es utilizada en el archivo de configuración de logeo (log4j.properties) |
Âncora | ||||
---|---|---|---|---|
|
La librería Full EMVKIT cuenta con los siguientes archivos de configuración:
...
Archivo | Descripción |
devices.properties | Uso interno de la librería. No se debe modificar |
log4j.properties | Configuración de logeo de la librería |
messages.properties | Configuración de los descriptores de respuesta y las leyendas del pinpad |
operations.properties | Uso interno de la aplicación. No se debe modificar |
serialPinPad.properties | Configuración del dispositivo PINPAD |
VTOL_CRDB_CONF.cfg | Archivo creado y gestionado por la librería. Lo utiliza para persistir la configuración de VTOL |
EXCEPTION_BIN.cfg | Archivo creado y gestionado por la librería. Se utiliza para persistir la configuración de los bines de excepción |
business.properties | Archivo que contiene configuración relativa a reglas de negocio |
vtolClient.properties | Contiene las propiedades de conexión con VTOL Server |
session.obj | Archivo que registra información de estado y transaccional de la última sesión que el POS estableció con la librería FullEMVKIT |
workingKeys.properties | Registra las Working Key por tarjeta. La clave de cada WK es la posición de la llave maestra en la memoria del PINPAD |
Âncora | ||||
---|---|---|---|---|
|
La librería Full EMVKIT logea según las directivas que se encuentran dentro del archivo de configuración de logeo log4j.properties.
...
Propiedad | Descripción |
log4j.appender.file.File | Ruta y nombre del archivo de salida de logeo |
log4j.appender.file.MaxFileSize | Tamaño máximo del archivo de logeo antes de hacer el "rolling" (cambio a otro archivo de logeo) |
log4j.appender.file.MaxBackupIndex | Máxima cantidad de archivos de logs que se conservarán |
Âncora | ||||
---|---|---|---|---|
|
La librería Full EMVKIT se comunica con VTOL Server y las propiedades de enlace se encuentran en el archivo de configuración vtolClient.properties.
Propiedad | Descripción |
HOSTIP | IP o nombre del servidor donde se encuentra ubicado VTOL Server |
HOSTPORT | Puerto de comunicación con VTOL Server |
Nota |
---|
Nota: El código de la tienda y el código de la caja en donde se origina la transacción se informa en la operación de creación de sesión. |
Âncora | ||||
---|---|---|---|---|
|
La librería Full EMVKIT se conecta al PINPAD modelo Verifone VX820 con Firmware.
...
Propiedad | Descripción | Valor por defecto |
portName | Nombre del puerto | COM9 |
dataBits | Data bits length | 8 |
stopBits |
| 1 |
baudRate | Baud rate of serial port | 19200 |
parity | Paridad | none |
timeout | Default time to wait for response from PINPad. This time is expressed in milliseconds. | 180000 |
pinEntryTimeout | Time in milliseconds to wait until card holder enters PIN. If card holder don't enter PIN during this milliseconds, then a packet 72 should be sent to PINPad to cancel PIN entry. | 180000 |
bufferSize | Tamaño máximo del buffer de lectura del puerto serie. | 2048 |
nativeImpleClass | Clase de driver nativo para comunicarse con el PINPad. |
|
y01Tec | Tiempo entre comandos expresado en segundos (Formato: NNN). Es el tiempo máximo que el PINPAD espera el siguiente comando. | 035 |
firmwareVersion | Opcional. Indica la versión de compatibilidad de firmware con la que trabajará la Librería FullEMVKIT. |
|
requiredInitAppVersions | Opcional (Solo para FD). Indica que versiones de compatibilidad de firmware requieren enviar mensaje de inicio al PINPAD |
|
approveInSecondInstance | Opcional. Indica si la Librería Full EMVKIT permite que el PINPAD apruebe en segunda decisión, una transacción rechazada por el HOST. | true |
...
Ejemplo de configuración para el PINPAD de POSNET (FD)
#serie
#PPVX820POSNET.portName=COM3
#USB
PPVX820POSNET.portName=COM9
PPVX820POSNET.dataBits=7
PPVX820POSNET.stopBits=1
PPVX820POSNET.baudRate=115200
PPVX820POSNET.parity=EVEN
#Timeout por defecto en esperar la respuesta del Pinpad.
PPVX820POSNET.timeout=30000
PPVX820POSNET.timeoutMilisecondsWrite=150
PPVX820POSNET.language=1
#Tamaño maximo del buffer de lectura del puerto serie.
PPVX820POSNET.bufferSize=2048
PPVX820POSNET.nativeImpleClass=com.synthesis.vtolClientLib.deviceAdapters.RxTxSimpleSerialNativeLibWrapperImpl
#PPVX820POSNET.nativeImpleClass=com.synthesis.vtolClientLib.deviceAdapters.JavaCommSimpleSerialNativeLibWrapperImpl
#PPVX820POSNET.nativeImpleClass=com.synthesis.vtol.ar.client.test.pinpad.POSNETVx820VA0600PinpadEmulatorConnector
#PPVX820POSNET.nativeImpleClass=com.synthesis.vtol.ar.client.test.pinpad.POSNETVx8203DESPinpadEmulatorConnector
Wiki Markup |
---|
#\[TEC\]:Timeout entre comandos expresado en segundos / Formato: NNN |
PPVX820POSNET.y01Tec=035
Wiki Markup |
---|
#\[TOM\]:Timeout Ingreso de Datos expresado en segundos / Formato: NNN |
PPVX820POSNET.y06Tom=020
#Tiempo de espera luego de enviar un Y06 (en millisecs)
PPVX820POSNET.y06ProcessWait=1000
#Tiempo de espera para un ACK de respuesta (en millisecs)
PPVX820POSNET.ackResponseTimeout=1000
#Version de la aplicacion del PINPAD
PPVX820POSNET.firmwareVersion=A0700
#Versiones de Firmware que requieren mensaje de inicialización (separadas por coma).
PPVX820POSNET.requiredInitAppVersions=A0600,A0700
#Indica si el aprobado en 2da. decisión del PINPAD está habilitado
PPVX820POSNET.approveInSecondInstance=true
...
Nota |
---|
Nota: Para el caso en que la terminal utiliza un dispositivo teclado con lector de banda magnética u otro dispositivo que no sea un pinpad, no es preciso realizar configuración alguna en el archivo serialPinPad.properties de la librería. |
Âncora | ||||
---|---|---|---|---|
|
Como se mencionó anteriormente, la librería Full EMVKIT corre como una aplicación stand alone en el POS, independiente de la aplicación de punto de venta, publicando un puerto de comunicación server TCPIP, capaz de interpretar mensajes del protocolo VTOL (mismo protocolo de comunicación utilizado por VTOL Server).
La integración con la aplicación de punto de venta se realizará a través de la librería cliente liviana de VTOL la cual brinda todo el mecanismo de comunicación con la librería FullEMVKIT, permitiendo enviar y recibir mensajes del protocolo VTOL. La aplicación punto de venta básicamente deberá indicar cuáles son los campos a enviar y, luego, procesar la respuesta.
Âncora | ||||
---|---|---|---|---|
|
Para poder realizar las llamadas hacia la librería FullEMVKIT, es necesario que la aplicación punto de venta integre la librería cliente, también llamada "liviana":
...
El uso de cada una dependerá del lenguaje de programación de la aplicación de punto de venta o del sistema integrador.
Para mayor información referirse a la documentación de la librería liviana.
Âncora | ||||
---|---|---|---|---|
|
Âncora | ||||
---|---|---|---|---|
|
La librería Full EMVKIT reconoce los siguientes tipos de operaciones:
A. Crear Sesión
Es la primera operación a ejecutar por parte de la aplicación punto de venta cuando se inicia una transacción de pago.
Permite iniciar sesión entre la aplicación de punto de venta y la librería FullEMVKIT.
Internamente la librería verifica la conectividad con el PINPAD y se sincroniza con VTOL Server.
A continuación se detallan los campos que la aplicación punto de venta debe enviar a la Librería FullEMVKIT, haciendo uso de la librería cliente.
...
Número | Nombre del campo | Tipo de dato | Obligatorio | Descripción |
1 | store | Alfanumérico | Obligatorio | Identificador del sitio originador de la transacción |
2 | node | Numérico | Obligatorio | Identificación del nodo, en el sitio originador, donde se generó la transacción |
11 | trxType | Alfanumérico | Obligatorio | Tipo de Transacción:
|
Ejemplo
Request to Full library: {2:1;1:1;11:createSession} |
...
Número | Nombre del campo | Tipo de dato | Descripción |
1010 | currentSessionId | Numérico | Identificador de la nueva sesión |
1027 | libResponseCode | Numérico | Código de respuesta de la librería. |
1028 | libResponseMessage | Alfanumérico | Mensaje descriptivo del código de respuesta de la librería |
...
Response from Full library: {1010:27082015182500;1028:Ok;1027:000} |
B. Leer Datos de la Tarjeta
Operación que inicia el pago con una tarjeta. Se utiliza para obtener los datos básicos de la misma leídos por medio del PINPAD.
Si la tarjeta está dentro de los bines de excepción, la librería Full EMVKIT devolverá los datos leídos pero no realizará ningún otro tipo de procesamiento como reconocimiento de bin, tarjeta, etc.
...
Para realizar esta operación no existe un tipo de transacción en particular. En su lugar, se debe enviar a la librería Full EMVKIT el tipo de transacción de VTOL Server que se desea realizar en el campo 11 - trxType, sin incluir el campo el cual indica el monto.
...
Número | Nombre del campo | Tipo de dato | Obligatorio | Descripción |
11 | trxType | Alfanumérico | Obligatorio | Tipo de Transacción:
|
...
Número | Nombre del campo | Tipo de dato | Descripción |
10 | inputMode | Alfanumérico | Forma en que se ingresó/leyó la tarjeta. Valores posibles:
|
1010 | currentSessionId | Numérico | Identificador de la sesión actual |
1027 | libResponseCode | Numérico | Código de respuesta de la librería. |
1028 | libResponseMessage | Alfanumérico | Mensaje descriptivo del código de respuesta de la librería |
1102 | providers | Lista | Lista de proveedores/tarjetas que coinciden con la tarjeta ingresada en el PINPAD. Esta lista deberá ser utilizada para seleccionar la tarjeta manualmente |
1103 | cardContextId | Numérico | Identifica el contexto de la tarjeta. Es un valor de referencia a la tarjeta leída a través del PINPAD. Debe ser enviado en la siguiente llamada "Procesar Operación con Tarjeta" |
1105 | panFirstDigit | Numérico | Primero 6 dígitos de la tarjeta. Si la tarjeta está dentro de los bines de excepción se devuelve el número entero |
1106 | panLastDigit | Numérico | Últimos 4 dígitos de la tarjeta. Si la tarjeta está dentro de los bines de excepción se devuelve el número entero |
1107 | pan | Alfanumérico | Valor de la tarjeta enmascarado según PCI |
1108 | isExceptionBin | Numérico | Flag que indica si se trata de un BIN de excepción (1) o si no lo es (0) |
1109 | ExceptionBinName | Alfanumérico | [Opcional] Si isExceptionBin = 1 entonces indica el nombre del bin de excepción |
1112 | CardHolderName | Alfanumérico | [Opcional] Si el valor es devuelto por el PINPAD. Nombre del titular de la tarjeta si el track I está presente y la lectura fue por banda |
1113 | cardIsDebit | Numérico | [Opcional] Si existe un único provider. Flag que indica si es una tarjeta de débito (1) o de crédito (0 o no viaja). |
1114 | bankCode | Numérico | Código de banco si es una tarjeta Master |
1115 | serviceCode | Numérico | Código de servicio devuelto por el PINPAD |
1116 | recordNumber | Numérico | Número de registro donde se almacena la transacción en el PINPAD. Reservado para uso futuro |
1117 | ExceptionBinExtraData | Alfanumérico | [Opcional] Si isExceptionBin = 1 entonces indica información adicional que pudiera servir al POS |
...
Response from Full library:
|
C. Cancelar Lectura de Tarjeta
Este comando procede a cancelar la operatoria posterior lectura de la tarjeta en el pinpad.
...
Número | Nombre del campo | Tipo de dato | Descripción |
1027 | libResponseCode | Numérico | Código de respuesta de la librería. |
1028 | libResponseMessage | Alfanumérico | Mensaje descriptivo del código de respuesta de la librería |
...
Response from Full library: {1028:Ok;1027:000} |
D. Procesar Operación con Tarjeta
Operación utilizada para validar y obtener el resto de los datos de la tarjeta de Crédito Débito. Con estos datos, adicionados a los enviados por el POS, construye el mensaje que viaja hacia VTOL Server para su autorización.
La utilización de esta operación es posterior a haber obtenido los datos básicos de la tarjeta por medio de la operación "Leer Datos de la Tarjeta" (si la misma no fue realizada, no se podrán obtener datos asociados a la tarjeta).
En esta operación se debe confirmar el monto de la autorización, luego de haber aplicado las promociones y descuentos correspondientes. También deben incluirse todos los campos requeridos para que la autorización sea procesada según la mensajería.
Al igual que en la "Lectura de Datos de la Tarjeta", para realizar esta operación no existe un tipo de transacción en particular. En su lugar, se debe enviar a la librería Full EMVKIT el tipo de transacción de VTOL Server que se desea realizar en el campo 11 - trxType.
...
No es necesario incluir campos asociados a la tarjeta, ya que la librería Full EMVKIT es la encargada de obtener estos datos desde el PINPAD. Como ser: CVC, Fecha de expiración, Track I, Track II, etc., según el modo de ingreso.
...
Número | Nombre del campo | Tipo de dato | Obligatorio | Descripción |
11 | trxType | Alfanumérico | Obligatorio | Tipo de Transacción:
|
12 | amount | Importe | Obligatorio | Monto de la transacción. 12 dígitos como máximo. Se envía sin coma. Los dos últimos dígitos representan los decimales. Ej: 1000 equivale a 10.00 |
13 | currencyPosCode | Alfanumérico | Obligatorio | Tipos de Moneda:
|
14 | payments | Numérico | Obligatorio | Cantidad de cuotas. 2 dígitos como máximo |
15 | plan | Alfanumérico | Obligatorio | Plan. 1 caracter de longitud |
16 | originalDate | Fecha | Opcional | Este campo debe viajar si el tipo de transacción es Refund. Se trata de la fecha de la transacción original en el formato YYYYMMDD |
17 | originalTrxTicketNr | Numérico | Opcional | Este campo debe viajar si el tipo de transacción es Refund y es opcional cuando el tipo de transacción es VoidSale. Se trata del número de ticket de la transacción original. 4 dígitos como máximo |
18 | referedSale | Numérico | Condicional a tarjeta AMEX | Se usa para indicar si una venta se hizo de forma referida. SOLO para AMEX. Se debe encender este campo con el valor 1 |
22 | authorizationCode | Alfanumérico | Condicional si fue realizada la autorización telefónica | Código de autorización telefónica. 6 dígitos como máximo. Este campo se encuentra presente sólo si la transacción se autorizó off-line por teléfono |
53 | paymentCondition | Alfanumérico | Opcional | Condición de pago. Sólo se encuentra presente si existe una condición de pago vinculada con la transacción |
54 | additionalAmount | Alfanumérico |
| Contiene el Importe del "Cash Back". Se usa en transacciones del tipo CashBack o Sale + CashBack. Debe contener 12 dígitos como máximo |
70 | effectiveDate | Alfanumérico | Opcional AMEX | Fecha efectiva. Se usa para AMEX con formato YYMM |
73 | interestAmount | Alfanumérico | Opcional | Este campo es por si se necesita enviar el monto de los intereses en el mensaje a Autorizar. Normalmente el monto que llega del POS ya contiene los intereses en el caso de pagar en cuotas. Existe algún caso de alguna tarjeta especial donde el monto hay que enviarlo libre de intereses y justamente el monto de los intereses viaja en este campo |
74 | requestAccountNumber | Alfanumérico | Opcional, default = 0 | Indica si puede recibir el número de cuenta (Visa y Posnet). Valores posible:
|
101 | differDate | Alfanumérico | Opcional | Fecha diferida. Solo utilizada para AMEX |
118 | terminalCapability | Alfanumérico | Opcional | Capacidad de captura. Valores 1 = Manual / 2 = Lectura de Banda / 5 = Lectura de Chip |
130 | posPeriod | Numérico | Opcional | Indica el Periodo del POS en que se realiza la operación. Solamente es registrado en VTOL. Longitud 5 |
131 | turn | Numérico | Opcional | Indica Turno en que se realiza la operación. Solamente es registrado en VTOL. Longitud 2 |
132 | operatorCode | Alfanumérico | Opcional | Código de operador. Solamente es registrado en VTOL. Longitud 20 |
133 | operatorName | Alfanumérico | Opcional | Nombre de operador. Solamente es registrado en VTOL. Longitud 50 |
134 | sellerCode | Alfanumérico | Opcional | Código del vendedor que realiza la operación. Solamente es registrado en VTOL. Longitud 20 |
135 | sellerName | Alfanumérico | Opcional | Nombre del vendedor que realiza la operación. Solamente es registrado en VTOL. Longitud 50 |
136 | attentionMode | Alfanumérico | Opcional | Modalidad de atención (AU ó AS). Longitud 2 |
1102 | provider | Alfanumérico |
| Proveedor / tarjeta seleccionada manualmente de la lista devuelta por la librería en la operación Leer Datos de la Tarjeta. Por Ejemplo: Si la operación Leer Datos de Tarjeta retorna la lista {VI, EL}, en la operación Procesar Operación con Tarjeta se debe enviar el valor seleccionado entre las dos opciones VI o EL. |
1103 | cardContextId | Numérico | Obligatorio | Identifica el contexto de la tarjeta. Es un valor de referencia a la tarjeta leída a través del PINPAD. Es el valor devuelto por la última operación "Leer Datos Tarjeta" |
...
Número | Nombre del campo | Tipo de dato | 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 |
10 | inputMode | Alfanumérico | Forma en que se ingresó/leyó la tarjeta. Valores posibles:
|
22 | authorizationCode | Alfanumérico | Código de autorización generado por el centro autorizador para la transacción. |
23 | authorizationMode | Alfanumérico | Modo de Autorización:
|
24 | lastTrxId | Numérico | Id de transacción en VTOL Server. La misma queda en estado pendiente y debe ser confirmada o cancelada cuando se cierra la sesión con la librería FullEMVKIT |
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:
|
27 | isoCode | Numérico | Código de Respuesta ISO-8583 emitido por el centro autorizador. 2 dígitos como máximo. Ver sección Códigos de Respuesta de VTOL Server |
28 | responseMessage | Alfanumérico | Mensaje de la Respuesta ISO-8583 relacionado con el código del campo 27 |
29 | serialNumber | Numérico | Número que identifica de la terminal lógica en la que se procesó la transacción |
30 | businessNumber | Numérico | Número de comercio en el que se procesó la transacción |
31 | lotNumber | Numérico | Número de lote en el que se registró la transacción |
32 | ticket | Numérico | Número de Ticket correspondiente a la transacción. 4 dígitos como máximo |
33 | creditCardIssuerName | Alfanumérico | Nombre del Centro emisor de la tarjeta |
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" |
42 | lotDefinitionId | Numérico | Identificador de la definición de lote |
57 | accountType | Alfanumérico | Campo que se emplea para identificar el tipo de cuenta. Se usa para tarjetas de débito. Los valores posibles son:
|
58 | workingKey | Alfanumérico | VTOL devuelve este campo tal como lo entrega el Centro Autorizador. Representa la llave que el PINPAD deberá usar para generar el PINBLOCK en la próxima transacciónpara generar el PINBLOCK en la próxima transacción |
59 | offlinePinCheck | Alfanumérico | Campo que se emplea para informar si se verifica o no el Pin Offline con AMEX EMV. Los valores posibles son: 0 = No y 1 = Si |
68 | rrn | Numérico | Reference referral number |
75 | accountNumber | Numérico | Número de cuenta. Este campo es devuelto si el campo 74- requestAccountNumber fue activado en el requerimiento |
81 | responseAuth | Alfanumérico | Mensaje de repuesta para ser mostrado en el display del POS donde se indican promociones. |
82 | softwareVersion | Alfanumérico | Versión de la aplicación |
130 | posPeriod | Numérico | [Opcional si viaje en la solicitud] Periodo enviado por el POS. Longitud 5 |
131 | turn | Numérico | [Opcional si viaje en la solicitud] Turno. Longitud 2 |
132 | operatorCode | Alfanumérico | [Opcional si viaje en la solicitud] Código de operador. Longitud 20 |
133 | operatorName | Alfanumérico | [Opcional si viaje en la solicitud] Nombre de operador. Longitud 50 |
134 | sellerCode | Alfanumérico | [Opcional si viaje en la solicitud] Código del vendedor. Longitud 20 |
135 | sellerName | Alfanumérico | [Opcional si viaje en la solicitud] Nombre del vendedor. Longitud 50 |
136 | attentionMode | Alfanumérico | [Opcional si viaje en la solicitud] Modalidad de atención (AU ó AS). Longitud 2 |
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. |
1010 | currentSessionId | Numérico | Identificador de la sesión actual |
1027 | libResponseCode | Numérico | Código de respuesta de la librería. |
1028 | libResponseMessage | Alfanumérico | Mensaje descriptivo del código de respuesta de la librería |
1110 | pinpadApplicationId | Alfanumérico | Identificador de la Aplicación del PINPAD. |
1111 | pinpadApplicationName | Alfanumérico | Nombre de la Aplicación del PINPAD. |
1112 | CardHolderName | Alfanumérico | Nombre del titular de la tarjeta si el track I está presente y la lectura fue por banda. |
1120 | voucherHeader | Mapa | [Opcional 1] Reservado para uso futuro. Retorna los datos del encabezado del voucher. El valor recibido corresponde a un campo compuesto mapa con una serie de claves y valor: [clave1|valor1, clave2|valor2,…, claveN|valorN] |
1121 | voucherFooter | Mapa | [Opcional 1] Reservado para uso futuro. Retorna los datos del pie del voucher. El valor recibido corresponde a un campo compuesto mapa con una serie de claves y valor: [clave1|valor1, clave2|valor2,…, claveN|valorN] |
1122 | voucherBody | Mapa | [Opcional 1] Reservado para uso futuro. Retorna el cuerpo del voucher. El valor recibido corresponde a un campo compuesto mapa con una serie de claves y valor: [clave1|valor1, clave2|valor2,…, claveN|valorN] |
1123 | formattedVoucher | Alfanumérico | [Opcional 2] Reservado para uso futuro. Retorna el voucher completo y formateado para ser impreso. |
1124 | printVoucher | Numérico | [Opcional 3] Reservado para uso futuro. Indica si la impresión del voucher tuvo éxito o no. Valores permitidos:
|
...
IMPORTANTE: La aplicación punto de venta debe tener la capacidad de registrar los distintos trxId que recibe en las sucesivas autorizaciones APROBADAS, dentro de la sesión debido a que debe enviarlas al momento de cerrar la sesión para confirmarlas con VTOL Server. |
E. Procesar Mensaje Crédito Débito
Operación que permite enviar directamente un mensaje de Crédito Debito a VTOL Server.
En este tipo de operación no se realiza interacción con el PINPAD. El mensaje que se recibe desde el POS es enviado sin cambios a VTOL Server para su autorización. No se debe ejecutar previamente la operación de lectura de datos de la tarjeta.
Para poder procesar este tipo de mensajes debe incluirse en la mensajería información de la tarjeta, como ser los campos: número de tarjeta, fecha de expiración, código de seguridad, track2, etc. Además se debe indicar el modo de ingreso realizado: Manual o Banda.
La librería Full EMVKIT valida si llega un mensaje Crédito Debito con el Número de Tarjeta o Track2. Si es así envía el mensaje directamente VTOL Server.
...
Número | Nombre del campo | Tipo de dato | Obligatorio | Descripción |
6 | cardNumber | Numérico | Obligatorio si es Manual | Número de tarjeta. Sólo presente si el modo de ingreso fue Manual. |
7 | expiration | Numérico | Obligatorio si es Manual | Formato YYMM Fecha de vencimiento de la tarjeta. Sólo presente si el modo de ingreso fue Manual. |
8 | Cvc | Numérico | 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 | Alfanumérico | Obligatorio si es MSR | Track2 de la tarjeta entero (se envía todo el contenido del track2 en este campo) Este campo sólo está presente si la banda magnética / chip de la tarjeta pudo ser leído. |
10 | inputMode | Alfanumérico | Obligatorio | Forma en que se ingresó/leyó la tarjeta. Valores posibles:
|
11 | trxType | Alfanumérico | Obligatorio | Tipo de Transacción:
|
12 | amount | Importe | Obligatorio | Monto de la transacción. 12 dígitos como máximo. Se envía sin coma. Los dos últimos dígitos representan los decimales. Ej: 1000 equivale a 10.00 |
13 | currencyPosCode | Alfanumérico | Obligatorio | Tipos de Moneda:
|
14 | payments | Numérico | Obligatorio | Cantidad de cuotas. 2 dígitos como máximo |
15 | plan | Alfanumérico | Obligatorio | Plan. 1 caracter de longitud |
16 | originalDate | Fecha | Opcional | Este campo debe viajar si el tipo de transacción es Refund. Se trata de la fecha de la transacción original en el formato YYYYMMDD |
17 | originalTrxTicketNr | Numérico | Opcional | Este campo debe viajar si el tipo de transacción es Refund y es opcional cuando el tipo de transacción es VoidSale. Se trata del número de ticket de la transacción original. 4 dígitos como máximo |
18 | referedSale | Numérico | Condicional a tarjeta AMEX | Se usa para indicar si una venta se hizo de forma referida. SOLO para AMEX. Se debe encender este campo con el valor 1 |
22 | authorizationCode | Alfanumérico | Condicional a si fue realizada la autorización telefónica | Código de autorización telefónica. 6 dígitos como máximo. Este campo se encuentra presente sólo si la transacción se autorizó off-line por teléfono |
53 | paymentCondition | Alfanumérico | Opcional | Condición de pago. Sólo se encuentra presente si existe una condición de pago vinculada con la transacción |
54 | additionalAmount | Alfanumérico |
| Contiene el Importe del "Cash Back". Se usa en transacciones del tipo CashBack o Sale + CashBack. Debe contener 12 dígitos como máximo |
70 | effectiveDate | Alfanumérico | Opcional AMEX | Fecha efectiva. Se usa para AMEX con formato YYMM |
73 | interestAmount | Alfanumérico | Opcional | Este campo es por si se necesita enviar el monto de los intereses en el mensaje a Autorizar. Normalmente el monto que llega del POS ya contiene los intereses en el caso de pagar en cuotas. Existe algún caso de alguna tarjeta especial donde el monto hay que enviarlo libre de intereses y justamente el monto de los intereses viaja en este campo |
74 | requestAccountNumber | Alfanumérico | Opcional, default = 0 | Indica si puede recibir el número de cuenta (Visa y Posnet). Valores posible:
|
101 | differDate | Alfanumérico | Opcional | Fecha diferida. Solo utilizada para AMEX |
130 | posPeriod | Numérico | Opcional | Indica el Periodo del POS en que se realiza la operación. Solamente es registrado en VTOL. Longitud 5 |
131 | turn | Numérico | Opcional | Indica Turno en que se realiza la operación. Solamente es registrado en VTOL. Longitud 2 |
132 | operatorCode | Alfanumérico | Opcional | Código de operador. Solamente es registrado en VTOL. Longitud 20 |
133 | operatorName | Alfanumérico | Opcional | Nombre de operador. Solamente es registrado en VTOL. Longitud 50 |
134 | sellerCode | Alfanumérico | Opcional | Código del vendedor que realiza la operación. Solamente es registrado en VTOL. Longitud 20 |
135 | sellerName | Alfanumérico | Opcional | Nombre del vendedor que realiza la operación. Solamente es registrado en VTOL. Longitud 50 |
136 | attentionMode | Alfanumérico | Opcional | Modalidad de atención (AU ó AS). Longitud 2 |
1103 | cardContextId | Numérico | Obligatorio. | Identifica el contexto de la tarjeta. Es un valor de referencia a la tarjeta leída a través del PINPAD. Es el valor devuelto por la última operación "Leer Datos Tarjeta" |
...
Request to Full library: {15:0;1103:20150827182503734;14:1;13:$;12:10000; 11:Sale;10:Manual;8:648;7:1905;6:4507990000977787} |
- Respuesta
Número | Nombre del campo | Tipo de dato | 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 | Alfanumérico | Código de autorización generado por el centro autorizador para la transacción. |
23 | authorizationMode | Alfanumérico | Modo de Autorización:
|
24 | lastTrxId | Numérico | Id de transacción en VTOL Server. La misma queda en estado pendiente y debe ser confirmada o cancelada cuando se cierra la sesión con |
EMVKIT | |||
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:
|
27 | isoCode | Numérico | Código de Respuesta ISO-8583 emitido por el centro autorizador. 2 dígitos como máximo. Ver sección Códigos de Respuesta de VTOL Server |
28 | responseMessage | Alfanumérico | Mensaje de la Respuesta ISO-8583 relacionado con el código del campo 27 |
29 | serialNumber | Numérico | Número que identifica de la terminal lógica en la que se procesó la transacción |
30 | businessNumber | Numérico | Número de comercio en el que se procesó la transacción |
31 | lotNumber | Numérico | Número de lote en el que se registró la transacción |
32 | ticket | Numérico | Número de Ticket correspondiente a la transacción. 4 dígitos como máximo |
33 | creditCardIssuerName | Alfanumérico | Nombre del Centro emisor de la tarjeta |
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” |
42 | lotDefinitionId | Numérico | Identificador de la definición de lote |
58 | workingKey | Alfanumérico | VTOL devuelve este campo tal como lo entrega el Centro Autorizador. Representa la llave que el PINPAD deberá usar para generar el PINBLOCK en la próxima transacción |
68 | rrn | Numérico | Reference referral number |
75 | accountNumber | Numérico | Número de cuenta. Este campo es devuelto si el campo 74- requestAccountNumber fue activado en el requerimiento |
81 | responseAuth | Alfanumérico | Mensaje de repuesta para ser mostrado en el display del POS donde se indican promociones. También es utilizado en la operación de Cash Back, cuando el autorizador responde con código de respuesta 98. En este campo se informará el importe máximo que puede solicitarse |
82 | softwareVersion | Alfanumérico | Versión de la aplicación |
130 | posPeriod | Numérico | [Opcional si viaje en la solicitud] Periodo enviado por el POS. Longitud 5 |
131 | turn | Numérico | [Opcional si viaje en la solicitud] Turno. Longitud 2 |
132 | operatorCode | Alfanumérico | [Opcional si viaje en la solicitud] Código de operador. Longitud 20 |
133 | operatorName | Alfanumérico | [Opcional si viaje en la solicitud] Nombre de operador. Longitud 50 |
134 | sellerCode | Alfanumérico | [Opcional si viaje en la solicitud] Código del vendedor. Longitud 20 |
135 | sellerName | Alfanumérico | [Opcional si viaje en la solicitud] Nombre del vendedor. Longitud 50 |
136 | attentionMode | Alfanumérico | [Opcional si viaje en la solicitud] Modalidad de atención (AU ó AS). Longitud 2 |
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. |
1010 | currentSessionId | Numérico | Identificador de la sesión actual |
1027 | libResponseCode | Numérico | Código de respuesta de la librería. Indica cómo fue procesada la operación en |
EMVKIT: Éxito = 000 Error <> 000 Ver sección Códigos de Respuesta de Librería | |||
1028 | libResponseMessage | Alfanumérico | Mensaje descriptivo del código de respuesta de la librería |
1110 | pinpadApplicationId | Alfanumérico | Identificador de la Aplicación del PINPAD. |
1111 | pinpadApplicationName | Alfanumérico | Nombre de la Aplicación del PINPAD. |
1112 | CardHolderName | Alfanumérico | Nombre del titular de la tarjeta si el track I está presente y la lectura fue por banda. |
1120 | voucherHeader | Mapa | [Opcional 1] Reservado para uso futuro. Retorna los datos del encabezado del voucher. El valor recibido corresponde a un campo compuesto mapa con una serie de claves y valor: [clave1|valor1, clave2|valor2,…, claveN|valorN] |
1121 | voucherFooter | Mapa | [Opcional 1] Reservado para uso futuro. Retorna los datos del pie del voucher. El valor recibido corresponde a un campo compuesto mapa con una serie de claves y valor: [clave1|valor1, clave2|valor2,…, claveN|valorN] |
1122 | voucherBody | Mapa | [Opcional 1] Reservado para uso futuro. Retorna el cuerpo del voucher. El valor recibido corresponde a un campo compuesto mapa con una serie de claves y valor: [clave1|valor1, clave2|valor2,…, claveN|valorN] |
1123 | formattedVoucher | Alfanumérico | [Opcional 2] Reservado para uso futuro. Retorna el voucher completo y formateado para ser impreso. |
1124 | printVoucher | Numérico | [Opcional 3] Reservado para uso futuro. Indica si la impresión del voucher tuvo éxito o no. Valores permitidos:
|
Campos opcionales:
[Opcional 1]: Cuando la autorización fue aprobada y la librería retorna los datos del Voucher separados en encabezado, Cuerpo y pie. No implementado, reservado para uso futuro.
...
IMPORTANTE: La aplicación punto de venta debe tener la capacidad de registrar los distintos trxId que recibe en las sucesivas autorizaciones APROBADAS, dentro de la sesión debido a que debe enviarlas al momento de cerrar la sesión para confirmarlas con VTOL Server. |
F. Obtener Configuración de POS
Operación que permite a la aplicación de punta de venta obtener la información existente en VTOL Server relacionada con los planes, cuotas, tarjetas, prefijos y bines de excepción.
...
Número | Nombre del campo | Tipo de dato | Descripción |
137 | confVersion | Numérico | Número de versión de configuración. |
138 | confData | Alfanumérico | Configuración de POS recibida desde VTOL server. El valor recibido corresponde a los datos registrados en un archivo de configuración codificados en Base64. |
1010 | currentSessionId | Numérico | Identificador de la sesión actual |
1027 | libResponseCode | Numérico | Código de respuesta de la librería. |
1028 | libResponseMessage | Alfanumérico | Mensaje descriptivo del código de respuesta de la librería |
...
Response from Full library: |
G. Cerrar Sesión
Permite cerrar la sesión entre la aplicación de punto de venta y la librería FullEMVKIT.
Internamente la librería Full EMVKIT se sincroniza con VTOL Server, confirmando o cancelando las transacciones procesadas dentro de la sesión.
...
IMPORTANTE: Es importante que una vez finalizada la transacción de pago en la aplicación de punto de venta se realice el cierre de la sesión con la librería FullEMVKIT, indicando si se debe confirmar o reversar las autorizaciones realizadas. |
IMPORTANTE: Cuando se desee cancelar una transacción dentro de una sesión de |
EMVKIT, es requisito realizar la anulación de la transacción teniendo que ingresar nuevamente la tarjeta o ingresar los datos de la misma. |
Mensajería
- Requerimiento
Número | Nombre del campo | Tipo de dato | Obligatorio | Descripción |
11 | trxType | Alfanumérico | Obligatorio | Tipo de Transacción:
|
1008 | closeSessionAction | Alfanumérico | Obligatorio | Acción que se debe realizar sobre el cierre de sesión:
|
1009 | closeTrxIdList | Lista | Obligatorio. Solo cuando el campo 1008 es igual a CLOSE | Lista de los trxId (campo 24) recibidos en la respuestas a las distintas llamadas "Procesar Operación con la Tarjeta" |
250 | actionCode | Alfanumérico | Obligatorio cuando el campo 1008 es igual a FORCED_CLOSE | Identificación del motivo por el cual la sesión tuvo un cierre forzado. Código de 5 caracteres.
|
251 | actionNote | Alfanumérico | Opcional | Motivo informado por el punto de venta cuando la sesión tuvo un cierre no tradicional. Máximo de 50 caracteres |
...
Número | Nombre del campo | Tipo de dato | Descripción |
1010 | currentSessionId | Numérico | Identificador de la sesión que se cierra |
1027 | libResponseCode | Numérico | Código de respuesta de la librería. |
1028 | libResponseMessage | Alfanumérico | Mensaje descriptivo del código de respuesta de la librería |
...
Response from Full library: {1010:28082015003859;1028:Ok;1027:000} |
Âncora | ||||
---|---|---|---|---|
|
Âncora | ||||
---|---|---|---|---|
|
Para determinar que una autorización fue aprobada es necesario:
...
En este caso, si el valor es igual 00 indica que la autorización ha sido Aprobada por VTOL server y que debe capturarse el valor del campo para ser enviado en el cierre de sesión:
24 | lastTrxId |
Âncora | ||||
---|---|---|---|---|
|
Âncora | ||||
---|---|---|---|---|
|
Âncora | ||||
---|---|---|---|---|
|
...
EMVKIT
El código de respuesta de la librería Full EMVKIT y su detalle se encuentran en los siguientes campos:
...
Código | Descripción | Significado |
UDF | INDEFINIDO | Corresponde al estado inicial de la variable de estado. La librería no debe devolver nunca este valor |
000 | (PINPAD) Aprobado | Operación satisfactoria |
001 | (PINPAD) Cancelado por el usuario | Se usó la tecla CANCEL del PINPAD |
002 | (PINPAD) Error ingreso 4 últimos dígitos | El PINPAD detectó errores en el ingreso de los últimos 4 dígitos |
003 | (PINPAD) Error de lectura Track2 | El PINPAD no pudo leer el Track II |
004 | (PINPAD) Error Pinpad-ingreso PIN | No se ingresó correctamente el PIN en el PINPAD |
005 | (PINPAD) Error Chip | El PINPAD no pudo leer o grabar en el CHIP |
006 | (PINPAD) Error Fecha inválida | Se ingresó un fecha inválida en el PINPAD |
007 | (PINPAD) Error TimeOut | El PINPAD suspendió la operación por TIMEOUT |
008 | (PINPAD) Error en secuencia de comando recibido | El PINPAD rechazó un comando por estar fuera de secuencia |
009 | (PINPAD) Error en formato de comando recibido | El PINPAD rechazó un comando por formato erróneo |
011 | (PINPAD) Error de LRC de comando recibido | El PINPAD rechazó un comando por LRC erróneo |
101 | A SESSION is already created. | No se puede crear una nueva sesión con la librería FullEMVKIT, debido a que ya existe una sesión activa. |
102 | Lib is processing requests. | La librería Full EMVKIT se encuentra procesando un requerimiento. |
103 | Lib is processing response. | La librería Full EMVKIT se encuentra procesando una respuesta a un requerimiento. |
104 | Lib is processing a reverse. | La librería se encuentra procesando un reverso. |
198 | Acción invalida | La librería suspendió la operación por que la acción que se requiere es no valida. |
199 | TimeOut | La librería Full EMVKIT suspendió la operación por Timeout |
701 | (API) Archivo de Sesión no existe | No existe el archivo que contiene la información de sesión |
702 | (API) Existen Trxs Pendientes con VTOL Server | Existen Transacciones pendientes con VTOL que no se pueden cerrar |
703 | (API) Estado de Sesión no es válido | El estado de la sesión es inválido |
704 | (API) Tipo de Transacción es invalido | El tipo de transacción enviado en la llamada no es válido |
705 | (API) Error enviando mensaje a VTOL Server | Error enviando autorización a VTOL Server |
706 | (API) Lista de VTOL TrxIds no recibida (Cierre de Sesión) | Lista de VTOL TrxIds no recibida en el Cierre de Sesión con acción CLOSE |
801 | (API-PINPAD) PAN: Proveedor desconocido | La librería no pudo determinar el proveedor de una tarjeta |
802 | (API-PINPAD) PAN: Dígito verificador inválido | La librería encontró inválido el DV de una tarjeta |
803 | (AP-PINPADI) Error en protocolo con el PINPAD | La librería detectó un mensaje del PINPAD fuera de contexto |
804 | (API-PINPAD) Error de formato de mensaje del PINPAD | La librería detectó errores de formato en un mensaje del PINPAD |
805 | (API-PINPAD) Error en configuración de tarjetas | No se pudo identificar la tarjeta o la configuración es nula |
806 | (API-PINPAD) Error llave RSA invalida o nula | La librería no tiene llave RSA para trabajar. Se debe descargar de VTOL |
807 | (API-PINPAD) Error WK nula o formato invalido | La llave WorkingKey enviada por el POS tiene un formato inválido o es nula |
901 | (API) Error del sistema (general) | Error interno de la librería |
902 | (API) Error del sistema (I/O) | Error de entrada/salida o comunicación de la librería |
911 | (API) Error del sistema (carga) | Error al cargar la librería |
912 | (API) Error del sistema (contexto inexistente) | El POS envió un CARD_CONTEXT_ID inexistente |
913 | (API) Error del sistema (contexto inválido) | El POS envió un CARD_CONTEXT_ID inválido |
914 | (API) Error del sistema (carga working key) | Error leyendo o registrando las Claves de Trabajo<br>Interno de la librería |
999 | Error no manejado | Error no manejado |
Âncora | ||||
---|---|---|---|---|
|
Âncora | ||||
---|---|---|---|---|
|
La respuesta que el POS recibe de VTOL se encuentra en los siguientes campos:
...
Código | Descripción |
'00' | Aprobada |
'01' | Pedir autorización telefónica |
'02' | Pedir autorización |
'03' | Comercio inválido |
'04' | Capturar tarjeta |
'05' | Denegada |
'07' | Retenga y llame |
'11' | Aprobada |
'12' | Transacción inválida |
'13' | Monto inválido |
'14' | Tarjeta inválida |
'25' | No existe original |
'30' | Error en formato |
'38' | Excede ingreso de PIN |
'43' | Retener tarjeta |
'45' | No opera en cuotas |
'46' | Tarjeta no vigente |
'47' | PIN requerido |
'48' | Excede máximo de cuotas |
'49' | Error fecha de vencimiento |
'50' | Entrega supera límite |
'51' | Fondos insuficientes |
'53' | Cuenta inexistente |
'54' | Tarjeta vencida |
'55' | PIN incorrecto |
'56' | Tarjeta no habilitada |
'57' | Transacción no permitida |
'58' | Servicio inválido |
'61' | Excede límite |
'65' | Excede límite de tarjeta |
'76' | Llamar al emisor |
'77' | Error plan/cuotas |
'85' | Aprobada |
'86' | No envía fecha original |
'89' | Terminal inválida |
'91' | Emisor fuera de línea |
'94' | Número de secuencia duplicado |
'95' | Re-transmitiendo |
'96' | Error en sistema |
'98' | No aprobada |
'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 | |
Tarjeta 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 | |
Pinpad R. Cod. Error | |
Pinpad A. Cod. Error |
Âncora | ||||
---|---|---|---|---|
|
Âncora | ||||
---|---|---|---|---|
|
Es posible que VTOL responda "Error" en el campo 26 del mensaje de respuesta. Este 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:
...
- Los campos 32 y 31 se responden por compatibilidad hacia atrás con otras implementaciones
- El campo 28 siempre posee la descripción del error
- El campo 27 siempre es "99"
- El campo 26 siempre dice "Error"
- El campo 25 es la hora del requerimiento
Âncora | ||||
---|---|---|---|---|
|
Âncora | ||||
---|---|---|---|---|
|
Âncora | ||||
---|---|---|---|---|
|
A continuación se detalla la información que viaja en el campo confData de un mensaje de solicitud de configuración, que se corresponde con la interface de configuración generada para el POS en VTOL Server.
La versión de Formato de interface utilizada por Crédito Debito Argentina es la v106 Âncora _GoBack _GoBack
...
Ejemplo:
BE:6006;6006;17;ASOCIADO;Pepe-123
BE:601056;601056;16;GIFT CARD;Extra
Âncora | ||||
---|---|---|---|---|
|
Âncora | ||||
---|---|---|---|---|
|
...
EMVKIT
6.5.1 Flujo a Implementar
En este anexo se mencionará el flujo a implementar los tipos de operaciones soportadas por la Librería dependiendo el dispositivo de captura que posea la terminal:
...
Nota |
---|
Nota: La operación "Obtener Configuración de POS" se recomienda ejecutar por lo menos una vez a día: al inicio del día, tras efectuar un cierre de caja, etc. |
6.5.2 Pagos Parciales
A continuación se muestra un diagrama de secuencia donde se explica la operatoria entre el POS, la Librería Full EMVKIT y el Pinpad.
Venta
Cuando en una sesión exista un sólo pago, se deberá efectuar la operatoria de lectura y de procesamiento de la operación. En caso de que en una sesión existan más de un pago; es decir, pagos parciales, se deberá efectuar el proceso de lectura y procesamiento por cada una de las tarjetas.
Anulación de venta
Cuando se desee cancelar una transacción dentro de una sesión de la librería FullEMVKIT, es requisito realizar la anulación de la transacción teniendo que ingresar nuevamente la tarjeta o ingresar los datos de la misma. En caso de anulación de pagos parciales en una sesión, se deberá efectuar una anulación por cada pago parciales, finalizando de esta manera la sesión con tanta cantidad de ventas como de anulaciones de venta.
...
Diagrama de secuencia de Pagos Parciales
Âncora | ||||
---|---|---|---|---|
|
Cuando el centro autorizador responde a una operatoria de autorización con el mensaje "Autorización telefónica", la librería Full EMVKIT de igual forma le envía un comando de requerimiento al pinpad.
...
- Si la transacción intentada era procedente de una tarjeta con chip, se marca la transacción para realizarse nuevamente. El punto de venta reintentará efectuar la transacción.
- Si la transacción intentada era procedente de una tarjeta sin chip, el Centro Autorizador entrega un código de autorización. El punto de venta debe volver a ejecutar las operaciones de la librería Full EMVKIT "Leer Datos de la Tarjeta" y "Procesar Operación con Tarjeta", esta vez informando el código de autorización otorgado por el Centro Autorizador y enviando la transacción como offline.
Aviso |
---|
Importante: El punto de venta es el responsable de validar que tanto la primera transacción de venta como la segunda, en la que se informa el código de autorización, se trate de la misma operación de venta. Para la librería FullEMVKIT, estas transacciones, se consideran como dos ventas individuales. |
Âncora | ||||
---|---|---|---|---|
|
...
EMVKIT
Se recomienda que el punto de venta implemente un timeout con la librería Full EMVKIT de 240 segundos (4 minutos) antes de cerrar la comunicación. Este estimativo se obtiene en base a un análisis de los valores de setup de fábrica del pinpad y considerando los peores escenarios de interacción entre el servidor, el usuario y el pinpad.
Se debe tener en cuenta que el tiempo de espera para una respuesta de la librería Full EMVKIT que se debe configurar en el punto de venta tiene que ser mayor al valor configurado en el archivo business.properties:
...
El valor de este parámetro indica cuánto tiempo espera la librería Full EMVKIT para responder con un error de Timeout y no dejar al punto de venta esperando respuesta.
Por cada solicitud, se activa ese tiempo; y si no tiene una respuesta para enviar al punto de venta, cumplido ese tiempo, se enviará un mensaje de timeout.
Este valor en principio no debería subirse pues está calculado en base a los escenarios de sincronización y autorización.
...