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]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>
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