Smart COMM VB6

1. Instalación del driver.

Las terminales se conectan al punto de venta a través del puerto USB, es necesario instalar los drivers correspondientes para que Windows pueda detectar el dispositivo. Para instalar los drivers del dispositivo es necesario descomprimir el archivo USBDriver_V2.22_20180726.zip, ejecutar el instalador USBDriver.exe y seguir las instrucciones en pantalla.
Al haber instalado los drivers, Windows detectará el dispositivo Pin Pad y le asignará un puerto serial de trabajo. Para detectar el puerto serial asignado, se puede visualizar en el Panel de Control, en la sección de Dispositivos de Hardware, bajo el menú de Puertos (COM & LPT).

2. Demo de punto de venta.

Se cuenta con un Demo de punto de venta para simular las transacciones de Venta, Cancelación y Reimpresión.

Descargar el Demo “vb6-connector-demo-dev.zip” del drive descomprimir realizar las referencias al dll y tlb dependiendo la arquitectura x64 o x86 como se indica en el punto 3.- Instalación de componente.

3. Instalación e integración de componentes.

3.1 Instalación de componentes.

Para realizar la integración con la terminal se incluye los siguientes archivos los cuales deberán de ser importados en el proyecto del punto de venta. Los archivos DLL tienen como Target .NET 3.5 Framework o superior.

NetPayConnect.dll (Conector para la terminal Smart PinPad DEV).

NetpayConnect.tlb (Librería requerida para Visual 6.0).

Los archivos dll pueden ser descargados del siguiente drive carpeta “NetpayConnect_v1.1”:

📘

Nota.

Dependiendo el tipo de desarrollo hay que verificar si se encuentra en arquitectura x64 o x86 ya que se deberá agregar las dll correspondientes.

Pasos para la instalación de los componentes.

Abrir línea de comandos de Windows (CMD) en modo Administrador

Ejecutar la línea --> cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 (Ruta donde se encuentre instalado el netframework)

Seguido de --> RegAsm.exe "C:\Utilidades\NetPayConnect.dll" /tlb:NetPayConnect.tlb /codebase

Donde C:\ Es la ruta donde se encuentran los archivos necesarios a instalar (dll y tlb).

📘

Nota.

Si por alguna razón no funciona la asignación del archivo .tlb se puede generar uno nuevo ubicando el archivo .dll con los siguientes comandos:
Ejecutar la línea --> cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 (Ruta donde se encuentre instalado el netframework)
Seguido de -> RegAsm.exe "C:\Utilidades\NetPayConnect.dll" /tlb /codebase

3.2 Integración componente.

El componente NetpayConnect.dll es una librería que puede ser integrada en cualquier lenguaje de desarrollo basado en Windows que soporte este tipo de librería. Actualmente la librería está compilada por plataformas x86 para poder trabajar en plataformas x86 (32 bits) y x64 (64 bits) según sea el caso.

Referenciar DLL a Visual Basic6.

Abrir Pestaña de Project y hacer clic en References, En la pantalla de References Dar clic a la opción de browse y buscar el archivo con la extensión tlb una vez agregado seleccionar la Referencia NetPayConnect de la lista.

4. Integración de las librerías.

La aplicación SmartPinPad DEV ya contiene la funcionalidad por default o Método SendData()
La librería contiene una clase llamada Operator que es utilizado para mandar a llamar los métodos.
El método SendData() realiza o procesa los pagos de tarjeta de crédito y débito de la marca Visa, MasterCard y American Express.

📘

Nota.

En la clase general se agrega la línea para poder utilizar la dll. En el caso de Visual Studio 6 se integra el .tlb

Ejemplo de cómo utilizar la dll una vez referenciada e instalada en windows:

Dim conector As NetPayConnect.Operator 
Set conector = New NetPayConnect.Operator

A continuación, se enumeran los parámetros que recibe el método Operator (Define el tipo de transacción a ejecutar, puede recibir los siguientes valores):

Campo

Descripción

