Sei sulla pagina 1di 33

Proyecto: Visa POS Integrado Versión : 1.

10
Tipo: Especificaciones de interface Date :
30/12/2010

Proyecto: Visa POS Integrado


Tipo: Especificaciones interface

VISA POS Integrado


Especificaciones de interface

Observaciones

This document is the CONFIDENTIAL and PROPRIETARY information of INGENICO and


may not be published or disclosed without INGENICO prior written permission. Duplication or
transmission is permitted for internal purposed only, provided that any copy must bear this
legend in full.

Visa POS Integrado - Especificacion de interface DLL Pág 1/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

1. Histórico
Versión Fecha Descripción Autor

1.00 23/10/2006 Creación del documento. JB

1.01 30/10/2006 Modificación en nombre de estructura de JB


VisaGetBatchCloseData
Modificación en parámetros de retorno de
VisaGetLastTrxData
Corrección de struct.

1.02 01/12/2006 Modificaciones en todos los comandos JB

1.03 07/02/2007 Modificaciones en todos los comandos MLG

1.04 15/06/2007 Modificación en los mensajes de respuesta de JB


todos los comandos.
Modificación en los mensajes de requerimientos
de Venta y Devolución.

1.05 Xx/xx/xxxx - -

1.06 28/06/2007 Se agregan transacciones offline y fecha y hora FN


de los ultimo cierre de lote

1.07 12/10/2007 Correcciones de consulta de tarjetas y planes FN

1.10 30/12/2010 -Agregado del bin de la tarjeta (6 primeros VA


digitos)

26/12/2016 Agregado del comando vpiPurchaseExtraCash IORTS

Visa POS Integrado - Especificacion de interface DLL Pág 2/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

2. Índice
1. Histórico .................................................................................................... 2
2. Índice ........................................................................................................ 3
3. Arquitectura de la solución global ............................................................. 4
4. Utilización de la DLL ................................................................................. 4
4.1. Proyecto de C++ ................................................................................ 4
4.2. Proyecto de VB6 ................................................................................ 4
5. Definición de tipos de datos ...................................................................... 5
6. Definición de códigos de retorno .............................................................. 5
6.1. Códigos de retorno generales ........................................................... 5
6.2. Códigos de errores en la información enviada al POS ...................... 5
6.3. Códigos de errores en la información ingresada por el usuario ......... 6
6.4. Códigos de errores en el cierre de la transacción ............................. 6
7. Códigos de transacciones......................................................................... 6
8. Timeouts ................................................................................................... 6
9. Estructuras de datos ................................................................................. 7
9.1. comParams_t .................................................................................... 7
9.2. vpiPurchaseIn_t ................................................................................. 7
9.3. vpiVoidIn_t ......................................................................................... 7
9.4. vpiRefundIn_t .................................................................................... 8
9.5. vpiTrxOut_t ........................................................................................ 8
9.6. vpiBatchCloseOut_t ........................................................................... 8
9.7. vpiBatchCloseDataOut_t ................................................................... 9
9.8. vpiIssuerOut_t ................................................................................... 9
9.9. vpiPlanOut_t .................................................................................... 10
10. Definición de funciones ....................................................................... 10
10.1. vpiOpenPort ................................................................................. 10
10.2. vpiClosePort ................................................................................. 11
10.3. vpiTestConnection ....................................................................... 12
10.4. vpiPurchase ................................................................................. 13
10.5. vpiVoid ......................................................................................... 15
10.6. vpiRefund ..................................................................................... 17
10.7. vpiRefundVoid .............................................................................. 19
10.8. vpiBatchClose .............................................................................. 21
10.9. vpiGetLastTrxData ....................................................................... 22
10.10. vpiGetBatchCloseData ................................................................. 24
10.11. vpiPrintTicket ............................................................................... 26
10.12. vpiPrintBatchClose ....................................................................... 27
10.13. vpiGetIssuer ................................................................................. 28
10.14. vpiGetPlan ................................................................................... 30
10.15. vpiPurchaseExtraCash................................................................. 32

Visa POS Integrado - Especificacion de interface DLL Pág 3/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

3. Arquitectura de la solución global

Caja

Sistema propio

VpiPc.dll

IngStore.dll POS
RS232

4. Utilización de la DLL

4.1. Proyecto de C++


Se deberá incluir en el proyecto:
 VpiPc.h
 VpiPc.lib
 IngStore.h
 IngStore.lib

Además se deberá colocar en la carpeta de sistema el archivo:


 VpiPc.dll
 IngStore.dll

4.2. Proyecto de VB6


Se deberá incluir en el proyecto:
 VpiPc.bas

Además se deberá colocar en la carpeta de sistema el archivo:


 VpiPc.dll
 IngStore.dll

Visa POS Integrado - Especificacion de interface DLL Pág 4/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

5. Definición de tipos de datos

Tipo en API Descripción Tipo en VB6


BYTE Entero de 8 bits sin signo Byte
LONG Entero de 32 bits con signo Long
LPSTR Puntero de 32 bits a una cadena ByVal String
WORD Entero de 16 bits sin signo Integer

6. Definición de códigos de retorno

6.1. Códigos de retorno generales


Id de Error Código Descripción
Interno
VPI_OK 0 Operación exitosa.
En el caso de que se esté enviando un comando
que recupera varios registros, indica que es el
último registro que queda.
VPI_MORE_REC 1 El registro fue recuperado en forma exitosa, pero
faltan registros por enviar.
VPI_FAIL 11 La operación no pudo efectuarse o bien el
comando no pudo ser enviado.
VPI_TIMEOUT_EXP 12 Tiempo de espera agotado sin que se obtenga
una respuesta.
VPI_INVALID_IN_CMD 901 El comando no es soportado por el POS.
VPI_INVALID_IN_PARAM 902 El formato de los parámetros de entrada no es
correcto.
VPI_INVALID_OUT_CMD 903 La respuesta enviada por el POS no es válida.
VPI_GENERAL_FAIL 999 Error general en la operación.

