Comandos Visa

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

Views 182 Downloads 12 File size 440KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 1/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 VisaGetBatchCloseData Modificación en parámetros de retorno de VisaGetLastTrxData Corrección de struct.

JB

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 todos los comandos. Modificación en los mensajes de requerimientos de Venta y Devolución.

JB

1.05

Xx/xx/xxxx

-

-

1.06

28/06/2007

Se agregan transacciones offline y fecha y hora de los ultimo cierre de lote

FN

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

VA

26/12/2016

Agregado del comando vpiPurchaseExtraCash

IORTS

Visa POS Integrado - Especificacion de interface DLL v1_20

Pág 2/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 30/12/2010

2. Índice 1. 2. 3. 4.

Histórico .................................................................................................... 2 Índice ........................................................................................................ 3 Arquitectura de la solución global ............................................................. 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 v1_20

Pág 3/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 4/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 30/12/2010

5. Definición de tipos de datos Tipo en API BYTE LONG LPSTR WORD

Descripción Entero de 8 bits sin signo Entero de 32 bits con signo Puntero de 32 bits a una cadena Entero de 16 bits sin signo

Tipo en VB6 Byte Long ByVal String Integer

6. Definición de códigos de retorno 6.1. Códigos de retorno generales Id de Error VPI_OK

Código Interno 0

VPI_MORE_REC

1

VPI_FAIL

11

VPI_TIMEOUT_EXP

12

VPI_INVALID_IN_CMD VPI_INVALID_IN_PARAM

901 902

VPI_INVALID_OUT_CMD VPI_GENERAL_FAIL

903 999

Descripción 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. El registro fue recuperado en forma exitosa, pero faltan registros por enviar. La operación no pudo efectuarse o bien el comando no pudo ser enviado. Tiempo de espera agotado sin que se obtenga una respuesta. El comando no es soportado por el POS. El formato de los parámetros de entrada no es correcto. La respuesta enviada por el POS no es válida. Error general en la operación.

6.2. Códigos de errores en la información enviada al POS Id de Error VPI_INVALID_TICKET VPI_INVALID_PLAN VPI_INVALID_INDEX VPI_EMPTY_BATCH

Código Interno 102 103 104 105

Descripción El número de cupón no existe en el lote del POS. El código de plan no existe en las tablas del POS. El índice requerido no existe en la tabla del POS. El lote se encuentra vacío.

Visa POS Integrado - Especificacion de interface DLL v1_20

Pág 5/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 30/12/2010

6.3. Códigos de errores en la información ingresada por el usuario Id de Error VPI_TRX_CANCELED VPI_DIF_CARD

Código Interno 201 202

VPI_INVALID_CARD

203

VPI_EXPIRED_CARD VPI_INVALID_TRX

204 205

Descripción La operación fue cancelada por el usuario La tarjeta deslizada por el usuario no coincide con la pedida. La tarjeta deslizada no es válida o hubo un error en la lectura de la banda. La tarjeta deslizada está vencida. 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 VPI_ERR_COM VPI_ERR_PRINT

Código Interno 301 302

Descripción El POS no pudo comunicarse con el host. 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 VPI_PURCHASE VPI_VOID VPI_REFUND VPI_REFUND_VOID

Código interno 1 2 3 4

Descripción Venta Anulación de venta Devolución 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 v1_20

Pág 6/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 WORD WORD BYTE

com; baudRate; byteSize; parity;

// // // //

Nombre del puerto. Ej.: "COM1", etc. Velocidad de transmisión: Ej.: 19200 Largo del byte. Ej.: 7, 8 Paridad. Ej: 'N' ninguna, 'E' par, 'O'

WORD

stopBits;

// Bits de parada. Ej.: 1, 2

impar }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 LPSTR LPSTR LPSTR LPSTR LPSTR LPSTR LPSTR LPSTR char

amount; receiptNumber; instalmentCount; issuerCode; planCode; tip; merchantCode merchantName cuit linemode;

// // // // // // // // // //

Monto *100 Número de factura Cant. de cuotas Código de tarjeta Código de plan Propina *100 Código de comercio MAX 15 Razon social del comercio MAX 23 CUIT del comercio MAX 23 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 LPSTR LPSTR LPSTR

originalTicket; issuerCode; merchantName cuit

// // // //

Número de cupón de trx. original Código de tarjeta Razon social del comercio MAX 23 CUIT del comercio MAX 23

}vpiVoidIn_t; Visa POS Integrado - Especificacion de interface DLL v1_20

