Smart COMM VB6
1. Driver installation.
The terminals are connected to POS through USB port, it is necessary to install the corresponding drivers since Windows needs them to detect the device. To install the device drivers it is necessary to unzip the file USBDriver_V2.22_20180726.zip, run the installer USBDriver.exe and follow the instructions on the screen.
Once the drivers installation are done, Windows will detect our Smart Pin Pad device and assign it to a working serial port. To watch the assigned serial port, it can be viewed on Control Panel, in the Hardware Devices section, under the Ports (COM & LPT) menu.
2. POS demo.
There is a Demo POS to simulate the transactions of Sale, Cancellation and Reprint.
Download the Demo “vb6-connector-demo-dev.zip” from the drive unzip make the references to the dll and tlb depending x64 or x86 architecture as indicated in point [ 3.- Component installation.](https://docs.netpay.com.mx/docs/smart-comm-vb6#3-instalación-e-integración-de -components)
3. Installation and integration of components.
3.1 Installation of components.
To integrate with the terminal, the following files are included, which must be imported into th POS project. The DLLs have as Target .NET 3.5 Framework or higher.
NetPayConnect.dll (Connector for Smart PinPad DEV terminal).
NetpayConnect.tlb (Library required for Visual 6.0).
The dll files can be downloaded from the following drive folder “NetpayConnect_v1.1”:
Note.
Depending on the type of development, it is necessary to verify if it is in x64 or x86 architecture since the corresponding dll must be added.
Steps for the installation of the components.
Open Windows Command Prompt (CMD) in Administrator mode
Execute the line --> cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 (Path where the netframework is installed)
Followed by --> RegAsm.exe "C:\Utilities\NetPayConnect.dll" /tlb:NetPayConnect.tlb /codebase
Where C:\ Is the path where the necessary files to install (dll and tlb) are located.
Note.
If for some reason the assignment of the .tlb file does not work, a new one can be generated by locating the .dll file with the following commands:
Execute the line --> cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 (Path where the netframework is installed)
Followed by -> RegAsm.exe "C:\Utilities\NetPayConnect.dll" /tlb /codebase
3.2 Component integration.
The NetpayConnect.dll component is a library that can be integrated into any Windows-based development language that supports this type of library. Currently the library is compiled for x86 platforms in order to work on x86 (32-bit) and x64 (64-bit) platforms, depending on the case.
Reference DLL to Visual Basic6.
Open the Project Tab and click on References. On the References screen, click on the browse option and search for the file with the tlb extension once added, select the NetPayConnect Reference from the list.
4. Library integration.
The SmartPinPad DEV application already contains the functionality by default or Method SendData()
The library contains a class called Operator which is used to call the methods.
The SendData() method makes or processes Visa, MasterCard and American Express branded credit and debit card payments.
Note.
In the general class the line is added to be able to use the dll. In the case of Visual Studio 6, the .tlb is integrated
Example of how to use the dll once it is referenced and installed on windows:
Dim conector As NetPayConnect.Operator
Set conector = New NetPayConnect.Operator
The parameters received by the Operator method are listed below (It defines the type of transaction to execute, it can receive the following values):
Field | Description |
---|---|
setAmount() | The amount to be collected is assigned. Receives a value of type Double (only accepts 2 decimal places). |
setMSI() | The number of months without interest is assigned at the time of processing the transaction. By default, the value 0 (without months) is sent. Possible values that it accepts: 3, 6, 9, 12, 18. |
setFolio() | The personalized folio to be used in the Ticket is assigned. |
sendData() | Once the minimum amount has been assigned, this method is called to process the transaction on the PinPad. |
sendPrint() | Reprint a transaction (requires orderId). To perform a test transaction we must use at least the setAmount() method to place the amount to be charged and process the transaction with the sendData() method. |
ReceiveData() | After executing a send type method, the ReceiveData() type is activated, which activates the reading of the port. This returns a reply message in text. |
4.1 Reading the authorization request response.
After executing the SendData() method, the connector will send the transaction to the Smart PinPad DEV which processes the transaction and will return the parameters that show the result of the operation.
To read the transaction response, the component returns a boolean value indicating true if everything was processed successfully and false otherwise.
The process for processing a transaction is as follows:
- The point of sale assigns the necessary parameters, SetAmount.
- The point of sale executes the SendData() method.
- The connector activates communication with the Pinpad device and requests that the customer's card be swiped, inserted or contactless on the Pinpad.
- Upon receipt of the card data the PinPad processes the transaction.
- The point of sale reads the transaction return variables by calling the RecieveData() method.
- The GetResponse() method is given, which returns an object of type data:
The variables that can be read when the GetResponse() event is executed, will obtain a response type object which contains an idReport property and another object which contains all the properties of the sale.
idReport: Contains the type of object that can be the following:
EARRING
Example of code to obtain the data of the sale:
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 | Field name | Description | Datatype |
---|---|---|---|
1 | affiliation | It contains the affiliation number assigned by the bank to a store which must be printed on the transaction receipt. | VARCHAR2(50 BYTE) |
2 | applicationLabel | Information on card reading. | VARCHAR2(100 BYTE) |
3 | arqc | It contains a cryptogram that must be printed on the customer's receipt, as long as a CHIP card is read. | VARCHAR2(250 BYTE) |
4 | aid | Information on card reading. | VARCHAR2(50 BYTE) |
5 | amount | Total amount of the transaction with everything and tip. | NUMBER(15,2) |
6 | authCode | Value generated by the authorization authority for an approved transaction. | VARCHAR2(7 BYTE) |
7 | bankName | Name of the financial institution issuing the card. | VARCHAR2(250 BYTE) |
8 | cardExpDate | Card expiration date in MM/YY format. | VARCHAR2(5 BYTE) |
9 | cardType | Card type identifier. Debit (D), credit (C). | VARCHAR2(20 BYTE) |
10 | cardTypeName | Represents the name of the card brand type, Visa, Master Card, etc. | VARCHAR2(250 BYTE) |
11 | cityName | City with which the trade was registered. | VARCHAR2(150 BYTE) |
12 | responseCode | It contains a two position code that indicates if a transaction was authorized or declined, if the value is 00 the transaction was authorized, any other value than 00 is considered a declined transaction. | VARCHAR2(2 BYTE) |
13 | folioNumber | Transaction identification number that can be sent in the sale request. | VARCHAR2(250 BYTE) |
14 | hasPin | Returns a boolean value which indicates if it requires a signature or is by pin. | false o true |
15 | hexSign | Encrypted autograph signature only in the event that the card does not have a PIN. | VARCHAR2(4000 BYTE) |
16 | internalNumber | NetPay internal folio. | VARCHAR2(20 BYTE) |
17 | isQps | Indicates the amount charged by quick payment service | VARCHAR2(1 BYTE) |
18 | message | Message indicating the status of the transaction. You can indicate if it was accepted or declined and for what reason. Example: Approved, Declined, Insufficient Funds. | VARCHAR2(200 BYTE) |
19 | moduleCharge | Internal identifier. | VARCHAR2(20 BYTE) |
20 | moduleLote | Internal identifier. | NUMBER (9) |
21 | customerName | Name of the cardholder. | VARCHAR2(100 BYTE) |
22 | terminalId | Terminal serial number. | VARCHAR2(20 BYTE) |
23 | orderId | Transaction number identifier. It can be used later in reprint and cancellation. | VARCHAR2(36 BYTE) |
24 | preAuth | Pre-authorization. | NUMBER (9) |
25 | preStatus | Pre-authorization. | NUMBER(15,2) |
26 | promotion | Indicates the number of months without interest in which a transaction was partialized. | VARCHAR2(20 BYTE) |
27 | rePrintDate | Indicates the version of the application. | VARCHAR2(100 BYTE) |
28 | rePrintMark | Internal identifier. | VARCHAR2(100 BYTE) |
29 | reprintModule | Internal identifier. | VARCHAR2(1 BYTE) |
30 | cardNumber | It contains the last four digits of the card that must be displayed on the customer's receipt. | VARCHAR2(50 BYTE) |
31 | storeName | Name of the trade registered. | VARCHAR2(60 BYTE) |
32 | streetName | Registered business address. | VARCHAR2(150 BYTE) |
33 | ticketDate | Date and time of the transaction. | VARCHAR2(100 BYTE) |
34 | tipAmount | Indicate the amount for tip, if sent. | NUMBER |
35 | tipLessAmount | Indicates the amount less tip. | NUMBER(15,2) |
36 | transDate | Date and time of the transaction. | DATE |
37 | transType | Indicates the type of operation performed. Sale (A), Cancellation (V). | VARCHAR2(5 BYTE) |
38 | transactionCertificate | Information on card reading. | VARCHAR2(50 BYTE) |
4.2 Transaction Refund Request
Message to cancel a sale (Auth) made on the same day. Only the orderId parameter is used and the sendCancel() method is called
Dim conector As NetPayConnect.Operator
Set conector = New NetPayConnect.Operator
conector.sendCancel(orderId)
4.3 Transaction Reprint Request.
Message to reprint a sale, only the orderId parameter is used and the *sendPrint() method is called:
Dim conector As NetPayConnect.Operator
Set conector = New NetPayConnect.Operator
conector.sendPrint(orderId)
4.4 Port Display Available
You can ask the dll which port the pinpad is connected to.
Dim conector As NetPayConnect.Operator
Set conector = New NetPayConnect.Operator
Dim texto As String
Texto = conector.findPortByDescription()
4.5 Version request message
Message requesting the version of the dll.
Dim conector As NetPayConnect.Operator
Set conector = New NetPayConnect.Operator
Dim texto As String
Texto = conector.Version()
4.6 Receiving Response.
Way of receiving the response: Extract information from the object manually.
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();
Example:
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
Updated over 2 years ago