6.2. Códigos de errores en la información enviada al POS


Id de Error Código Descripción
Interno
VPI_INVALID_TICKET 102 El número de cupón no existe en el lote del POS.
VPI_INVALID_PLAN 103 El código de plan no existe en las tablas del POS.
VPI_INVALID_INDEX 104 El índice requerido no existe en la tabla del POS.
VPI_EMPTY_BATCH 105 El lote se encuentra vacío.

Visa POS Integrado - Especificacion de interface DLL Pág 5/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

6.3. Códigos de errores en la información ingresada por el


usuario
Id de Error Código Descripción
Interno
VPI_TRX_CANCELED 201 La operación fue cancelada por el usuario
VPI_DIF_CARD 202 La tarjeta deslizada por el usuario no coincide con
la pedida.
VPI_INVALID_CARD 203 La tarjeta deslizada no es válida o hubo un error
en la lectura de la banda.
VPI_EXPIRED_CARD 204 La tarjeta deslizada está vencida.
VPI_INVALID_TRX 205 Los datos ingresados no se corresponden con
ninguna transacción existente en el lote.

6.4. Códigos de errores en el cierre de la transacción


Id de Error Código Descripción
Interno
VPI_ERR_COM 301 El POS no pudo comunicarse con el host.
VPI_ERR_PRINT 302 El POS no pudo imprimir el ticket.

7. Códigos de transacciones
Son los códigos que identifican las transacciones básicas, es decir, Venta,
Anulación de venta, Devolución y Anulación de devolución.
Son utilizados solamente en la función vpiGetLastTrx.

Id de transacción Código Descripción


interno
VPI_PURCHASE 1 Venta
VPI_VOID 2 Anulación de venta
VPI_REFUND 3 Devolución
VPI_REFUND_VOID 4 Anulación de devolución

8. Timeouts
La aplicación maneja un tiempo de espera de respuesta por parte del POS.
Para aquellos comandos que no requieren interacción con el usuario o con el
host de Visa, este está fijo en 3 segundos, según la constante:
VPI_TIMEOUT_STD.
Para el resto de los comandos, el timeout es configurable.

Visa POS Integrado - Especificacion de interface DLL Pág 6/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

9. Estructuras de datos

9.1. comParams_t
Se utiliza para configurar en el puerto serie al abrirlo (ver vpiOpenPort)

typedef struct COM_PARAMS{

LPSTR com; // Nombre del puerto. Ej.: "COM1", etc.


WORD baudRate; // Velocidad de transmisión: Ej.: 19200
WORD byteSize; // Largo del byte. Ej.: 7, 8
BYTE parity; // Paridad. Ej: 'N' ninguna, 'E' par, 'O'
impar
WORD stopBits; // Bits de parada. Ej.: 1, 2

}comParams_t;

9.2. vpiPurchaseIn_t
Se utiliza para enviar al POS los datos de la compra ingresados en la caja
(ver vpiPurchase)

typedef struct PURCHASE_IN{

LPSTR amount; // Monto *100


LPSTR receiptNumber; // Número de factura
LPSTR instalmentCount; // Cant. de cuotas
LPSTR issuerCode; // Código de tarjeta
LPSTR planCode; // Código de plan
LPSTR tip; // Propina *100
LPSTR merchantCode // Código de comercio MAX 15
LPSTR merchantName // Razon social del comercio MAX 23
LPSTR cuit // CUIT del comercio MAX 23
char linemode; // trx. Online(1) Offline(distinto de
1)

}vpiPurchaseIn_t

Nota: si no tiene plan ID, se deberá completar con un espacio en blanco el


atributo planCode.

9.3. vpiVoidIn_t
Se utiliza para enviar al POS los datos de la anulación (sea de venta o
devolución) ingresados en la caja (ver vpiVoid)

typedef struct VOID_IN{

LPSTR originalTicket; // Número de cupón de trx. original


LPSTR issuerCode; // Código de tarjeta
LPSTR merchantName // Razon social del comercio MAX 23
LPSTR cuit // CUIT del comercio MAX 23

}vpiVoidIn_t;

Visa POS Integrado - Especificacion de interface DLL Pág 7/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

9.4. vpiRefundIn_t
Se usa para enviar al POS los datos de la devolución ingresados en la caja
(ver vpiRefund)

typedef struct REFUND_IN{

LPSTR amount; // Monto *100


LPSTR instalmentCount; // Cant. de cuotas
LPSTR issuerCode; // Código de tarjeta
LPSTR planCode; // Código de plan
LPSTR originalTicket; // Nro. ticket de la trx. original
LPSTR originalDate; // Fecha de la trx. Original
LPSTR receiptNumber; // Número de factura
LPSTR merchantCode // Código de comercio MAX 15
LPSTR merchantName // Razon social del comercio MAX 23
LPSTR cuit // CUIT del comercio MAX 23
char linemode; // trx. Online(1) Offline(distinto de
1)

}vpiRefundIn_t;

Nota: si no tiene plan ID, se deberá completar con un espacio en blanco el


atributo planCode.

9.5. vpiTrxOut_t
Se utiliza para recuperar la información enviada por el POS en las
operaciones de venta, anulación y devolución.

