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