setAmount()

Se asigna el monto a cobrar. Recibe valor de tipo Double (solo acepta 2 decimales).

setMSI()

Se asigna el número de meses sin intereses al momento de procesar la transacción.
Por default se envía el valor 0 (Sin meses).
Posibles valores que acepta: 3, 6, 9, 12, 18.

setFolio()

Se asigna el folio personalizado a utilizar en el Ticket.

sendData()

Una vez asignado el monto como mínimo se manda a llamar este método para procesar la transacción en la PinPad.

sendPrint()

Reimprime una transacción (requiere orderId). Para realizar una transacción de prueba debemos de utilizar al menos el método de setAmount() para colocar el monto a cobrar y procesar la transacción con el método sendData().

ReceiveData()

Después de ejecutar algún método tipo send se activa el tipo RecieveData() el cual activa la lectura del puerto. Este regresa mensaje de respuesta en texto.

4.1 Lectura de respuesta solicitud de autorización.

Al ejecutar el método SendData() el conector enviará la transacción al Smart PinPad DEV el cual procesa la transacción y retornará los parámetros que muestran el resultado de la operación.

Para leer la respuesta de la transacción el componente retorna un valor booleano indicando true si todo se procesó de manera exitosa y false en caso contrario.

El proceso para el procesamiento de una transacción es el siguiente:

  1. El punto de venta asigna los parámetros necesarios, SetAmount.
  2. El punto de venta ejecuta el método SendData().
  3. El conector activa la comunicación con el dispositivo Pinpad y solicita sea deslizada o insertada o por vía contactless la tarjeta del cliente en el Pinpad.
  4. Al recibir los datos de la tarjeta del PinPad procesa la transacción.
  5. El punto de venta lee las variables de retorno de la transacción activando el método RecieveData().
  6. Se le el método GetResponse() el cual regresa un objeto del tipo data:

Las variables que pueden ser leídas cuando el evento GetResponse() es ejecutado, obtendrá un objeto tipo respuesta el cual contiene una propiedad idReport y otro objeto el cual contiene todas las propiedades de la venta.

idReport: Contiene el tipo de objeto que pueden ser lo siguientes:

PENDIENTE

Ejemplo de código para obtener los datos de la venta:

Dim conector As NetPayConnect.Operator 
 Dim ResponseData As NetPayConnect.Response 
 Set conector = New NetPayConnect.Operator 
      conector.SetAmount CDbl(Val(txtAmount.Text))
      conector.SetTip CDbl(Val(txtTip.Text))
      conector.SetFolio (txtFolio.Text)
      conector.SetMSI (Val(cmbMsi.Text))
     Text1.Text = ""
     lblResult.Text = ""
    Dim resultRead As String
    resultRead = conector.sendData()

Set ResponseData = conector.GetResponse() if ResponseData is Nothing Then Exit Sub      if ResponseData.idReport = 1 then  
        ‘ obtiene datos de la venta 
    Else if ResponseData.idReport = -1 then 
        ‘ ocurrió un error en la venta   
    End if       
     
End if

Response data

Id

Nombre campo

Descripción

Tipo de dato

1

affiliation

Contiene el número de afiliación asignado por el banco a una tienda el cual debe de ser impreso en el recibo de la operación.

VARCHAR2(50 BYTE)

2

applicationLabel

Información sobre la lectura de la tarjeta.

VARCHAR2(100 BYTE)

3

arqc

Contiene un criptograma que debe de ser impreso en el recibo del cliente, siempre y cuando sea leído una tarjeta de CHIP.

VARCHAR2(250 BYTE)

4

aid

Información sobre la lectura de la tarjeta.

VARCHAR2(50 BYTE)

5

amount

Monto total de la transacción con todo y propina.

NUMBER(15,2)

6

authCode

Valor generado por la autoridad de autorización para una transacción aprobada.

VARCHAR2(7 BYTE)

7

bankName

Nombre de la institución financiera emisora de la tarjeta.