typedef struct TRX_OUT{

LPSTR hostRespCode; // Código de respuesta del host


LPSTR hostMessage; // Mensaje de respuesta del host
LPSTR authCode; // Número de autorización
LPSTR ticketNumber; // Número de cupón
LPSTR batchNumber; // Número de lote
LPSTR customerName; // Nombre del tarjeta-habiente
LPSTR panFirst6; // Primeros 6 dígitos de la tarjeta
LPSTR panLast4; // Ultimo 4 dígitos de la tarjeta
LPSTR date; // Fecha de la transacción “dd/mm/aaaa”
LPSTR time; // Hora de la transacción “hh:mm:ss”
LPSTR terminalID // Terminal ID

}vpiTrxOut_t;

9.6. vpiBatchCloseOut_t
Se utiliza para recuperar la información enviada por el POS al realizar una
operación de cierre de lote (ver vpiBatchClose). Esta estructura no devuelve
los totales obtenidos en el cierre de lote (ver vpiBatchCloseDataOut_t),
solamente el resultado de la operación contra el host de Visa.

typedef struct BATCHCLOSE_OUT{


Visa POS Integrado - Especificacion de interface DLL Pág 8/ 33 Confidential
v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

LPSTR hostRespCode; // Código de respuesta del host


LPSTR date; // Fecha ("DD/MM/AAAA")
LPSTR time; // Hora ("HH:MM:SS")
LPSTR terminalID // Terminal ID

}vpiBatchCloseOut_t;

9.7. vpiBatchCloseDataOut_t
Se utiliza para recuperar la información enviada por el POS al realizar una
obtención de los totales del cierre de lote (ver vpiGetBatchCloseData)

typedef struct BATCHCLOSEDATA_OUT{

WORD index; // Índice del registro


LPSTR acquirerCode; // Código de procesador
LPSTR batchNumber; // Número de lote
LPSTR issuerCode; // Código de tarjeta
LPSTR purchaseCount; // Cantidad de ventas
LPSTR purchaseAmount; // Monto total de ventas
LPSTR voidCount; // Cantidad anulaciones de venta
LPSTR voidAmount; // Monto total de anulaciones
LPSTR refundCount; // Cantidad de devoluciones venta
LPSTR refundAmount; // Monto total de devoluciones
LPSTR refvoidCount; // Cantidad anulaciones devolución
LPSTR refvoidAmount; // Monto total anul. Devolución
LPSTR date; // Fecha ("DD/MM/AAAA")
LPSTR time; // Hora ("HH:MM:SS")
LPSTR terminalID // Terminal ID

}vpiBatchCloseDataOut_t;

9.8. vpiIssuerOut_t
Se usa para obtener un registro de tarjeta desde la tabla de tarjetas del POS.

typedef struct ISSUER_OUT{

WORD index; //Índice del registro


LPSTR acquirerCode; //Código de procesador
LPSTR issuerCode; //Código de tarjeta
LPSTR issuerName; //Nombre de la tarjeta
LPSTR maxInstCount; //Máxima cantidad de cuotas
LPSTR terminalID // Terminal ID

}vpiIssuerOut_t;

9.9. vpiPlanOut_t
Se usa para obtener un registro de plan desde la tabla de planes del POS.

typedef struct PLAN_OUT{

WORD index; // Índice del registro


Visa POS Integrado - Especificacion de interface DLL Pág 9/ 33 Confidential
v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

LPSTR issuerCode; // Código de tarjeta


LPSTR planCode; // Código de plan
LPSTR planLabel; // Nombre del plan
LPSTR terminalID // Terminal ID

}vpiPlanOut_t;

10. Definición de funciones


10.1. vpiOpenPort
Abre el puerto serial de comunicaciones para poder enviar y recibir los
comandos. El puerto debe estar cerrado para que la ejecución sea exitosa.
Es necesario para ejecutar el resto de los comandos.

Prototipo:
WORD __stdcall vpiOpenPort (comParams_t* params);

Parámetros:
 params: Parámetros de configuracion del puerto serial.

Retorna:
 VPI_OK
 VPI_FAIL

Ejemplo (VB6):

Dim result As Integer


Dim comParams As vpiComParams_t

comParams.com = “COM1”
comParams.baudRate = 9600
comParams.byteSize = 8
comParams.parity = Asc(“N”)
comParams.stopBits = 1

result = vpiOpenPort(comParams)
If (Result = VPI_OK) Then
MsgBox "Puerto abierto exitosamente!"
Else
MsgBox "Error abriendo el puerto!"
End If

Visa POS Integrado - Especificacion de interface DLL Pág 10/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

10.2. vpiClosePort
Cierra el puerto serial de comunicaciones y lo deja libre para otras
aplicaciones. El puerto debe estar abierto para que la ejecución sea exitosa.
Luego de ejecutar este comando, no se puede ejecutar ningún otro comando.

Prototipo:
WORD __stdcall vpiClosePort(void);

Parámetros:
Ninguno.

Retorna:
 VPI_OK
 VPI_FAIL

Ejemplo (VB6):

Dim result As Integer

result = vpiClosePort()
If (result = VPI_OK) Then
MsgBox "Puerto cerrado exitosamente!"
Else
MsgBox "Error cerrando el puerto!"
End If

Visa POS Integrado - Especificacion de interface DLL Pág 11/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

10.3. vpiTestConnection
Envía un mensaje por el puerto y espera la respuesta al mismo en forma
sincrónica, para verificar que la conexión con el POS esté OK. La aplicación
queda esperando hasta tenga la respuesta o bien expire el timeout default. El
puerto debe estar abierto para que la ejecución sea exitosa.

Prototipo:
WORD __stdcall vpiTestConnection(void);

Parámetros:
Ninguno.

Retorna:
 VPI_OK
 VPI_FAIL
 VPI_TIMEOUT_EXP

