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.

Disambiguation

This Point implementation is for use with Mx915 terminals in the US, with communication based on a socket/XML protocol. There is also a Point implementation in Norway, which is unrelated.

Minimum Version

The Point interface requires a minimum EFTLink version of 20.0.

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

TerminalIP =

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

TerminalPort = 5015

MaintenanceTimeout

Timeout on maintenance menu selection. Timeout is specified in seconds.

60

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

ResponseTimeout = 120

ConnectionTimeout

The Connection timeout. Timeout is specified in seconds.

10

ConnectionTimeout = 10

ConnectionIssueRetryAttempts

When exceeding the ResponseTimeout. How many attempts should the associate be given to re-establish communications before returning failure.

1

ConnectionIssueRetryAttempts = 3

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

ValidateLoyaltyData = false

SignatureCheckFloorLimit

Floor limit for swiped credit transactions.

0.00

SignatureCheckFloorLimit = 0.00

SignatureCheckTimeout

Timeout on waiting for signature.

30

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

EmbeddedPrinting = false

MaxLineItems

Maximum number of line items allowed in a single message.

10

MaxLineItems = 10

MaxLineItemUpdates

Maximum number of individual line item update messages it is practical to send before it becomes too cumbersome and slow.

20

MaxLineItemUpdates = 20

MaxLineItemTextLength

Maximum line item description length allowed by comms protocol or visible on terminal.

17

MaxLineItemTextLength = 17

ShowlineItemsOnVoucher

Whether to show line items on the EFT voucher.

false

ShowlineItemsOnVoucher = false

ReceiptLineItemStartTag

Key word/phrase that identifies the start of line item summary on EFT voucher.

QTY DESCRIPTION

ReceiptLineItemStartTag = QTY DESCRIPTION

ReceiptLineItemEndTag

Key word/phrase that identifies the end of line item summary on EFT voucher.

Total:

ReceiptLineItemEndTag = Total:

ShowEMVTagsOnVoucher

Whether to show diagnostic EMV tags on the EFT voucher.

false

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

EmbeddedPrintFilter_1 =<blank>

EnableTrack2ForCardSwipe

Specifies whether track2 is to be returned for certain card types. Also requires changes to range xml to prevent masking of numbers.

false

EnableTrack2ForCardSwipe=false

SwipeFallbackToKeyed

Specifies whether failure of card swipe during payment will result in fallback to keyed entry on the PED.

false

SwipeFallbackToKeyed=false

MaxRetrySendDeviceCommand

Number of retry to send the device command in a situation where the device is busy during the first attempt.

2

MaxRetrySendDeviceCommand=2

RetrySendDeviceCommandDelay

The delay in milliseconds in every retry of sending the device command.

3000

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

DisplayMessageTimeout = 30

DisplayQRCodeDoneButtonLabel

The label of the button in the command to display QR code in the terminal.

Done

DisplayQRCodeDoneButtonLabel = Done

MaxNumberOfSurveyTextLine

Maximum number of lines of text in the survey command.

5

MaxNumberOfSurveyTextLine = 5

MaxSurveyLineMessageLength

Maximum number of characters for each line in the survey message.

50

MaxSurveyLineMesageLength = 50

MaxDonationLineMessageLength

Maximum number of characters for each line in the donation message.

50

MaxDonationLineMesageLength = 50

MaxNumberOfDonationTextLine

Maximum number of lines of text in the donation command.

5

MaxNumberOfDonationTextLine = 5

MaxNumberOfDonationChoices

Maximum number of choices for the donation command.

5

MaxNumberOfDonationChoices = 5

MaxNumberOfCustomerButtonChoices

Maximum number of choices in the customer buttons command.

6

MaxNumberOfCustomerButtonChoices = 6

MaxCustomerButtonsLineMessageLength

Maximum number of characters for each line in the customer buttons message.

45

MaxCustomerButtonsLineMessageLength = 45

MaxNumberOfCustomerButtonsTextLine

