Go to primary content
Oracle® Retail POS Suite Configuration Guide
Release 14.1
E54474-03
  Go To Table Of Contents
Contents
Go To Index
Index

Previous
Previous
 
Next
Next
 

B Appendix: ACI PIN Comm Configuration

This appendix has additional information for configuring the following applications:

If you are using both ACI PIN Comm and SAF/TOR, additional configuration changes are needed in the SAF/TOR configuration. For more information, see "SAF/TOR".

ACI PIN Comm

The pertinent configuration of the PIN Comm application is done in the pinCommConfig.xml file. Note the following about the changes that need to be made to the settings:

  • The PIN Comm listening port default is 4005.

  • The Authorizer section should be configured to point to the SAFTOR instance, the proxy, or directly to the switch, whichever is most appropriate.

  • The TCP for the device is the IP and port for the PIN Pad (CPOI) device.

  • Be sure that each configured device in the configuration is running and communicating with PIN Comm. If PIN Comm fails to connect to a device, none of the other devices will function.

  • The device ID must match the value in the DeviceID attribute in the following example.

  • The Web service port used in the store server install (for example, http://127.0.0.1:_9005_/WebService/imageCapture.ws) is configured in the file <pincomm install dir>\conf\codes.properties.

The following example shows the changes that must be made to the settings in the
<PinComm Install Root>
\conf\pinCommConfig.xml file.

<!-- TCP/IP Port PinComm is Listening On -->
       <pinCommPort>4005</pinCommPort>

<!-- Authorizer -->
       <Authorizer>
              <!-- point to SAFTOR -->
              <ipAddress>127.0.0.1</ipAddress>
              <port>4025</port>
              <timeoutSecs>35</timeoutSecs>
       </Authorizer>

<!-- to limit number of retries, set this value to 1 -->
       <msrReadRetryCount>1</msrReadRetryCount>

<!-- not sure if true is the default, but it should be -->
       <encryptionEnabled>true</encryptionEnabled>

<!-- remove any value here to prevent the prompt for a gift card pin -->
       <enterPinForGiftCards></enterPinForGiftCards>

<!-- make sure giftCard is set to '04' -->
       <TenderTypes>
              <creditCard>03</creditCard>
              <debitCard>31</debitCard>
              <!-- <ebtFood>12</ebtFood> -->
              <!-- <ebtCash>13</ebtCash> -->
              <giftCard>04</giftCard>
       </TenderTypes>

<!-- config your devices, for example, name using location-terminal as 4241-0192 -->
<!-- You will need one Device section for each physical device with a unique IP address and ID -->
       <Device Type="Verifone.Mx.860" id="4241-0192">
              <TCP>
                     <IP_Address>10.143.200.161</IP_Address>
                     <Port>5100</Port>
              </TCP>
                ...
</Device>

<!-- map your device config into the mix -->
       <Corporation Number="0001">
       <!-- Company Definition-->
              <Company Number="0001">
                     <!-- Subsidiary Definition-->
                     <Subsidiary Number="0001">
                           <!-- Location Definition-->
                           ...
                           <Location Number="4241">
                                  <!-- Terminal definitions-->
                                  <Terminal Number="0192">
                                         <DeviceID deviceId="4241-0192"/>
                                  </Terminal> 
                           </Location>
                     </Subsidiary>
              </Company>
       </Corporation>

SAF/TOR

The pertinent configuration of the SAF/TOR application is done in the SAFTORConfig.xml file.

If you are using both ACI PIN Comm and SAF/TOR, the following configuration choice needs to be made in order to set the behavior you want with respect to Point-of-Service:

  • The recommended SAFTOR validationPlanList configuration has isMonitored and acceptDelayedAuth set to true. This configuration causes credit refunds and voids to be handled asynchronously, and so the response is not captured by Point-of-Service. Because of the lack of response data, including the credit token, return transactions where monies are refunded to a credit account cannot be post-voided.

  • Changing isMonitored and acceptDelayedAuth to false allows capture of the response to credit refunds. The following example shows these changes:

    <!-- TENDER_TYPE_CREDIT_CARD : 03 -->
    <bean class="com.isd.model.SafTorValidationPlanLiteEntry">
    <property name="description"><value>CREDIT-MONITORED</value></property>
    <property name="tenderTypeId"><value>03</value></property>
    <property name="isMonitored"><value>false</value></property>
    <property name="acceptDelayedAuth"><value>false</value></property>
            <property name="timeoutSeconds"><value>30</value></property>
    </bean>
    

    Note:

    Custom code changes are needed to capture voids.

Note the following about the changes that need to be made to the settings:

  • SAF/TOR supports configuration for failover (that is, Secondary).

  • For sections that are not represented in the following example, leave them as is in the SAFTORConfig.xml.

A template_SAFTORConfig.xml file is provided with the PDF of this guide. Open the Attachments tab of the PDF to access the template file. The PDF is available on the Oracle Technology Network.

The following example shows the changes that must be made to the settings in the
<PinComm Install Root>
\conf\SAFTORConfig.xml file.

<!--  Primary Connection -->
       <property name="isdFixedAuthConn">
              <bean id="primaryConnection" class="com.isd.model.AuthorizerConnection" singleton="false">
                     <!-- pointed to proxy in DMZ -->
                     <property name="ipAddress"><value>140.83.140.151</value></property>
                     <property name="port"><value>80</value></property>              </bean>       </property>
       <!-- * Secondary Connection -->
       <property name="isdSecondaryFixedAuthConn">
              <bean id="secondaryConnection" class="com.isd.model.AuthorizerConnection" singleton="false">
                     <!-- pointed to proxy in DMZ -->
                     <property name="ipAddress"><value>140.83.140.151</value></property>
                     <property name="port"><value>80</value></property>
              </bean>
       </property>

    ...
    <!-- Validation Plan configuration -->
    <bean id="validationPlanList" class="java.util.ArrayList">
        <constructor-arg>
            <list>
                <!-- TENDER_TYPE_CHECK : 09 -->
                <bean class="com.isd.model.SafTorValidationPlanLiteEntry">
                    <property name="description"><value>CHECK-MONITORED</value></property>
                    <property name="tenderTypeId"><value>09</value></property>
                    <property name="isMonitored"><value>true</value></property>
                    <property name="acceptDelayedAuth"><value>true</value></property>
                    <property name="timeoutSeconds"><value>30</value></property>
                </bean>
                <!-- TENDER_TYPE_CREDIT_APPLICATION & TENDER_TYPE_INVENTORY_LOCATOR : 05 -->
                <bean class="com.isd.model.SafTorValidationPlanLiteEntry">
                    <property name="description"><value>CREDIT-APPLICATION-NOT-MONITORED</value></property>
                    <property name="tenderTypeId"><value>05</value></property>
                    <property name="isMonitored"><value>false</value></property>
                    <property name="acceptDelayedAuth"><value>false</value></property>
                    <property name="timeoutSeconds"><value>30</value></property>
                </bean>
                <!-- TENDER_TYPE_CREDIT_INQUIRY & TENDER_TYPE_INVENTORY_MID_DAY_FLASH: 06 -->
                <bean class="com.isd.model.SafTorValidationPlanLiteEntry">
                    <property name="description"><value>CREDIT-INQUIRY-NOT-MONITORED</value></property>
                    <property name="tenderTypeId"><value>06</value></property>
                    <property name="isMonitored"><value>false</value></property>
                    <property name="acceptDelayedAuth"><value>false</value></property>
                    <property name="timeoutSeconds"><value>30</value></property>
                </bean>
                <!-- TENDER_TYPE_CREDIT_CARD : 03 (Note: to allow refunds to happen sychronously set isMonitored and acceptDelayedAuth both to false) -->
                <bean class="com.isd.model.SafTorValidationPlanLiteEntry">
                    <property name="description"><value>CREDIT-MONITORED</value></property>
                    <property name="tenderTypeId"><value>03</value></property>
                    <property name="isMonitored"><value>false</value></property>
                    <property name="acceptDelayedAuth"><value>false</value></property>
                    <property name="timeoutSeconds"><value>30</value></property>
                </bean>
                <!-- TENDER_TYPE_DEBIT_CARD : 31 (NOTE: acceptDelayedAuth and isMonitored must both be false for PCI compliance!) -->
                <bean class="com.isd.model.SafTorValidationPlanLiteEntry">
                    <property name="description"><value>DEBIT-MONITORED</value></property>
                    <property name="tenderTypeId"><value>31</value></property>
                    <property name="isMonitored"><value>false</value></property>
                    <property name="acceptDelayedAuth"><value>false</value></property>
                    <property name="timeoutSeconds"><value>30</value></property>
                </bean>
                <!-- TENDER_TYPE_GIFT_CARD : 04 -->
                <bean class="com.isd.model.SafTorValidationPlanLiteEntry">
                    <property name="description"><value>GIFTCARD-MONITORED</value></property>
                    <property name="tenderTypeId"><value>04</value></property>
                    <property name="isMonitored"><value>true</value></property>
                    <property name="acceptDelayedAuth"><value>false</value></property>
                    <property name="timeoutSeconds"><value>30</value></property>
                </bean>
            </list>
        </constructor-arg>
    </bean>
    ...

    <!-- Response Translation configuration -->
    <bean id="responseTranslationPlanEntryList" class="java.util.ArrayList">
        <constructor-arg>
            <list>
                <bean class="com.isd.model.SafTorResponseTranslationEntry">
                    <property name="description"><value>Req.Monitor.MultiMatch</value></property>
                    <property name="statusCode"><value>02</value></property>
                    <property name="responseReason"><value>SAF2</value></property>
                    <property name="responseCode"><value>02</value></property>
                    <property name="messageText"><value>Request Monitored Multiple Match</value></property>
                    <property name="messageMatchNbr"><value>1</value></property>
                    <property name="isdStatusCode"><value>0</value></property>
                    <property name="responseTranslationEntryId"><value>0</value></property>
                </bean>
                <bean class="com.isd.model.SafTorResponseTranslationEntry">
                    <property name="description"><value>Msg.Reversal.Persist.Reversal</value></property>
                    <property name="statusCode"><value>01</value></property>
                    <property name="responseReason"><value>SAF3</value></property>
                    <property name="responseCode"><value>01</value></property>
                    <property name="messageText"><value>Request Reversal Reversal</value></property>
                    <property name="messageMatchNbr"><value>2</value></property>
                    <property name="isdStatusCode"><value>0</value></property>
                    <property name="responseTranslationEntryId"><value>1</value></property>
                </bean>
                <bean class="com.isd.model.SafTorResponseTranslationEntry">
                    <property name="description"><value>Msg.Reversal.Persist.SaleInFlight</value></property>
                    <property name="statusCode"><value>01</value></property>
                    <property name="responseReason"><value>SAF4</value></property>
                    <property name="responseCode"><value>01</value></property>
                    <property name="messageText"><value>Request Reversal Sale In Flight</value></property>
                    <property name="messageMatchNbr"><value>3</value></property>
                    <property name="isdStatusCode"><value>0</value></property>
                    <property name="responseTranslationEntryId"><value>2</value></property>
                </bean>
                <bean class="com.isd.model.SafTorResponseTranslationEntry">
                    <property name="description"><value>Msg.Reversal.Persist.SaleComplete</value></property>
                    <property name="statusCode"><value>01</value></property>
                    <property name="responseReason"><value>SAF5</value></property>
                    <property name="responseCode"><value>01</value></property>
                    <property name="messageText"><value>Request Reversal Sale Complete</value></property>
                    <property name="messageMatchNbr"><value>4</value></property>
                    <property name="isdStatusCode"><value>0</value></property>
                    <property name="responseTranslationEntryId"><value>3</value></property>
                </bean>
                <bean class="com.isd.model.SafTorResponseTranslationEntry">
                    <property name="description"><value>Msg.Sale.Persist.Reversal</value></property>
                    <property name="statusCode"><value>01</value></property>
                    <property name="responseReason"><value>SAF6</value></property>
                    <property name="responseCode"><value>01</value></property>
                    <property name="messageText"><value>Request Sale Reversal</value></property>
                    <property name="messageMatchNbr"><value>5</value></property>
                    <property name="isdStatusCode"><value>0</value></property>
                    <property name="responseTranslationEntryId"><value>4</value></property>
                </bean>
                <bean class="com.isd.model.SafTorResponseTranslationEntry">
                    <property name="description"><value>Msg.Sale.Persist.Sale</value></property>
                    <property name="statusCode"><value>01</value></property>
                    <property name="responseReason"><value>SAF7</value></property>
                    <property name="responseCode"><value>01</value></property>
                    <property name="messageText"><value>Sale Sale</value></property>
                    <property name="messageMatchNbr"><value>6</value></property>
                    <property name="isdStatusCode"><value>0</value></property>
                    <property name="responseTranslationEntryId"><value>5</value></property>
                </bean>
                <bean class="com.isd.model.SafTorResponseTranslationEntry">
                    <property name="description"><value>Accept.Response</value></property>
                    <property name="statusCode"><value>01</value></property>
                    <property name="responseReason"><value>SAF8</value></property>
                    <property name="responseCode"><value>01</value></property>
                    <property name="messageText"><value>Monitored Request Accepted</value></property>
                    <property name="messageMatchNbr"><value>7</value></property>
                    <property name="isdStatusCode"><value>0</value></property>
                    <property name="responseTranslationEntryId"><value>6</value></property>
                </bean>
                <bean class="com.isd.model.SafTorResponseTranslationEntry">
                    <property name="description"><value>Host.Down.Response</value></property>
                    <property name="statusCode"><value>09</value></property>
                    <property name="responseReason"><value>SAF9</value></property>
                    <property name="responseCode"><value>09</value></property>
                    <property name="messageText"><value>Host Down</value></property>
                    <property name="messageMatchNbr"><value>8</value></property>
                    <property name="isdStatusCode"><value>0</value></property>
                    <property name="responseTranslationEntryId"><value>7</value></property>
                </bean>
                <bean class="com.isd.model.SafTorResponseTranslationEntry">
                    <property name="description"><value>Timeout.Response</value></property>
                    <property name="statusCode"><value>04</value></property>
                    <property name="responseReason"><value>SAF10</value></property>
                    <property name="responseCode"><value>04</value></property>
                    <property name="messageText"><value>TIMEOUT</value></property>
                    <property name="messageMatchNbr"><value>9</value></property>
                    <property name="isdStatusCode"><value>0</value></property>
                    <property name="responseTranslationEntryId"><value>8</value></property>
                </bean>
                <bean class="com.isd.model.SafTorResponseTranslationEntry">
                    <property name="description"><value>System.Failure</value></property>
                    <property name="statusCode"><value>02</value></property>
                    <property name="responseReason"><value>SAF11</value></property>
                    <property name="responseCode"><value>02</value></property>
                    <property name="messageText"><value>SYSTEM FAILURE</value></property>
                    <property name="messageMatchNbr"><value>10</value></property>
                    <property name="isdStatusCode"><value>0</value></property>
                    <property name="responseTranslationEntryId"><value>9</value></property>
                </bean>
                <bean class="com.isd.model.SafTorResponseTranslationEntry">
                    <property name="description"><value>InvalidData.Response</value></property>
                    <property name="statusCode"><value>02</value></property>
                    <property name="responseReason"><value>SAF12</value></property>
                    <property name="responseCode"><value>02</value></property>
                    <property name="messageText"><value>Invalid Data</value></property>
                    <property name="messageMatchNbr"><value>11</value></property>
                    <property name="isdStatusCode"><value>0</value></property>
                    <property name="responseTranslationEntryId"><value>10</value></property>
                </bean>
                <bean class="com.isd.model.SafTorResponseTranslationEntry">
                    <property name="description"><value>No.Encryption.Key</value></property>
                    <property name="statusCode"><value>02</value></property>
                    <property name="responseReason"><value>SAF13</value></property>
                    <property name="responseCode"><value>02</value></property>
                    <property name="messageText"><value>NO ENCRYPTION KEYS AVAILABLE</value></property>
                    <property name="messageMatchNbr"><value>12</value></property>
                    <property name="isdStatusCode"><value>0</value></property>
                    <property name="responseTranslationEntryId"><value>11</value></property>
                </bean>
            </list>
        </constructor-arg>
    </bean>