Ejemplo (VB6):

Dim result As Integer

result = vpiTestConnection
Select Case result
Case VPI_OK
MsgBox “Test exitoso!”
Case VPI_FAIL
MsgBox “No se pudo enviar el comando!”
Case VPI_TIME_EXP
MsgBox “No se recibió respuesta del POS!”
End Select

Visa POS Integrado - Especificacion de interface DLL Pág 12/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

10.4. vpiPurchase
Envía la orden de realizar una venta y espera la respuesta de la misma en
forma sincrónica. La aplicación queda esperando hasta tenga la respuesta o
bien expire el timeout especificado. El puerto debe estar abierto para que la
ejecución sea exitosa.

Prototipo:
WORD __stdcall vpiPurchase(vpiPurchaseIn_t* intput, vpiTrxOut_t* output,
LONG timeout);

Parámetros:
 input: Estructura con los datos de entrada de la venta.
 output: Estructura con los datos de respuesta de la venta. Se completa
dentro de la función
 timeout: Tiempo de espera de respuesta en segundos.

Retorna:
 VPI_OK
 VPI_FAIL
 VPI_TIMEOUT_EXP
 VPI_INVALID_PLAN
 VPI_TRX_CANCELED
 VPI_DIF_CARD
 VPI_INVALID_CARD
 VPI_EXPIRED_CARD
 VPI_ERR_COM
 VPI_ERR_PRINT
 VPI_INVALID_IN_CMD
 VPI_INVALID_IN_PARAM
 VPI_INVALID_OUT_CMD
 VPI_GENERAL_FAIL

Visa POS Integrado - Especificacion de interface DLL Pág 13/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

Ejemplo (VB6):

Dim paramIn As vpiPurchaseIn_t


Dim paramOut As vpiTrxOut_t
Dim result As Integer

‘Cargo los datos


paramIn.amount = “1500” ‘ $15.00
paramIn.receiptNumber = “12345678”
paramIn.instalmentCount = “3” ‘ 3 cuotas
paramIn.issuerCode = “1” ‘ VISA
paramIn.planCode = “1” ‘ NORMAL
paramIn.tip = “0” ‘ Sin propina
paramIn.merchantCode= “”
paramIn.merchantName= “”
paramIn.cuit= “”
‘Asigno suficiente memoria para la respuesta
paramOut.hostRespCode = String(3, vbNull)
paramOut.hostMessage = String(33, vbNull)
paramOut.authCode = String(7, vbNull)
paramOut.ticketNumber = String(8, vbNull)
paramOut.batchNumber = String(4, vbNull)
paramOut.customerName = String(27, vbNull)
paramOut.panFirst6=String(7,VbNull)
paramOut.panLast4 = String(5, vbNull)
paramOut.date = String(11, vbNull)
paramOut.time = String(9, vbNull)
paramOut.terminalId = String(9, vbNull)
‘Envío el comando
result = vpiPurchase(paramIn, paramOut, 60) ‘Timeout 60 segs
Select Case result
Case VPI_OK
MsgBox “Comunicación con POS completada en forma exitosa!”
ProcesarRespuesta(paramOut)
Case VPI_FAIL
MsgBox “No se pudo enviar el comando!”
Case VPI_TIME_EXP
MsgBox “No se recibió respuesta del POS!”
...
End Select

Visa POS Integrado - Especificacion de interface DLL Pág 14/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

10.5. vpiVoid
Envía la orden de realizar una anulación de venta y espera la respuesta de la
misma en forma sincrónica. La aplicación queda esperando hasta tenga la
respuesta o bien expire el timeout especificado. El puerto debe estar abierto
para que la ejecución sea exitosa.

Prototipo:
WORD __stdcall vpiVoid(vpiVoidIn_t* intput, vpiTrxOut_t* output, LONG
timeout);

Parámetros:
 input Estructura con los datos de entrada de la anulación.
 output Estructura con los datos de respuesta de la anulación. Se
completa dentro de la función.
 timeout Tiempo de espera de respuesta en segundos.

Retorna:
 VPI_OK
 VPI_FAIL
 VPI_TIMEOUT_EXP
 VPI_INVALID_IN_CMD
 VPI_INVALID_IN_PARAM
 VPI_INVALID_OUT_CMD
 VPI_GENERAL_FAIL
 VPI_INVALID_TICKET
 VPI_EMPTY_BATCH
 VPI_TRX_CANCELED
 VPI_DIF_CARD
 VPI_INVALID_CARD
 VPI_EXPIRED_CARD
 VPI_INVALID_TRX
 VPI_ERR_COM
 VPI_ERR_PRINT

Visa POS Integrado - Especificacion de interface DLL Pág 15/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

Ejemplo (VB6):

Dim result As Integer


Dim paramIn As vpiVoidIn_t
Dim paramOut As vpiTrxOut_t

paramIn.originalTicket = “1000007”
paramIn.issuerCode = “1”

paramOut.hostRespCode = String(3, vbNull)


paramOut.hostMessage = String(33, vbNull)
paramOut.authCode = String(7, vbNull)
paramOut.ticketNumber = String(8, vbNull)
paramOut.batchNumber = String(4, vbNull)
paramOut.customerName = String(27, vbNull)
paramOut.panFirst6 = String(7,VbNull)
paramOut.panLast4 = String(5, vbNull)
paramOut.date = String(11, vbNull)
paramOut.time = String(9, vbNull)
paramOut.terminalId = String(9, vbNull)

result = vpiVoid(paramIn, paramOut, 60)


Select Case result
Case VPI_OK
MsgBox “Comunicación con POS completada en forma exitosa!”
ProcesarRespuesta(paramOut)
Case VPI_FAIL
MsgBox “No se pudo enviar el comando!”
Case VPI_TIME_EXP
MsgBox “No se recibió respuesta del POS!”
...
End Select