VARCHAR2(250 BYTE)

8

cardExpDate

Fecha de expiración de la tarjeta en formato MM/YY.

VARCHAR2(5 BYTE)

9

cardType

Identificador de tipo de tarjeta. Débito (D), crédito (C).

VARCHAR2(20 BYTE)

10

cardTypeName

Representa el nombre del tipo de marca de la tarjeta, Visa, Master Card, etc.

VARCHAR2(250 BYTE)

11

cityName

Ciudad con la que se dio de alta el comercio.

VARCHAR2(150 BYTE)

12

responseCode

Contiene un código de dos posiciones que indica si una transacción fue autorizada o declinada, si el valor es 00 la transacción fue autorizada, cualquier otro valor diferente de 00 se considera como una transacción declinada.

VARCHAR2(2 BYTE)

13

folioNumber

Número identificador de transacción que puede ser enviado en la solicitud de venta.

VARCHAR2(250 BYTE)

14

hasPin

Regresa un valor booleano el cual indica si requiere firma o es por pin.

false o true

15

hexSign

Firma autógrafa encriptada solo en el caso de que la tarjeta no cuente con NIP.

VARCHAR2(4000 BYTE)

16

internalNumber

Folio interno NetPay.

VARCHAR2(20 BYTE)

17

isQps

Indica el monto cobrado por quick payment service

VARCHAR2(1 BYTE)

18

message

Mensaje que indica el estatus de la transacción. Puede indicar si esta fue aceptada o declinada y por qué motivo.
Ejemplo: Aprobada, Declinada, Fondos Insuficientes.

VARCHAR2(200 BYTE)

19

moduleCharge

Identificador interno.

VARCHAR2(20 BYTE)

20

moduleLote

Identificador interno.

NUMBER (9)

21

customerName

Nombre del tarjeta habiente.

VARCHAR2(100 BYTE)

22

terminalId

Número de serie de la terminal.

VARCHAR2(20 BYTE)

23

orderId

Identificador de número de transacción. Puede ser utilizado posteriormente en reimpresión y cancelación.

VARCHAR2(36 BYTE)

24

preAuth

Pre-autorización.

NUMBER (9)

25

preStatus

Pre-autorización.

NUMBER(15,2)

26

promotion

Indica el número de meses sin intereses en que una transacción fue parcializada.

VARCHAR2(20 BYTE)

27

rePrintDate

Indica la versión de la aplicación.

VARCHAR2(100 BYTE)

28

rePrintMark

Identificador interno.

VARCHAR2(100 BYTE)

29

reprintModule

Identificador interno.

VARCHAR2(1 BYTE)

30

cardNumber

Contiene los últimos cuatro dígitos de la tarjeta que deben de ser desplegados en el recibo del cliente.

VARCHAR2(50 BYTE)

31

storeName

Nombre del comercio dado de alta.

VARCHAR2(60 BYTE)

32

streetName

Dirección del comercio dado de alta.

VARCHAR2(150 BYTE)

33

ticketDate

Fecha y hora de la transacción.

VARCHAR2(100 BYTE)

34

tipAmount

Indica el monto para propina, en caso de ser enviado.

NUMBER

35

tipLessAmount

Indica el monto menos propina.

NUMBER(15,2)

36

transDate

Fecha y hora de la transacción.

DATE

37

transType

Indica el tipo de operación realizada. Venta (A), Cancelación (V).

VARCHAR2(5 BYTE)

38

transactionCertificate

Información sobre la lectura de la tarjeta.

VARCHAR2(50 BYTE)

4.2 Solicitud de cancelación (Refund) de transacción

Mensaje para cancelar una venta (Auth) realizada el mismo día. Solo se ocupa el parámetro orderId y se manda a llamar el método sendCancel()

Dim conector As NetPayConnect.Operator  
Set conector = New NetPayConnect.Operator  
conector.sendCancel(orderId)

4.3 Solicitud de Reimpresión de transacción.

