Configure Gift Card Acceptance on Xstore

Using Oracle EFTLink, you can configure gift card acceptance on Xstore.
This guide is a
preview
and has not been verified or tested. Please report all inaccuracies to [email protected]
Prerequisites
To get started, download and install the latest version of the Oracle Integration Suite. Gift Cards are supported starting with version 2.7.
1. Configure Gift CardsAuth Method
Change the
AUTH_MTHD_CODE
in TND_TNDR_OPTIONS for all gift card tenders to
EFT_LINK_GC
.
2. Configure Tender Menus
In
MenuConfig.xml
, make sure the menu items for gift cards are configured:
<MenuItem name="SALE::TENDER_OPTIONS" text="_menuSaleTender" displayType="ICON_LIST" category="Tender" keywords="sale_tender"> ... <MenuOption ref="SALE::TENDER_GIFT_CARD" /> ... </MenuItem> <MenuItem name="RETURN::TENDER_OPTIONS" text="_menuReturnTender" displayType="ICON_LIST" category="Tender" keywords="return_tender"> ... <MenuOption ref="RETURN::TENDER_GIFT_CARD.ISSUE" /> ... </MenuItem>
3. Create Auth Process and Auth Request Map
Add the following to
AuthConfig.xml
:
<AuthProcess name="EFT_LINK_GC"> <Parameter name="communicatorHosts"> <param_value dtype="List"> <!-- the timeout value in the host string is the connect timeout --> <Host dtype="String">socket://localhost:10110;timeout=1000</Host> </param_value> </Parameter> <Parameter name="deviceCommChannel" value="socket://localhost:10111" /> <AuthProcessClass dtype="Class">dtv.tenderauth.impl.eftlink.EftLinkGiftCardAuthProcess</AuthProcessClass> <!-- +++++++ EFT LINK marshalling parameters ++++++ --> <Parameter name="authResponseClass"> <param_type dtype="Class">dtv.tenderauth.impl.eftlink.response.EftLinkResponse</param_type> </Parameter> <!-- +++++++ EFT LINK communication parameters +++++++ --> <Parameter name="communicator" value="dtv.tenderauth.impl.eftlink.EftLinkCommunicator" /> <!-- +++++++ EFT LINK marshalling parameters ++++++ --> <Parameter name="requestConverter" value="dtv.tenderauth.impl.eftlink.EftLinkGiftCardRequestConverter" /> <Parameter name="responseConverter" value="dtv.tenderauth.impl.eftlink.EftLinkResponseConverter" /> <Parameter name="actionMap"> <!-- a map of available action buttons for a given action code --> <param_value dtype="Map"> <MapEntry> <key dtype="String">1</key> <!-- PARTIAL FAILURE --> <value dtype="AuthFailedActionTypes"> <FailedActionType dtype="String">CANCEL</FailedActionType> <FailedActionType dtype="String">RETRY</FailedActionType> </value> </MapEntry> <MapEntry> <key dtype="String">2</key> <!-- FAILURE --> <value dtype="AuthFailedActionTypes"> <FailedActionType dtype="String">CANCEL</FailedActionType> <FailedActionType dtype="String">RETRY</FailedActionType> </value> </MapEntry> <MapEntry> <key dtype="String">3</key> <!-- DEVICE UNAVAILABLE --> <value dtype="AuthFailedActionTypes"> <FailedActionType dtype="String">CANCEL</FailedActionType> <FailedActionType dtype="String">RETRY</FailedActionType> </value> </MapEntry> <MapEntry> <key dtype="String">4</key> <!-- BUSY --> <value dtype="AuthFailedActionTypes"> <FailedActionType dtype="String">CANCEL</FailedActionType> <FailedActionType dtype="String">RETRY</FailedActionType> </value> </MapEntry> <MapEntry> <key dtype="String">5</key> <!-- LOGGED OUT --> <value dtype="AuthFailedActionTypes"> <FailedActionType dtype="String">CANCEL</FailedActionType> <FailedActionType dtype="String">RETRY</FailedActionType> </value> </MapEntry> <MapEntry> <key dtype="String">6</key> <!-- ABORTED --> <value dtype="AuthFailedActionTypes"> <FailedActionType dtype="String">CANCEL</FailedActionType> <FailedActionType dtype="String">RETRY</FailedActionType> </value> </MapEntry> <MapEntry> <key dtype="String">7</key> <!-- TIMED OUT --> <value dtype="AuthFailedActionTypes"> <FailedActionType dtype="String">CANCEL</FailedActionType> <FailedActionType dtype="String">RETRY</FailedActionType> </value> </MapEntry> <MapEntry> <key dtype="String">8</key> <!-- FORMAT ERROR --> <value dtype="AuthFailedActionTypes"> <FailedActionType dtype="String">CANCEL</FailedActionType> <FailedActionType dtype="String">RETRY</FailedActionType> </value> </MapEntry> <MapEntry> <key dtype="String">9</key> <!-- PARSING ERROR --> <value dtype="AuthFailedActionTypes"> <FailedActionType dtype="String">CANCEL</FailedActionType> <FailedActionType dtype="String">RETRY</FailedActionType> </value> </MapEntry> <MapEntry> <key dtype="String">10</key> <!-- COMMUNICATION ERROR --> <value dtype="AuthFailedActionTypes"> <FailedActionType dtype="String">CANCEL</FailedActionType> <FailedActionType dtype="String">RETRY</FailedActionType> </value> </MapEntry> <MapEntry> <key dtype="String">11</key> <!-- VALIDATION ERROR --> <value dtype="AuthFailedActionTypes"> <FailedActionType dtype="String">CANCEL</FailedActionType> <FailedActionType dtype="String">RETRY</FailedActionType> </value> </MapEntry> <MapEntry> <key dtype="String">12</key> <!-- MISSING MANDATORY DATA --> <value dtype="AuthFailedActionTypes"> <FailedActionType dtype="String">CANCEL</FailedActionType> <FailedActionType dtype="String">RETRY</FailedActionType> </value> </MapEntry> <MapEntry> <key dtype="String">13</key> <!-- UNKNOWN CARD --> <value dtype="AuthFailedActionTypes"> <FailedActionType dtype="String">CANCEL</FailedActionType> <FailedActionType dtype="String">RETRY</FailedActionType> </value> </MapEntry> <MapEntry> <key dtype="String">14</key> <!-- UNINITIALIZED --> <value dtype="AuthFailedActionTypes"> <FailedActionType dtype="String">CANCEL</FailedActionType> <FailedActionType dtype="String">RETRY</FailedActionType> </value> </MapEntry> <MapEntry key="OFFLINE"> <!-- WHEN MULTI IS OFFLINE --> <value dtype="AuthFailedActionTypes"> <FailedActionType dtype="String">CANCEL</FailedActionType> <FailedActionType dtype="String">RETRY</FailedActionType> </value> </MapEntry> </param_value> </Parameter> <Parameter name="authMessageMap"> <!-- a map of messages to display to the user for various action codes --> <param_value dtype="Map"> <MapEntry key="RESULT_CODE_1"> <value dtype="ParameterizedFormattable" TranslationKey="_CyberSourcePWFAILURE"></value> </MapEntry> <MapEntry key="RESULT_CODE_2"> <value dtype="ParameterizedFormattable" TranslationKey="_CyberSourcePWDECLINED"></value> </MapEntry> <MapEntry key="RESULT_CODE_3"> <value dtype="ParameterizedFormattable" TranslationKey="_CyberSourcePWFAILURE"></value> </MapEntry> <MapEntry key="RESULT_CODE_4"> <value dtype="ParameterizedFormattable" TranslationKey="_CyberSourcePWFAILURE"></value> </MapEntry> <MapEntry key="RESULT_CODE_5"> <value dtype="ParameterizedFormattable" TranslationKey="_CyberSourcePWFAILURE"></value> </MapEntry> <MapEntry key="RESULT_CODE_6"> <value dtype="ParameterizedFormattable" TranslationKey="_CyberSourcePWABORTED"></value> </MapEntry> <MapEntry key="RESULT_CODE_7"> <value dtype="ParameterizedFormattable" TranslationKey="_CyberSourcePWTIMEOUT"></value> </MapEntry> <MapEntry key="RESULT_CODE_8"> <value dtype="ParameterizedFormattable" TranslationKey="_CyberSourcePWFAILURE"></value> </MapEntry> <MapEntry key="RESULT_CODE_9"> <value dtype="ParameterizedFormattable" TranslationKey="_CyberSourcePWFAILURE"></value> </MapEntry> <MapEntry key="RESULT_CODE_10"> <value dtype="ParameterizedFormattable" TranslationKey="_CyberSourcePWFAILURE"></value> </MapEntry> <MapEntry key="RESULT_CODE_11"> <value dtype="ParameterizedFormattable" TranslationKey="_CyberSourcePWFAILURE"></value> </MapEntry> <MapEntry key="RESULT_CODE_12"> <value dtype="ParameterizedFormattable" TranslationKey="_CyberSourcePWNOTIIMPLEMENTED"></value> </MapEntry> <MapEntry key="RESULT_CODE_13"> <value dtype="ParameterizedFormattable" TranslationKey="_CyberSourcePWFAILURE"></value> </MapEntry> <MapEntry key="RESULT_CODE_14"> <value dtype="ParameterizedFormattable" TranslationKey="_CyberSourcePWFAILURE"></value> </MapEntry> <MapEntry key="MANUAL"> <value dtype="ParameterizedFormattable" TranslationKey="_CyberSourcePWFAILURE"></value> </MapEntry> <MapEntry key="OFFLINE"> <value dtype="ParameterizedFormattable" TranslationKey="_CyberSourcePWFAILURE"></value> </MapEntry> </param_value> </Parameter> </AuthProcess> <AuthRequestMap name="EFT_LINK_GC"> <AuthRequest key="TENDER" class="dtv.tenderauth.impl.eftlink.request.EftLinkGiftCardRequest" enabled="true"> <parameter name="TerminalID" ref="TerminalID" /> <!-- RequestType directly maps to the request types EpsRequest class --> <parameter name="RequestType" value="SVC_DEDUCT" /> <parameter name="RequestSubType" value="SVC_PAYMENT" /> </AuthRequest> <AuthRequest key="VOID_TENDER" class="dtv.tenderauth.impl.eftlink.request.EftLinkGiftCardRequest" enabled="true"> <parameter name="TerminalID" ref="TerminalID" /> <parameter name="RequestType" value="SVC_DEDUCT_REVERSAL" /> </AuthRequest> <AuthRequest key="REFUND_TENDER" class="dtv.tenderauth.impl.eftlink.request.EftLinkGiftCardRequest" enabled="true"> <parameter name="TerminalID" ref="TerminalID" /> <Parameter name="RequestType" value="SVC_ADD" /> <Parameter name="RequestSubType" value="SVC_REFUND" /> </AuthRequest> <AuthRequest key="VOID_REFUND_TENDER" class="dtv.tenderauth.impl.eftlink.request.EftLinkGiftCardRequest" enabled="true"> <parameter name="TerminalID" ref="TerminalID" /> <parameter name="RequestType" value="SVC_ADD_REVERSAL" /> </AuthRequest> <AuthRequest key="INQUIRE_BALANCE" class="dtv.tenderauth.impl.eftlink.request.EftLinkGiftCardRequest" enabled="true"> <Parameter name="TerminalID" ref="TerminalID" /> <Parameter name="RequestType" value="SVC_BALANCE" /> </AuthRequest> <AuthRequest key="RELOAD" class="dtv.tenderauth.impl.eftlink.request.EftLinkGiftCardRequest" enabled="true"> <parameter name="TerminalID" ref="TerminalID" /> <Parameter name="RequestType" value="SVC_ADD" /> <Parameter name="RequestSubType" value="SVC_LOAD" /> </AuthRequest> <AuthRequest key="VOID_RELOAD" class="dtv.tenderauth.impl.eftlink.request.EftLinkGiftCardRequest" enabled="true"> <parameter name="TerminalID" ref="TerminalID" /> <Parameter name="RequestType" value="SVC_ADD_REVERSAL" /> </AuthRequest> <AuthRequest key="ISSUE" class="dtv.tenderauth.impl.eftlink.request.EftLinkGiftCardRequest" enabled="true"> <parameter name="TerminalID" ref="TerminalID" /> <Parameter name="RequestType" value="CARD_ACTIVATE" /> <Parameter name="RequestSubType" value="SVC_OPEN_VALUE" /> </AuthRequest> <AuthRequest key="ACTIVATE" class="dtv.tenderauth.impl.eftlink.request.EftLinkGiftCardRequest" enabled="true"> <parameter name="TerminalID" ref="TerminalID" /> <Parameter name="RequestType" value="CARD_ACTIVATE" /> <Parameter name="RequestSubType" value="SVC_PRESET_VALUE" /> </AuthRequest> <AuthRequest key="VOID_ACTIVATE" class="dtv.tenderauth.impl.eftlink.request.EftLinkGiftCardRequest" enabled="true"> <parameter name="TerminalID" ref="TerminalID" /> <Parameter name="RequestType" value="CARD_ACTIVATE_REVERSAL" /> </AuthRequest> <AuthRequest key="CASH_OUT" class="dtv.tenderauth.impl.eftlink.request.EftLinkGiftCardRequest" enabled="true"> <parameter name="TerminalID" ref="TerminalID" /> <Parameter name="RequestType" value="SVC_DEDUCT" /> <Parameter name="RequestSubType" value="SVC_UNLOAD" /> </AuthRequest> <AuthRequest key="VOID_CASH_OUT" class="dtv.tenderauth.impl.eftlink.request.EftLinkGiftCardRequest" enabled="true"> <Parameter name="TerminalID" ref="TerminalID" /> <Parameter name="RequestType" value="SVC_DEDUCT_REVERSAL" /> </AuthRequest> </AuthRequestMap>
4. Configure Config Path
In
system.properties
, enable the gift card auth:
# -- EFT LINK -- #dtv.config.path.-350=:authprocessor/paymentech:authprocessor/eftlink # -- EFT LINK WITH GIFT CARD AUTH -- dtv.config.path.-350=:authprocessor/eftlink:authprocessor/eftlink/giftcard
Related Links