Visa POS Integrado - Especificacion de interface DLL Pág 16/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

10.6. vpiRefund
Envía la orden de realizar una devolución y espera la respuesta de la misma
en forma sincrónica. La aplicación queda esperando hasta tenga la respuesta
o bien expire el timeout especificado. El puerto debe estar abierto para que la
ejecución sea exitosa.

Prototipo:
WORD __stdcall vpiRefund (vpiRefundIn_t* input, vpiTrxOut_t* output, LONG
timeout);

Parámetros:
 input Estructura con los datos de entrada de la devolución.
 output Estructura con los datos de respuesta de la devolución. Se
completa dentro de la función.
 timeout Tiempo de espera de respuesta en segundos.

Retorna:
 VPI_OK
 VPI_FAIL
 VPI_TIMEOUT_EXP
 VPI_INVALID_IN_CMD
 VPI_INVALID_IN_PARAM
 VPI_INVALID_OUT_CMD
 VPI_GENERAL_FAIL
 VPI_INVALID_PLAN
 VPI_TRX_CANCELED
 VPI_DIF_CARD
 VPI_INVALID_CARD
 VPI_EXPIRED_CARD
 VPI_INVALID_TRX
 VPI_ERR_COM
 VPI_ERR_PRINT

Visa POS Integrado - Especificacion de interface DLL Pág 17/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

Ejemplo (VB6):

Dim paramIn As vpiRefundIn_t


Dim paramOut As vpiTrxOut_t
Dim result As Integer

‘Seteo los parametros


paramIn.amount = “1500” ‘ $15.00
paramIn.instalmentCount = “3” ‘ 3 cuotas
paramIn.issuerCode = “1” ‘ VISA
paramIn.originalDate =”12/01/2007”
paramIn.originalTicket = “1000007”
paramIn.planCode = “1” ‘ NORMAL
paramIn.receiptNumber = “12345678”
paramIn.merchantCode= “”
paramIn.merchantName= “”
paramIn.cuit= “”

‘Aloco la memoria necesaria para la respuesta


paramOut.hostRespCode = String(3, vbNull)
paramOut.hostMessage = String(33, vbNull)
paramOut.authCode = String(7, vbNull)
paramOut.ticketNumber = String(8, vbNull)
paramOut.batchNumber = String(4, vbNull)
paramOut.customerName = String(27, vbNull)
paramOut.panFirst6= string(7,vbNull)
paramOut.panLast4 = String(5, vbNull)
paramOut.date = String(11, vbNull)
paramOut.time = String(9, vbNull)
paramOut.terminalId = String(9, vbNull)

result = vpiRefund(paramIn, paramOut, 60) ’60 segs


Select Case result
Case VPI_OK
MsgBox “Comunicación con POS completada en forma exitosa!”
ProcesarRespuesta(paramOut)
Case VPI_FAIL
MsgBox “No se pudo enviar el comando!”
Case VPI_TIME_EXP
MsgBox “No se recibió respuesta del POS!”
...
End Select

Visa POS Integrado - Especificacion de interface DLL Pág 18/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

10.7. vpiRefundVoid
Envía la orden de realizar una anulación de devolución y espera la respuesta
de la misma en forma sincrónica. La aplicación queda esperando hasta tenga
la respuesta o bien expire el timeout especificado. El puerto debe estar
abierto para que la ejecución sea exitosa.

Prototipo:
WORD __stdcall vpiRefundVoid(vpiVoidIn_t* intput, vpiTrxOut_t* output,
LONG timeout);

Parámetros:
 input: Estructura con los datos de entrada de la anulación.
 output: Estructura con los datos de respuesta de la anulación. Se
completa dentro de la función.
 timeout: Tiempo de espera de respuesta en segundos.

Retorna:
 VPI_OK
 VPI_FAIL
 VPI_TIMEOUT_EXP
 VPI_INVALID_IN_CMD
 VPI_INVALID_IN_PARAM
 VPI_INVALID_OUT_CMD
 VPI_GENERAL_FAIL
 VPI_INVALID_TICKET
 VPI_EMPTY_BATCH
 VPI_TRX_CANCELED
 VPI_DIF_CARD
 VPI_INVALID_CARD
 VPI_EXPIRED_CARD
 VPI_INVALID_TRX
 VPI_ERR_COM
 VPI_ERR_PRINT

Visa POS Integrado - Especificacion de interface DLL Pág 19/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

Ejemplo (VB6):

Dim result As Integer


Dim paramIn As vpiVoidIn_t
Dim paramOut As vpiTrxOut_t

paramIn.originalTicket = “1000007”
paramIn.issuerCode = “1”

paramOut.hostRespCode = String(3, vbNull)


paramOut.hostMessage = String(33, vbNull)
paramOut.authCode = String(7, vbNull)
paramOut.ticketNumber = String(8, vbNull)
paramOut.batchNumber = String(4, vbNull)
paramOut.customerName = String(27, vbNull)
paramOut.panFirst6 = String(7,VbNull)
paramOut.panLast4 = String(5, vbNull)
paramOut.date = String(11, vbNull)
paramOut.time = String(9, vbNull)
paramOut.terminalId = String(9, vbNull)

result = vpiRefundVoid(paramIn, paramOut, 60)


Select Case result
Case VPI_OK
MsgBox “Comunicación con POS completada en forma exitosa!”
ProcesarRespuesta(paramOut)
Case VPI_FAIL
MsgBox “No se pudo enviar el comando!”
Case VPI_TIME_EXP
MsgBox “No se recibió respuesta del POS!”
...
End Select