Mensaje para reimprimir una venta solo se ocupa el parámetro orderId y se manda a llamar el método *sendPrint():

Dim conector As NetPayConnect.Operator  
Set conector = New NetPayConnect.Operator  
conector.sendPrint(orderId)

4.4 Despliegue de Puerto disponible

Se puede solicitar a dll en qué puerto está conectada la pinpad.

Dim conector As NetPayConnect.Operator 
 Set conector = New NetPayConnect.Operator 
Dim texto As String 
 Texto = conector.findPortByDescription()

4.5 Mensaje de solicitud de versión

Mensaje que solicita la versión de la dll.

Dim conector As NetPayConnect.Operator 
 Set conector = New NetPayConnect.Operator 
Dim texto As String 
 Texto = conector.Version()

4.6 Recibiendo Respuesta.

Forma de recibir la respuesta: Extraer información del objeto de forma manual.

textBox4.Text += System.Environment.NewLine + "Afiliacion: " + connectorPAX.getAffiliation();
                textBox4.Text += System.Environment.NewLine + "ApplicationLabel: " + connectorPAX.getApplicationLabel();
                textBox4.Text += System.Environment.NewLine + "ARQC: " + connectorPAX.getARQC();
                textBox4.Text += System.Environment.NewLine + "AID: " + connectorPAX.getAID();
                textBox4.Text += System.Environment.NewLine + "Amount: " + connectorPAX.getAmount();
                textBox4.Text += System.Environment.NewLine + "AuthCode: " + connectorPAX.getAuthCode();
                textBox4.Text += System.Environment.NewLine + "BankName: " + connectorPAX.getBankName();
                textBox4.Text += System.Environment.NewLine + "CardExpDate: " + connectorPAX.getCardExpDate();
                textBox4.Text += System.Environment.NewLine + "CardType: " + connectorPAX.getCardType();
                textBox4.Text += System.Environment.NewLine + "CardTypeName: " + connectorPAX.getCardTypeName();
                textBox4.Text += System.Environment.NewLine + "CityName: " + connectorPAX.getCityName();
                textBox4.Text += System.Environment.NewLine + "ResponseCode: " + connectorPAX.getResponseCode();
                textBox4.Text += System.Environment.NewLine + "HasPin: " + connectorPAX.getHasPin();
                textBox4.Text += System.Environment.NewLine + "HexSign: " + connectorPAX.getHexSign();
                textBox4.Text += System.Environment.NewLine + "IsQps: " + connectorPAX.getIsQPS();
                textBox4.Text += System.Environment.NewLine + "Message: " + connectorPAX.getMessage();
                textBox4.Text += System.Environment.NewLine + "ModuleCharge: " + connectorPAX.getModuleCharge();
                textBox4.Text += System.Environment.NewLine + "ModuleLote: " + connectorPAX.getModuleLote();
                textBox4.Text += System.Environment.NewLine + "CustomerName: " + connectorPAX.getCustomerName();
                textBox4.Text += System.Environment.NewLine + "TerminalId: " + connectorPAX.getTerminalId();
                textBox4.Text += System.Environment.NewLine + "OrderId: " + connectorPAX.getOrderId();
                textBox4.Text += System.Environment.NewLine + "PreAuth: " + connectorPAX.getPreAuth();
                textBox4.Text += System.Environment.NewLine + "PreStatus: " + connectorPAX.getPreStatus();
                textBox4.Text += System.Environment.NewLine + "Promotion: " + connectorPAX.getPromotion();
                textBox4.Text += System.Environment.NewLine + "RePrintDate: " + connectorPAX.getRePrintDate();
                textBox4.Text += System.Environment.NewLine + "RePrintMark: " + connectorPAX.getRePrintMark();
                textBox4.Text += System.Environment.NewLine + "ReprintModule: " + connectorPAX.getReprintModule();
                textBox4.Text += System.Environment.NewLine + "CardNumber: " + connectorPAX.getCardNumber();
                textBox4.Text += System.Environment.NewLine + "StoreName: " + connectorPAX.getStoreName();
                textBox4.Text += System.Environment.NewLine + "StreetName: " + connectorPAX.getStreetName();
                textBox4.Text += System.Environment.NewLine + "TicketDate: " + connectorPAX.getTicketDate();
                textBox4.Text += System.Environment.NewLine + "TipAmount: " + connectorPAX.getTipAmount();
                textBox4.Text += System.Environment.NewLine + "TipLessAmount: " + connectorPAX.getTipLessAmount();
                textBox4.Text += System.Environment.NewLine + "TransDate: " + connectorPAX.getTransDate();
                textBox4.Text += System.Environment.NewLine + "TransType: " + connectorPAX.getTransType();
                textBox4.Text += System.Environment.NewLine + "TransactionCertificate: " + connectorPAX.getTransactionCertificate();
                textBox4.Text += System.Environment.NewLine + "FolioId: " + connectorPAX.getFolioNumber();