Maximum number of lines of the message for the customer buttons command.

5

MaxNumberOfCustomerButtonsTextLine = 5

MaxQRCodeDataLength

Maximum number of characters for the QR code data.

200

MaxQRCodeDataLength = 200

MaxQRCodeMessageLengthWithTransaction

The maximum number of characters of the message in the display QR code command in an active transaction.

72

MaxQRCodeMessageLengthWithTransaction = 72

MaxQRCodeMessageLengthWithOutTransaction

The maximum number of characters of the message in the display QR code command when there is no active transaction.

150

MaxQRCodeMessageLengthWithOutTransaction = 150

MaxDisplayTextLength

The maximum number of characters of the message to display for the DISPLAY_MESSAGE command.

150

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

TokenExpiryDate = true

TenderLineItemIdAddend

The number that gets added to the tender line sequence to become the unique LINE_ITEM_ID.

1000

TenderLineItemIdAddend = 1000

MCLabelCounterMaxValue

The maximum value of the counter in the PED for a given Mac label.

4294967295

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

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

SignatureLineIndicator = x

MerchantReceiptIndicator

An indicator for the merchant copy of the receipt.

MERCHANT COPY

MerchantReceiptIndicator = MERCHANT COPY

CustomerReceiptIndicator

An indicator for the customer copy of the receipt.

CUSTOMER COPY

CustomerReceiptIndicator = CUSTOMER COPY

PrintMerchantReceipt

Whether to print the merchant receipt or not.

true

PrintMerchantReceipt = true

MerchantID

Merchant ID required for "Setup Device Parameters" function in EFTLink Admin functions in Xstore back office.

MerchantID= 12345678

TerminalID

Terminal ID required for required for "Setup Device Parameters" function in EFTLink Admin functions in Xstore back office.

TerminalID=002

Lane

Lane required for "Setup Device Parameters" function in EFTLink Admin functions in Xstore back office.

Lane=002

HostIndicator

Host Indicator required for "Setup Device Parameters" function in EFTLink Admin functions in Xstore back office.

HostIndicator=VNTV

RestrictToDebitCredit

Restrict payment capture command to credit debit payment types.

false

RestrictToDebitCredit=true

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

RemoveOfferLineItem = true

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

IgnoreSignatureCapture=true

EnforceGiftTenderType

Specifies whether a giftcard type action will enforce a GIFT tendertype on PED device.

false

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

ReceiptAPMType = 2

AddResponseFieldsToMiscData

The PointUS fields to be returned within Miscellaneous Data.

 

AddResponseFieldsTo MiscData = BANK_USERDATA

RestartSessionOnVoids

Performs a session stop and start before sending the void/reversal request.

false

RestartSessionOnVoids = true

AddCtroutdToCreditRefunds

If true and the Payment Type is Credit, then add CTROUTD to the Credit/Refund request.

false

AddCtroutdToCreditRefunds = true

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

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

FullPacketEncryption = true

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

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

PayloadKeyPairCipher = AES/CBC/PKCS5PADDING

crypto.keygenType

Sets keygen algorithm type.

AES

crypto.keygenType = AES

crypto.cipherType

Sets cipher algorithm type.

AES/GCM/PKCS5Padding

crypto.cipherType = AES/CBC/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.keySize = 128

crypto.iterations

Sets number of iterations.

100000

crypto.iterations = 10000

crypto.factoryinstance

Sets crypto factory instance for keystore password encryption.

PBKDF2WithHmacSHA512

crypto.factoryinstance = PBKDF2WithHmacSHA512

crypto.secretkeyspec

Sets crypto secret key spec for keystore password encryption.

AES

crypto.secretkeyspec = AES

crypto.keystoretype

Sets keystore type.

JKS

crypto.keystoretype = JKS

crypto.digest

Sets digest for keystore password.

SHA-512

crypto.digest = SHA-512

crypto.hashbyteSize

Sets hash byte size for keystore password.

384

crypto.hashbyteSize = 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.