Visa POS Integrado - Especificacion de interface DLL Pág 20/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

10.8. vpiBatchClose
Envía la orden de realizar un cierre de lote. La aplicación queda esperando
hasta tenga la respuesta o bien expire el timeout especificado. El puerto debe
estar abierto para que la ejecución sea exitosa. No devuelve los totales, que
se obtienen con la función vpiGetBatchCloseData.

Prototipo:
WORD __stdcall vpiBatchClose(vpiBatchCloseOut_t* output, LONG timeout);

Parámetros:
 output: Estructura con el resultado de la operación contra el host. Se
completa dentro de la función.
 timeout: Tiempo de espera de respuesta en segundos.

Retorna:
 VPI_OK
 VPI_FAIL
 VPI_TIMEOUT_EXP
 VPI_INVALID_IN_CMD
 VPI_INVALID_IN_PARAM
 VPI_INVALID_OUT_CMD
 VPI_GENERAL_FAIL
 VPI_TRX_CANCELED
 VPI_ERR_COM
 VPI_ERR_PRINT
 VPI_EMPTY_BATCH

Ejemplo (VB6):

Dim result As Integer


Dim paramOut As vpiBatchCloseOut_t

paramOut.hostRespCode = String(3, vbNull)


paramOut.date = String(11, vbNull)
paramOut.time = String(9, vbNull)
paramOut.terminalId = String(9, vbNull)

result = vpiBatchClose(paramOut, 60)


Select Case result
Case VPI_OK
MsgBox “Comunicación con POS completada en forma exitosa!”
ProcesarRespuesta(paramOut)
Case VPI_FAIL
MsgBox “No se pudo enviar el comando!”
Case VPI_TIME_EXP
MsgBox “No se recibió respuesta del POS!”
...
End Select

Visa POS Integrado - Especificacion de interface DLL Pág 21/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

10.9. vpiGetLastTrxData
Envía la orden de obtener la información de la última transacción realizada y
espera la respuesta de la misma en forma sincrónica. La aplicación queda
esperando hasta tenga la respuesta o bien expire el timeout especificado. El
puerto debe estar abierto para que la ejecución sea exitosa.

Prototipo:
WORD __stdcall vpiGetLastTrxData(WORD* trxCode, vpiTrxOut_t* output);

Parámetros:
 trxCode: Código del tipo de transacción: VPI_PURCHASE, VPI_VOID,
VPI_REFUND, VPI_REFUND_VOID
 output: Estructura con los datos de respuesta de la última transacción
realizada. Se completa dentro de la función.

Retorna:
 VPI_OK
 VPI_FAIL
 VPI_TIMEOUT_EXP
 VPI_INVALID_IN_CMD
 VPI_INVALID_IN_PARAM
 VPI_INVALID_OUT_CMD
 VPI_GENERAL_FAIL
 VPI_INVALID_TICKET
 VPI_INVALID_PLAN
 VPI_EMPTY_BATCH
 VPI_TRX_CANCELED
 VPI_DIF_CARD
 VPI_INVALID_CARD
 VPI_EXPIRED_CARD
 VPI_ERR_COM
 VPI_ERR_PRINT

Visa POS Integrado - Especificacion de interface DLL Pág 22/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

Ejemplo (VB6):

Dim paramOut As vpiTrxOut_t


Dim result As Integer
Dim trxCode As Integer

‘Aloco la memoria necesaria para la respuesta


paramOut.hostRespCode = String(3, vbNull)
paramOut.hostMessage = String(33, vbNull)
paramOut.authCode = String(7, vbNull)
paramOut.ticketNumber = String(8, vbNull)
paramOut.batchNumber = String(4, vbNull)
paramOut.customerName = String(27, vbNull)
paramOut.panFirst6 = String(7,VbNull)
paramOut.panLast4 = String(5, vbNull)
paramOut.date = String(11, vbNull)
paramOut.time = String(9, vbNull)
paramOut.terminalId = String(9, vbNull)

result = vpiGetLastTrxData(trxCode, paramOut)


Select Case result
Case VPI_OK
MsgBox “Comunicación con POS completada en forma exitosa!”
Select Case trxCode
Case VPI_PURCHASE
MsgBox “La última trx fue una Venta!!”
ProcesarVenta(paramOut)
Case VPI_VOID
...
Case VPI_REFUND
...
Case VPI_REFUND_VOID
...
End Select
Case VPI_FAIL
MsgBox “No se pudo enviar el comando!”
Case VPI_TIME_EXP
MsgBox “No se recibió respuesta del POS!”
...
End Select

Visa POS Integrado - Especificacion de interface DLL Pág 23/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

10.10. vpiGetBatchCloseData
Envía la orden de obtener un determinado registro, con los totales por tarjeta
del último cierre realizado y espera la respuesta de la misma en forma
sincrónica. Para obtener todos los registros se debe hacer un ciclo desde 0
hasta que el código de respuesta sea distinto de VPI_MORE_REC. La
aplicación queda esperando hasta tenga la respuesta o bien expire el timeout
especificado. El puerto debe estar abierto para que la ejecución sea exitosa.

Prototipo:
WORD __stdcall vpiGetBatchCloseData(WORD index,
vpiBatchCloseDataOut_t* output);

Parámetros:
 index: Índice del registro que deseo recuperar
 output: Estructura con la información del registro que quiero.

Retorna:
 VPI_OK
 VPI_MORE_REC
 VPI_FAIL
 VPI_TIMEOUT_EXP
 VPI_INVALID_IN_CMD
 VPI_INVALID_IN_PARAM
 VPI_INVALID_OUT_CMD
 VPI_GENERAL_FAIL
 VPI_INVALID_INDEX
 VPI_EMPTY_BATCH
 VPI_INVALID_TRX