Ejemplo:

Afiliacion: 7389108
ApplicationLabel: VISA CREDITO
ARQC: 103426BD75921F19
AID: A0000000031010
Amount: 10.0
AuthCode: 222222
BankName: BANORTE
CardExpDate: 01/21
CardType: C
CardTypeName: VISA
CityName: Guadalupe NUEVO LEON
ResponseCode: 00
HasPin: False
HexSign: 00000100000001DA0000009E000000040800031CFF02FF02D300A765326D2D0CBD4D9EDC98BA66222EA38BE00018815E50F59690AD9333263380FF021DF3C9146D3985ACCC16DE2FFB173F34E1A1655AEF8F1B10F2C9E5AEE831827C42DB2284F64D87CE62FF020583DCA4E7C4BD12FB3AFDFF0018647662396A7BD59338D300BBF6FCFF0083DD89FF02FF02BE8680FF02FF027CFF02C980FF02FF02FF02FF02D44BD5210821BAD6436612BCE2A5A1D47833E91135BECB91FF00A23DA163F76063C7FE139DC7A4EB00D3B60440FF024426EEF94C927D83DAE60B2F9F47682E46D1E369F3BABDE3C482E8FF022454EACA221BB3E133FCA4F7784A23FF0033BE4FB1BFF8BE6DAA84D08655C16196F452FF02FF02FF02E43E60FF02FF02E4D4FF0248FF02DE40FF02D9C680FF02B7D7E5E1DDDC393446BF26CACF9072B562F9578CDC735212BC38116AE744F32913000582A1B66919DF3BCF9009F464C60A4A4C86530280FF02307B9C9D73621860874A5065B5744EB87DEF2121F161FA96C8DFF10FDD99D354FF024B6B7D20133A6DA9F20C4EE33C88C91950043BDAB4393413F8FF02FF02FF02FF02FF02FF02FF02FF02FF02F9BE3DB62932870EC93902F01F921CDD0747E110BE1ED8A229800C8843E5C90B5FFDEEE350B7DB2C8E3FD699BC5B7D0016D316173176FF026CFD6CE500486F49A3FAFE377B717706D3CF158B7EB9D2678ED9A81E58FC2232AAC8FF0200DAC008EAAEDD90FF02FF02FF02
IsQps: 0
Message: Transacción exitosa
ModuleCharge: 37
ModuleLote: 1
CustomerName: TREJO PECINA/AGUSTIN      
TerminalId: 1490293930
OrderId: 201011080753-1490293930
PreAuth: 0
PreStatus: 0
Promotion: 00
RePrintDate: 1.2.4_20201008
RePrintMark: VISA
ReprintModule: C
CardNumber: 8425
StoreName: CICAP
StreetName: AVE PABLO LIVAS 7200
TicketDate: OCT. 11, 20 08:07:53 
TipAmount: 0.0
TipLessAmount: 10.0
TransDate: 2020-10-11 08:07:54.CDT
TransType: A
TransactionCertificate: B50599631D57FC5D
FolioId: 1

Did this page help you?