Pág 7/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 LPSTR LPSTR LPSTR LPSTR LPSTR LPSTR LPSTR LPSTR LPSTR char

amount; instalmentCount; issuerCode; planCode; originalTicket; originalDate; receiptNumber; merchantCode merchantName cuit linemode;

// // // // // // // // // // //

Monto *100 Cant. de cuotas Código de tarjeta Código de plan Nro. ticket de la trx. original Fecha de la trx. Original Número de factura Código de comercio MAX 15 Razon social del comercio MAX 23 CUIT del comercio MAX 23 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 LPSTR LPSTR LPSTR LPSTR LPSTR LPSTR LPSTR LPSTR LPSTR LPSTR

hostRespCode; hostMessage; authCode; ticketNumber; batchNumber; customerName; panFirst6; panLast4; date; time; terminalID

// Código de respuesta del host // Mensaje de respuesta del host // Número de autorización // Número de cupón // Número de lote // Nombre del tarjeta-habiente // Primeros 6 dígitos de la tarjeta // Ultimo 4 dígitos de la tarjeta // Fecha de la transacción “dd/mm/aaaa” // Hora de la transacción “hh:mm:ss” // 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 v1_20

Pág 8/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 30/12/2010

LPSTR LPSTR LPSTR LPSTR

hostRespCode; date; time; terminalID

// // // //

Código de respuesta del host Fecha ("DD/MM/AAAA") Hora ("HH:MM:SS") 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; LPSTR acquirerCode; LPSTR batchNumber; LPSTR issuerCode; LPSTR purchaseCount; LPSTR purchaseAmount; LPSTR voidCount; LPSTR voidAmount; LPSTR refundCount; LPSTR refundAmount; LPSTR refvoidCount; LPSTR refvoidAmount; LPSTR date; LPSTR time; LPSTR terminalID

// // // // // // // // // // // // // // //

Índice del registro Código de procesador Número de lote Código de tarjeta Cantidad de ventas Monto total de ventas Cantidad anulaciones de venta Monto total de anulaciones Cantidad de devoluciones venta Monto total de devoluciones Cantidad anulaciones devolución Monto total anul. Devolución Fecha ("DD/MM/AAAA") Hora ("HH:MM:SS") 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; LPSTR acquirerCode; LPSTR issuerCode; LPSTR issuerName; LPSTR maxInstCount; LPSTR terminalID

//Índice del registro //Código de procesador //Código de tarjeta //Nombre de la tarjeta //Máxima cantidad de cuotas // 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 v1_20

Pág 9/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 30/12/2010

LPSTR LPSTR LPSTR LPSTR

issuerCode; planCode; planLabel; terminalID

// // // //

Código de tarjeta Código de plan Nombre del plan 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 v1_20

Pág 10/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 11/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 12/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 13/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 14/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 15/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 16/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 17/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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” paramIn.instalmentCount = “3” paramIn.issuerCode = “1” paramIn.originalDate =”12/01/2007” paramIn.originalTicket = “1000007” paramIn.planCode = “1” paramIn.receiptNumber = “12345678” paramIn.merchantCode= “” paramIn.merchantName= “” paramIn.cuit= “”

‘ $15.00 ‘ 3 cuotas ‘ VISA ‘ NORMAL

‘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 v1_20

Pág 18/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 19/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 20/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 21/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 22/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 23/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 24/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 25/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 26/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 27/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 28/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 30/12/2010

Ejemplo (VB6): Dim result As Integer Dim paramOut As vpiIssuerOut_t paramOut.acquirerCode paramOut.issuerCode = paramOut.issuerName = paramOut.maxInstCount paramOut.terminalId =

= String(4, vbNull) String(4, vbNull) String(17, vbNull) = String(3, vbNull) 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 v1_20

Pág 29/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 30/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 31/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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” paramIn.receiptNumber = “12345678” paramIn.instalmentCount = “1” paramIn.issuerCode = “EL” paramIn.planCode = “1” paramIn.tip = “10000” paramIn.merchantCode= “” paramIn.merchantName= “” paramIn.cuit= “”

‘ $15.00 ‘ 1 cuotas ‘ VISA DEBITO ‘ NORMAL ‘ $100 Extra Cash

Visa POS Integrado - Especificacion de interface DLL v1_20

Pág 32/ 33

Confidential

Proyecto:

Visa POS Integrado

Versión :

Tipo:

Especificaciones de interface

Date :

1.10 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 v1_20

Pág 33/ 33

Confidential