Visa POS Integrado - Especificacion de interface DLL Pág 24/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

Ejemplo (VB6):

Dim result As Integer


Dim paramOut(0 To 10) As vpiBatchCloseOut_t
Dim recIndex As Integer

paramOut.acquirerCode = String(4, vbNull)


paramOut.issuerCode = String(4, vbNull)
paramOut.batchNumber = String(4, vbNull)
paramOut.purchaseCount = String(5, vbNull)
paramOut.voidCount = String(5, vbNull)
paramOut.refundCount = String(5, vbNull)
paramOut.refvoidCount = String(5, vbNull)
paramOut.purchaseAmount = String(13, vbNull)
paramOut.voidAmount = String(13, vbNull)
paramOut.refundAmount = String(13, vbNull)
paramOut.refvoidAmount = String(13, vbNull)
paramOut.terminalId = String(9, vbNull)

result= 0
recIndex= 0
While (result = VPI_MORE_REC)
result= vpiGetBatchCloseData(recIndex,paramOut(recIndex))
recIndex= recIndex+1
Wend
Select Case result
Case VPI_OK
MsgBox “Comunicación con POS completada en forma exitosa!”
MsgBox “Se obtuvieron” & Str(recIndex) & “ registros!”
ProcesarRespuesta(paramOut)
Case VPI_FAIL
MsgBox “No se pudo enviar el comando!”
Case VPI_TIME_EXP
MsgBox “No se recibió respuesta del POS!”
...
End Select

Visa POS Integrado - Especificacion de interface DLL Pág 25/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

10.11. vpiPrintTicket
Envía la orden de re-imprimir el ticket de la última transacción. La aplicación
queda esperando hasta tenga la respuesta o bien expire el timeout default. El
puerto debe estar abierto para que la ejecución sea exitosa.

Prototipo:
WORD __stdcall vpiPrintTicket(void);

Parámetros:
Ninguno.

Retorna:
 VPI_OK
 VPI_FAIL
 VPI_TIMEOUT_EXP
 VPI_INVALID_IN_CMD
 VPI_INVALID_IN_PARAM
 VPI_INVALID_OUT_CMD
 VPI_GENERAL_FAIL
 VPI_EMPTY_BATCH

Ejemplo (VB6):

Dim result As Integer

Result= vpiPrintTicket
Select Case result
Case VPI_OK
MsgBox “Comunicación con POS completada en forma exitosa!”
Case VPI_FAIL
MsgBox “No se pudo enviar el comando!”
Case VPI_TIME_EXP
MsgBox “No se recibió respuesta del POS!”
...
End Select

Visa POS Integrado - Especificacion de interface DLL Pág 26/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

10.12. vpiPrintBatchClose
Envía la orden de re-imprimir el ticket del último cierre de lote. La aplicación
queda esperando hasta tenga la respuesta o bien expire el timeout default. El
puerto debe estar abierto para que la ejecución sea exitosa.

Prototipo:
WORD __stdcall vpiPrintBatchClose(void);

Parámetros:
Ninguno.

Retorna:
 VPI_OK
 VPI_FAIL
 VPI_TIMEOUT_EXP
 VPI_INVALID_IN_CMD
 VPI_INVALID_IN_PARAM
 VPI_INVALID_OUT_CMD
 VPI_GENERAL_FAIL
 VPI_EMPTY_BATCH

Ejemplo (VB6):

Dim result As Integer

Result= vpiPrintBatchClose
Select Case result
Case VPI_OK
MsgBox “Comunicación con POS completada en forma exitosa!”
Case VPI_FAIL
MsgBox “No se pudo enviar el comando!”
Case VPI_TIME_EXP
MsgBox “No se recibió respuesta del POS!”
...
End Select

Visa POS Integrado - Especificacion de interface DLL Pág 27/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

10.13. vpiGetIssuer
Envía el comando para obtener un registro de la tabla de tarjetas del POS y
espera la respuesta de la misma en forma sincrónica. Para obtener todos los
registros se debe hacer un ciclo desde 0 hasta que el código de respuesta
sea distinto de VPI_MORE_REC. La aplicación queda esperando hasta
tenga la respuesta o bien expire el timeout especificado. El puerto debe estar
abierto para que la ejecución sea exitosa.

Prototipo:
WORD __stdcall vpiGetIssuer(WORD index, vpiIssuerOut_t* output);

Parámetros:
 index: Índice del registro a obtener.
 output: Estructura con los datos de la tarjeta. Se completa dentro de la
función.

Retorna:
 VPI_OK
 VPI_MORE_REC
 VPI_FAIL
 VPI_TIMEOUT_EXP
 VPI_INVALID_IN_CMD
 VPI_INVALID_IN_PARAM
 VPI_INVALID_OUT_CMD
 VPI_GENERAL_FAIL
 VPI_INVALID_INDEX

Visa POS Integrado - Especificacion de interface DLL Pág 28/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

Ejemplo (VB6):

Dim result As Integer


Dim paramOut As vpiIssuerOut_t

paramOut.acquirerCode = String(4, vbNull)


paramOut.issuerCode = String(4, vbNull)
paramOut.issuerName = String(17, vbNull)
paramOut.maxInstCount = String(3, vbNull)
paramOut.terminalId = String(9, vbNull)

result= 0
recIndex= 0
While (result = VPI_MORE_REC)
result = vpiGetIssuer(recIndex, paramOut(recIndex))
recIndex= recIndex+1
Wend
Select Case result
Case VPI_OK
MsgBox “Comunicación con POS completada en forma exitosa!”
MsgBox “Se obtuvieron” & Str(recIndex) & “ registros!”
ProcesarRespuesta(paramOut)
Case VPI_FAIL
MsgBox “No se pudo enviar el comando!”
Case VPI_TIME_EXP
MsgBox “No se recibió respuesta del POS!”
...
End Select

