12 Verifone Point (US)
This chapter covers EFTLink integration with Verifone Point.
EFTLink General
This document assumes static EFTLink configuration. When deploying with a POS that supports dynamic configuration, all property settings referred to below should be set on the POS, and not directly into local property files. It should be read in conjunction with the Oracle Retail EFTLink Framework Installation and Configuration Guide.
System Architecture
Verifone Point is deployed as an intelligent terminal. EFTLink connects directly to the terminal using a proprietary socket/XML protocol.
Fileset
In addition to standard EFTLink files, PointUS uses:
-
cores/pointus/pointuscore.jar
– executable code for the PointUS EFTLink core. -
pointus.properties
– configuration settings to specify which features are enabled and to define communication parameters for the interface with the EFT terminal.
Note:
If the POS supports dynamic configuration, properties can be set there instead of in pointus.properties
.
Language
The translation files for this core should not require alteration,
but if necessary then this can be accomplished by amending the relevant Lang<CC>_<Core>.properties
within the base eftlink
folder.
The language used will follow the language set in the EFTLink framework; see the Oracle Retail EFTLink Framework Installation and Configuration Guide, EFTLink General Information, Translation section.
EftlinkConfig.properties
DisplayLanguage = EN
Supported country codes are CN, DE, EN, ES, FR, IT, JP, NL, PT, RU and SV.
Core Classname
The following should have been set in the EftlinkConfig.properties
file by installcore.bat or installcore.sh:
EPSCore0 = manito.eft.pointus.PointUSCore
Configuration Settings
The full set of configuration properties is defined and commented in pointus.properties
.
Key Settings
Settings that may be different for each POS/PED.
Table 12-1 Verifone Point (US) - Key Settings
Setting | Description | Default | Example |
---|---|---|---|
TerminalIP |
IP of Mx915/M400/M400/P200/E285 terminal. |
NA |
|
Secondary Settings
These settings are normally correct at their default values but can be overridden if necessary.
Table 12-2 Verifone Point (US) - Secondary Settings
Setting | Description | Default | Example |
---|---|---|---|
TerminalPort |
Port number. |
5015 |
|
MaintenanceTimeout |
Timeout on maintenance menu selection. Timeout is specified in seconds. |
60 |
|
ResponseTimeout |
Time allowed in seconds for the transaction to complete at the terminal. This needs to be long enough to cover all customer interaction and host authorization. |
120 |
|
ConnectionTimeout |
The Connection timeout. Timeout is specified in seconds. |
10 |
|
ConnectionIssueRetryAttempts |
When exceeding the ResponseTimeout. How many attempts should the associate be given to re-establish communications before returning failure. |
1 |
|
ValidateLoyaltyData |
When a loyalty card swipe is requested, the customer may identify themselves by entering a phone number rather than swiping a card. If loyalty cards are suitably defined in the card range file and tagged as "Loyalty", this can be checked. Option to enable validation of loyalty data to try to differentiate between card numbers and phone numbers. |
false |
|
SignatureCheckFloorLimit |
Floor limit for swiped credit transactions. |
0.00 |
|
SignatureCheckTimeout |
Timeout on waiting for signature. |
30 |
|
EmbeddedPrinting |
Whether customer printout is to be buffered and included in the POS authorization response such that it can be embedded # in the POS receipt. |
false |
|
MaxLineItems |
Maximum number of line items allowed in a single message. |
10 |
|
MaxLineItemUpdates |
Maximum number of individual line item update messages it is practical to send before it becomes too cumbersome and slow. |
20 |
|
MaxLineItemTextLength |
Maximum line item description length allowed by comms protocol or visible on terminal. |
17 |
|
ShowlineItemsOnVoucher |
Whether to show line items on the EFT voucher. |
false |
|
ReceiptLineItemStartTag |
Key word/phrase that identifies the start of line item summary on EFT voucher. |
QTY DESCRIPTION |
|
ReceiptLineItemEndTag |
Key word/phrase that identifies the end of line item summary on EFT voucher. |
Total: |
|
ShowEMVTagsOnVoucher |
Whether to show diagnostic EMV tags on the EFT voucher. |
false |
|
EmbeddedPrintFilter_<n> |
Print filters to allow voucher to be trimmed when embedded in the POS receipt for example, to remove header/footer lines starting with text in this list will be skipped. Maximum filter is 99. |
null |
|
EnableTrack2ForCardSwipe |
Specifies whether track2 is to be returned for certain card types. Also requires changes to range xml to prevent masking of numbers. |
false |
|
SwipeFallbackToKeyed |
Specifies whether failure of card swipe during payment will result in fallback to keyed entry on the PED. |
false |
|
MaxRetrySendDeviceCommand |
Number of retry to send the device command in a situation where the device is busy during the first attempt. |
2 |
|
RetrySendDeviceCommandDelay |
The delay in milliseconds in every retry of sending the device command. |
3000 |
|
DisplayMessageTimeout |
The number of seconds to display the message in the PIN pad for the device command, DISPLAY_MESSAGE. The timeout value specified can be overriden within the DeviceRequest <?xml version='1.0' encoding='UTF-8'?> <DeviceRequest RequestType="Output" ApplicationSender="MICROS" WorkstationID="1" RequestID="5"> <Output OutDeviceTarget="PinPad" TimeOut="10"> <TextLine>Black Friday Sale</TextLine> </Output> </DeviceRequest> |
30 |
|
DisplayQRCodeDoneButtonLabel |
The label of the button in the command to display QR code in the terminal. |
Done |
|
MaxNumberOfSurveyTextLine |
Maximum number of lines of text in the survey command. |
5 |
|
MaxSurveyLineMessageLength |
Maximum number of characters for each line in the survey message. |
50 |
|
MaxDonationLineMessageLength |
Maximum number of characters for each line in the donation message. |
50 |
|
MaxNumberOfDonationTextLine |
Maximum number of lines of text in the donation command. |
5 |
|
MaxNumberOfDonationChoices |
Maximum number of choices for the donation command. |
5 |
|
MaxNumberOfCustomerButtonChoices |
Maximum number of choices in the customer buttons command. |
6 |
|
MaxCustomerButtonsLineMessageLength |
Maximum number of characters for each line in the customer buttons message. |
45 |
|
MaxNumberOfCustomerButtonsTextLine |
Maximum number of lines of the message for the customer buttons command. |
5 |
|
MaxQRCodeDataLength |
Maximum number of characters for the QR code data. |
200 |
|
MaxQRCodeMessageLengthWithTransaction |
The maximum number of characters of the message in the display QR code command in an active transaction. |
72 |
|
MaxQRCodeMessageLengthWithOutTransaction |
The maximum number of characters of the message in the display QR code command when there is no active transaction. |
150 |
|
MaxDisplayTextLength |
The maximum number of characters of the message to display for the DISPLAY_MESSAGE command. |
150 |
|
TokenExpiryDate |
Enables the core to pass the card's expiration date to the POS. As such, this will be passed to PointUS for verified refund. |
true |
|
TenderLineItemIdAddend |
The number that gets added to the tender line sequence to become the unique LINE_ITEM_ID. |
1000 |
|
MCLabelCounterMaxValue |
The maximum value of the counter in the PED for a given Mac label. |
4294967295 |
|
WaitTimeForLineDisplayToFinish |
The wait time interval in milliseconds given to the line item manager thread to finish processing before the core sends the payment request to Point. |
5000 |
|
SignatureLineIndicator |
The indicator used as the signature line in the merchant receipt where customer will sign in case the device used does not support electronic signature. |
x |
|
MerchantReceiptIndicator |
An indicator for the merchant copy of the receipt. |
MERCHANT COPY |
|
CustomerReceiptIndicator |
An indicator for the customer copy of the receipt. |
CUSTOMER COPY |
|
PrintMerchantReceipt |
Whether to print the merchant receipt or not. |
true |
|
MerchantID |
Merchant ID required for "Setup Device Parameters" function in EFTLink Admin functions in Xstore back office. |
|
|
TerminalID |
Terminal ID required for required for "Setup Device Parameters" function in EFTLink Admin functions in Xstore back office. |
|
|
Lane |
Lane required for "Setup Device Parameters" function in EFTLink Admin functions in Xstore back office. |
|
|
HostIndicator |
Host Indicator required for "Setup Device Parameters" function in EFTLink Admin functions in Xstore back office. |
|
|
RestrictToDebitCredit |
Restrict payment capture command to credit debit payment types. |
false |
|
RemoveOfferLineItem |
Specify whether to include the OFFER line item when removing the parent or main item. Enable this for Engage devices such as the M400 that will not remove the child OFFER line automatically when the parent item is removed. Consult Verifone to determine which devices behave this way. |
false |
|
IgnoreSignatureCapture |
Determine whether to ignore the capture of electronic signature. This is applicable for Engage devices such as the E285 which does not support the 3BA format and signature capture cannot be disabled on the device. |
false |
|
EnforceGiftTenderType |
Specifies whether a giftcard type action will enforce a GIFT tendertype on PED device. |
false |
|
ReceiptAPMType |
Whether the additional receipt data should be used. 0 — do not print additional receipt data. 1 — only print additional receipt data with APM transactions. 2 — append additional receipt data to standard receipt. |
0 |
|
AddResponseFieldsToMiscData |
The PointUS fields to be returned within Miscellaneous Data. |
|
|
RestartSessionOnVoids |
Performs a session stop and start before sending the void/reversal request. |
false |
|
AddCtroutdToCreditRefunds |
If true and the Payment Type is Credit, then add CTROUTD to the Credit/Refund request. |
false |
|
IncludeBankUserDataWithCardToken |
If true and the BANK_USERDATA and CARD_TOKEN is included in the Payment response then store them together within the CardServiceResponse Card Object. |
true |
|
FullPacketEncryption |
Enables Full Packet Encryption where all messages will be encrypted with the AES 128. Note: REGISTER_ENCRYPTION and STATUS requests are not encrypted. |
false |
|
PayloadKeyPairAlgorithm |
The name of the secret-key algorithm use to encrypt/decrypt the payload. Only use when FullPacketEncryption is set to true. Must match the PointUS Algorithm. |
AES |
|
PayloadKeyPairCipher |
The cipher initialization used to encrypt/decrypt the payload. Only use when FullPacketEncryption is set to true. Must match the PointUS Algorithm. |
false |
|
crypto.keygenType |
Sets keygen algorithm type. |
AES |
|
crypto.cipherType |
Sets cipher algorithm type. |
AES/GCM/PKCS5Padding |
|
crypto.keySize |
Sets size of the keystore. Note: When keysize is greater than 128, you may get java.security.InvalidKeyException: Illegal key size or default parameters. If this happens you will need to download additional Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files and extract those files to $JAVA_HOME/jre/lib/security/ |
128 |
|
crypto.iterations |
Sets number of iterations. |
100000 |
|
crypto.factoryinstance |
Sets crypto factory instance for keystore password encryption. |
PBKDF2WithHmacSHA512 |
|
crypto.secretkeyspec |
Sets crypto secret key spec for keystore password encryption. |
AES |
|
crypto.keystoretype |
Sets keystore type. |
JKS |
|
crypto.digest |
Sets digest for keystore password. |
SHA-512 |
|
crypto.hashbyteSize |
Sets hash byte size for keystore password. |
384 |
|
Administration Functions
The terminal has some administration/maintenance functions. These can only be invoked from a dedicated EFT Maintenance menu button.
EFTLink uses DeviceProxy messages to display input prompts on the POS to manage these functions.
Table 12-3 Verifone Point (US) - Administration Functions
Function | Description |
---|---|
Terminal-POS Pairing |
The terminal has to be paired with a specific POS, by entering a code |
Registration |
This operation displays a 4-digit number on the POS that must then be typed into the terminal to complete the pairing. |
Un-registration |
This operation removes a pairing. |
Test MAC |
This operation tests that the terminal is accessible and that a pairing in pace. |
Day Report |
Print a non-closing day report (summary) |
Day End |
Print a day report and close the current day. Manual alternative to automated ReconciliationWithClosure. |
Last Transaction |
Print details of the last transaction at the terminal. |
Supported Functions
Below is a list of supported functionalities of the interface to PointUS. Many functionalities are provided by PointUS, such as Loyalty, Cashback and so on. (Please refer to interface specification for details) but are not implemented because of the business requirement.
Table 12-4 Verifone Point (US) - Supported Functions
Function | Description |
---|---|
Payment |
Sends payment request to the terminal. Terminal will return a response message with unformatted receipt strings for customer and/or merchant receipts. In an event of referral where authorization cannot be obtained online then a prompt for authorization code will appear; authorization code must be obtained via telephone and entered here. If successful, appropriate receipts will be printed at the end of transaction. |
Reversal |
Sends reversal request to the terminal. This will reverse a transaction specified by the transaction number, found on the receipt, which must be captured by the POS and pass on to EFTLink. |
Refund |
Sends refund request to the terminal. This will refund a transaction with specified amount. |
Reconciliation / Settlement |
This is supported directly by the terminal via TCP/IP request. |
Sale State Notifications |
Sends line items through to the device so the customer display can be updated in line with the POS. |
SVC Payment |
Sends a gift or merchandise credit card payment request to the terminal. If there are not enough funds available, only the funds available will be deducted. The POS client will have to settle the transaction with another tender in this scenario. |
SVC Activate |
Sends a gift or merchandise credit card activation request to the terminal. |
SVC Deactivate |
Sends a gift or merchandise credit card deactivation request to the terminal. The account is disabled after this as the request is intended to be used for lost or stolen cards. It is not possible to use the card or account once this request has been issued and accepted. |
SVC Add Value |
Sends a gift or merchandise credit card add value request to the terminal. This will only add value to an account that has been activated. |
SVC Balance Enquiry |
Sends a gift or merchandise credit card balance enquiry request to the terminal. |
SVC Unload (Cashout) |
Sends a gift or merchandise credit card cash out request to the terminal. All funds are deducted from the account and the cash back amount is returned to the POS. The account is not deactivated as part of this process. |
Custom form for displaying a message |
Sends a request to the terminal that displays the message text passed by the POS. The core sends a success or a failure flag back to the POS. |
Custom form for customer question/verification |
Sends a request to the terminal with a question/verification message. The customer selects either the Yes or No button. The core sends 'Y' or 'N' as part of the response to the POS. |
Custom form for capturing phone number |
Sends a request to the terminal triggering a phone number capture. The customer keys in their phone number and hit submit. The core sends the captured phone number to the POS. |
Custom form for signature capture |
Sends a request to the terminal to capture signature. The customer signs and hit accept. The core sends the decoded signature to the POS. |
Custom form for capturing email address |
Sends a request to the terminal triggering an email address capture. The customer keys in their email address in the virtual keyboard and selects the Enter key. The core sends the captured email address to the POS. |
Custom form for customer survey |
Sends a request to the terminal to present a survey. The number of choices could be from 1 to 5 or 1 to 10. |
Custom form for charity donation |
Sends a request to the terminal asking if the customer wants to donate to a charity. The customer selects a button for their choice. The core sends the selected amount as presented in the terminal back to the POS. |
Custom form for customer buttons selection |
Sends a request to the terminal to present a list of regular and bigger buttons as choices. The maximum number of choices is 5. The label of each button is set by the POS. The sixth label is used as cancel. The customer selects a button. The core sends the label of the selected button back to the POS. |
Custom form for QR code display |
Sends a request to the terminal to display QR code. The terminal generates a QR image corresponding to payload data sent from the POS and displays the image on screen with appropriate text and/or button label. |
Custom form for cancelling QR code display |
Sends a request to the terminal to clear the QR code image in the PED. The PED goes back to the previous screen afterwards. |
E-Wallet Payments |
Supports Alipay/Klarna/WeChat/PayPal/Venmo Flow 1 - Customer initiated transaction via E-Wallet button press on the PED. EFTLink sends a capture request. The customer selects the button to pay via their E-Wallet (as opposed to the usual chip and pin, swipe and other card payment methods) on the PED. The provider returns a response containing the E-Wallet data. EFTLink feeds this data back to the POS to complete the transaction. Flow 2 - Cashier initiated transaction via E-Wallet tenders on the POS. POS tenders to pay the transaction via E-Wallet tender. EFTLink sends a sale/purchase message to the Provider, specifying that the PaymentMethod is E-Wallet. The OPI EPS displays a QR code which the customer scans with their E-Wallet device (typically a mobile phone). The transaction is confirmed on the PED and the WalletAuthorizationData is returned via EFTLink to the POS to complete the transaction. |
E-Wallet Refunds |
Supports Alipay/Klarna/WeChat/PayPal/Venmo Sends a refund request which includes the token to the provider. |
Full Packet Encryption |
Supports encryption of request/response messages being sent/received between the EFTLink and PointUS. StatusCommand and the RegisterEncryptionCommand are not subject to encryption. |
Dynamic Currency Conversion (DCC) |
Supports DCC on Payment request. |