Read Non PCI Card Details

You can perform a read non PCI card request using the REST API for Oracle Retail EFTLink as long as a logon request was successfully performed. For details see the Use Case Logon].

Note:

This feature is used to retrieve the PAN or Track data of a non PCI card. The typical use case is where the system integrator would like to use Xstore to retrieve a Gift Card PAN or a Loyalty card in order to send it on to an external system, such as ORCE.

To perform a Read Non PCI Card Details request:

URL: wss://localhost:8443/card_swipe

Sample request from client:

{
         "POSdata":
         {
                 "TransactionNumber":"217",
                 "StoreID":"731",
                 "LanguageCode":"eng"
         },
         "TotalAmount":
         {
               "Currency":"GBP","text":"5.00"
         },
         "PaymentProviderName":"",
         "RequestType":"",
         "RequestSubType":"",
         "ApplicationSender":"XSTORE",
         "WorkstationID":"1",
}

This request will be converted to IFSF XML and sent over the SSL channel 0 as follows:

<?xml version="1.0" encoding="UTF-8"?>
<CardServiceRequest RequestID="5" WorkstationID="1" ApplicationSender="XSTORE" RequestType="CardSwipe">
  <POSdata LanguageCode="en">
    <POSTimeStamp>2020-07-06T11:02:48</POSTimeStamp>
    <StoreID>731</StoreID>
    <TransactionNumber>217</TransactionNumber>
  </POSdata>
  <TotalAmount Currency="GBP">5.00</TotalAmount>
</CardServiceRequest

If the request is successful, depending on the EFTLink Core a device request could be sent over SSL channel 1 to confirm that the request was successful as follows:

<?xml version="1.0" encoding="UTF-8"?>
<DeviceRequest RequestID="5.1" WorkstationID="1" ApplicationSender="MICROS" RequestType="Output">
  <Output OutDeviceTarget="CashierDisplay">
    <TextLine>Transaction Approved</TextLine>
  </Output>
</DeviceRequest>

This will be converted to JSON and sent back over the web socket channel to the client:

{
        "RequestType":"Output",
        "ApplicationSender":"MICROS",
        "WorkstationID":"1",
        "RequestID":"5.1",
        "Output":
        {
               "OutDeviceTarget":"CashierDisplay",
               "TextLine":"Transaction Approved"
        },
        "Input":
        {
               "Command":
               {
                    "PII":false,
                    "Command":"GetAnyKey"
               },
               "CustomerOptions":[]
               }
}

This particular device request is a message to display. The client must respond with an acknowledgement on the same web socket channel, the following JSON is the response to the device request:

{
        "Output":
        {
                "OutDeviceTarget":"CashierDisplay",
                "OutResult":"Success"
         },
         "RequestType":"Output",
         "ApplicationSender":"MICROS",
         "WorkstationID":"1",
         "RequestID":"5.1",
         "OverallResult":"Success"
}

SSL socket channel 1 on the client will receive the following response:

<?xml version="1.0" encoding="UTF-8"?>
<DeviceResponse RequestID="5.1" WorkstationID="1" OverallResult="Success" ApplicationSender="MICROS" RequestType="Output">
  <Output OutDeviceTarget="CashierDisplay" OutResult="Success"/>
</DeviceResponse>

Note:

This response should be sent as soon as the text to display has been rendered on the client user interface.

Finally the client will receive the following payment response on channel 0 as follows:

<?xml version="1.0" encoding="UTF-8"?>
<CardServiceResponse RequestID="5" WorkstationID="1" OverallResult="Success" ApplicationSender="XSTORE" RequestType="CardSwipe">
  <Terminal STAN="217" TerminalID="0"/>
  <CardValue CardType="80" EntryMode="MSR" LoyaltyEligible="true">
    <CardPAN>492949******0002</CardPAN>
    <StartDate>1200</StartDate>
    <EndDate>####</EndDate>
    <CardCircuit>SVC</CardCircuit>
  </CardValue>
  <PaymentProviderName>oracle.eftlink.opiretail.OPIRetailCore</PaymentProviderName>
</CardServiceResponse>

This will then be converted to JSON and sent to the client on the web socket channel:

{
       "Terminal":
       {
                "TerminalID":"0"
       },
       "Tender":
       {
               "TotalAmount":{},
               "Authorization":
               {
                     "CardType":"80",
                     "EntryMode":"2",
                     "CardPAN":"492949******0002",
                     "ExpiryDate":"1299"
                }
        },
        "CardValue":
        {
              "ICC":{},
              "CardPAN":"492949******0002",
              "EndDate":"1299",
              "CardCircuit":"SVC",
              "Category":"0",
              "TransactionReference":"1299",
              "CardType":"80",
              "EntryMode":"1"
        },
        "PaymentProviderName":"oracle.eftlink.opiretail.OPIRetailCore",
        "RequestType":"9",
        "ApplicationSender":"XSTORE",
        "WorkstationID":"1",
        "RequestID":"5",
        "OverallResult":"Success",
        "Success":true
}

The CardPAN field could then be used to pass onto another system to support other use cases.