Visa POS Integrado - Especificacion de interface DLL Pág 29/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

10.14. vpiGetPlan
Envía el comando para obtener un registro de la tabla de planes del POS y
espera la respuesta de la misma en forma sincrónica. Para obtener todos los
registros se debe hacer un ciclo desde 0 hasta que el código de respuesta
sea distinto de VPI_MORE_REC. La aplicación queda esperando hasta tenga
la respuesta o bien expire el timeout especificado. El puerto debe estar
abierto para que la ejecución sea exitosa.

Prototipo:
WORD __stdcall vpiGetPlan(WORD index, vpiPlanOut_t* output);

Parámetros:
 index: Índice del registro a obtener.
 output: Estructura con los datos del plan. Se completa dentro de la
función.

Retorna:
 VPI_OK
 VPI_MORE_REC
 VPI_FAIL
 VPI_TIMEOUT_EXP
 VPI_INVALID_IN_CMD
 VPI_INVALID_IN_PARAM
 VPI_INVALID_OUT_CMD
 VPI_GENERAL_FAIL
 VPI_INVALID_INDEX

Visa POS Integrado - Especificacion de interface DLL Pág 30/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

Ejemplo (VB6):

Dim result As Integer


Dim paramOut As vpiPlanOut_t

paramOut.issuerCode = String(4, vbNull)


paramOut.planCode = String(2, vbNull)
paramOut.planLabel = String(16, vbNull)
paramOut.terminalId = String(9, vbNull)

result= 0
recIndex= 0
While (result = VPI_MORE_REC)
result = vpiGetIssuer(recIndex, paramOut(recIndex))
recIndex= recIndex+1
Wend
Select Case result
Case VPI_OK
MsgBox “Comunicación con POS completada en forma exitosa!”
MsgBox “Se obtuvieron” & Str(recIndex) & “ registros!”
ProcesarRespuesta(paramOut)
Case VPI_FAIL
MsgBox “No se pudo enviar el comando!”
Case VPI_TIME_EXP
MsgBox “No se recibió respuesta del POS!”
...
End Select

Visa POS Integrado - Especificacion de interface DLL Pág 31/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

10.15. vpiPurchaseExtraCash
Envía la orden de realizar una venta con Extra Cash y espera la respuesta
de la misma en forma sincrónica. La aplicación queda esperando hasta tenga
la respuesta o bien expire el timeout especificado. El puerto debe estar
abierto para que la ejecución sea exitosa.

Prototipo:
WORD __stdcall vpiPurchaseExtraCash(vpiPurchaseIn_t* intput, vpiTrxOut_t*
output, LONG timeout);

Parámetros:
 input: Estructura con los datos de entrada de la venta.
 output: Estructura con los datos de respuesta de la venta. Se completa
dentro de la función
 timeout: Tiempo de espera de respuesta en segundos.

Retorna:
 VPI_OK
 VPI_FAIL
 VPI_TIMEOUT_EXP
 VPI_INVALID_PLAN
 VPI_TRX_CANCELED
 VPI_DIF_CARD
 VPI_INVALID_CARD
 VPI_EXPIRED_CARD
 VPI_ERR_COM
 VPI_ERR_PRINT
 VPI_INVALID_IN_CMD
 VPI_INVALID_IN_PARAM
 VPI_INVALID_OUT_CMD
 VPI_GENERAL_FAIL

Ejemplo (VB6):

Dim paramIn As vpiPurchaseIn_t


Dim paramOut As vpiTrxOut_t
Dim result As Integer

‘Cargo los datos


paramIn.amount = “1500” ‘ $15.00
paramIn.receiptNumber = “12345678”
paramIn.instalmentCount = “1” ‘ 1 cuotas
paramIn.issuerCode = “EL” ‘ VISA DEBITO
paramIn.planCode = “1” ‘ NORMAL
paramIn.tip = “10000” ‘ $100 Extra Cash
paramIn.merchantCode= “”
paramIn.merchantName= “”
paramIn.cuit= “”

Visa POS Integrado - Especificacion de interface DLL Pág 32/ 33 Confidential


v1_20
Proyecto: Visa POS Integrado Versión : 1.10
Tipo: Especificaciones de interface Date :
30/12/2010

‘Asigno suficiente memoria para la respuesta


paramOut.hostRespCode = String(3, vbNull)
paramOut.hostMessage = String(33, vbNull)
paramOut.authCode = String(7, vbNull)
paramOut.ticketNumber = String(8, vbNull)
paramOut.batchNumber = String(4, vbNull)
paramOut.customerName = String(27, vbNull)
paramOut.panFirst6=String(7,VbNull)
paramOut.panLast4 = String(5, vbNull)
paramOut.date = String(11, vbNull)
paramOut.time = String(9, vbNull)
paramOut.terminalId = String(9, vbNull)
‘Envío el comando
result = vpiPurchaseExtraCash(paramIn, paramOut, 60) ‘Timeout 60
segs
Select Case result
Case VPI_OK
MsgBox “Comunicación con POS completada en forma exitosa!”
ProcesarRespuesta(paramOut)
Case VPI_FAIL
MsgBox “No se pudo enviar el comando!”
Case VPI_TIME_EXP
MsgBox “No se recibió respuesta del POS!”
...
End Select

Visa POS Integrado - Especificacion de interface DLL Pág 33/ 33 Confidential


v1_20

Potrebbero piacerti anche