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.