SVC Load
You can perform an SVC Load request using the REST API for Oracle Retail EFTLink as long as a logon request was successfully performed. For more details, see the Use Case Logon.
To perform an SVC Load request:
URL: wss://localhost:8443/svc_add
Sample request from client:
{
"POSdata":
{
"TransactionNumber":"217",
"StoreID":"731",
"LanguageCode":"eng"
},
"TotalAmount":
{
"Currency":"GBP","text":"5.00"
},
"PaymentProviderName":"",
"RequestType":"",
"RequestSubType":"Load",
"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="10" WorkstationID="1" ApplicationSender="XSTORE" RequestType="StoreValueInCard">
<POSdata LanguageCode="en">
<POSTimeStamp>2020-07-07T14:07:51</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="10.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":"10.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":"10.1",
"OverallResult":"Success"
}
SSL socket channel 1 on the client will receive the following response:
<?xml version="1.0" encoding="UTF-8"?>
<DeviceResponse RequestID="10.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.If the EFTLink payment Core is configured to provide a merchant copy of the receipt a device request will be sent back on SSL socket channel 1 as follows:
<?xml version="1.0" encoding="UTF-8"?>
<DeviceRequest RequestID="10.2" WorkstationID="1" ApplicationSender="MICROS" RequestType="Output">
<Output OutDeviceTarget="Printer">
<TextLine>Demo Res</TextLine>
<TextLine>ORACLE Demo Store</TextLine>
<TextLine>888 Test Ave., Columbia,MD</TextLine>
<TextLine/>
<TextLine> Merchant Copy</TextLine>
<TextLine/>
<TextLine>Merchant ID : Simulator123456</TextLine>
<TextLine>Terminal ID : 12345678</TextLine>
<TextLine/>
<TextLine>Trans. Type : RELOAD</TextLine>
<TextLine/>
<TextLine>Card No. : XXXXXXXXXXXX0002</TextLine>
<TextLine>Card Type : SVC</TextLine>
<TextLine>Exp. Date : 9912</TextLine>
<TextLine/>
<TextLine>Trans. Time : 07/07/2020 14:08</TextLine>
<TextLine>Trace No. : 364985</TextLine>
<TextLine>RRN : 259977</TextLine>
<TextLine>Offline Auth: N</TextLine>
<TextLine>Auth Code : 468512</TextLine>
<TextLine/>
<TextLine>Balance : ??105.00</TextLine>
<TextLine>AMOUNT : ??5.00</TextLine>
<TextLine/>
<TextLine> Approved</TextLine>
<TextLine/>
<TextLine>I agree to the terms of my</TextLine>
<TextLine>credit agreement.</TextLine>
</Output>
</DeviceRequest>
This will then be converted to JSON and sent back on the web socket channel as follows:
{
"RequestType":"Output",
"ApplicationSender":"MICROS",
"WorkstationID":"1",
"RequestID":"10.2",
"Output":
{
"OutDeviceTarget":"Printer",
"TextLine":
"Demo Res\n
ORACLE Demo Store\n
888 Test Ave., Columbia,MD\n\n
Merchant Copy\n\n
Merchant ID : Simulator123456\n
Terminal ID : 12345678\n\n
Trans. Type : RELOAD\n\n
Card No. : XXXXXXXXXXXX0002\n
Card Type : SVC\n
Exp. Date : 9912\n\n
Trans. Time : 07/07/2020 14:08\n
Trace No. : 364985\n
RRN : 259977\n
Offline Auth: N\n
Auth Code : 468512\n\n
Balance : ??105.00\n
AMOUNT : ??5.00\n\n
Approved\n\n
I agree to the terms of my\n
credit agreement."
},
"Input":
{
"Command":
{
"PII":false,
"Command":"GetAnyKey"
},
"CustomerOptions":[]
}
}
The client should acknowledge the print request by sending the following JSON object on the same WebSocket channel:
Note:
EFTLink can wait up to 3 minutes to receive the device response before continuing the transaction. If the time out expires EFTLink will continue with the remainder of the transaction workflow.{
"Output":
{
"OutDeviceTarget":"CashierDisplay",
"OutResult":"Success"
},
"RequestType":"Output",
"ApplicationSender":"MICROS",
"WorkstationID":"1",
"RequestID":"10.2",
"OverallResult":"Success"
}
SSL socket channel 1 on the client will receive the following response:
<?xml version="1.0" encoding="UTF-8"?>
<DeviceResponse RequestID="10.2" WorkstationID="1" OverallResult="Success" ApplicationSender="MICROS" RequestType="Output">
<Output OutDeviceTarget="Printer" OutResult="Success"/>
</DeviceResponse>
Finally the client will receive the following payment response on channel 0 as follows:
Note:
In this instance the EFTLink Core is configured for combined receipts which means the customer copy of the receipt will be embedded in the CardServiceResponse as follows.<?xml version="1.0" encoding="UTF-8"?>
<CardServiceResponse RequestID="10" WorkstationID="1" OverallResult="Success" ApplicationSender="XSTORE" RequestType="StoreValueInCard">
<Terminal STAN="259977" TerminalID="12345678" MerchantID="Simulator123456"/>
<Tender>
<TotalAmount Currency="GBP">5.00</TotalAmount>
<Authorization CardPAN="492949******0002" ExpiryDate=###### CardType="80" CardCircuit="UNKNOWN CARD" EntryMode="MSR" AcquirerID="UNKNOWN" AcquirerTransactionReference="259977" TimeStamp="2020-07-07T14:08:01" ApprovalCode="468512"/>
</Tender>
<CardValue CardType="80" EntryMode="MSR" LoyaltyEligible="true">
<CardPAN>492949******0002</CardPAN>
<EndDate>####</EndDate>
<CardCircuit>UNKNOWN CARD</CardCircuit>
<Token>C923245########1163</Token>
</CardValue>
<Balance>105.00</Balance>
<PaymentProviderName>oracle.eftlink.opiretail.OPIRetailCore</PaymentProviderName>
<TextLine>Demo Res</TextLine>
<TextLine>ORACLE Demo Store</TextLine>
<TextLine>888 Test Ave., Columbia,MD</TextLine>
<TextLine/>
<TextLine> Customer Copy</TextLine>
<TextLine/>
<TextLine>Merchant ID : Simulator123456</TextLine>
<TextLine>Terminal ID : 12345678</TextLine>
<TextLine/>
<TextLine>Trans. Type : RELOAD</TextLine>
<TextLine/>
<TextLine>Card No. : XXXXXXXXXXXX0002</TextLine>
<TextLine>Card Type : SVC</TextLine>
<TextLine>Exp. Date : 9912</TextLine>
<TextLine/>
<TextLine>Trans. Time : 07/07/2020 14:08</TextLine>
<TextLine>Trace No. : 364985</TextLine>
<TextLine>RRN : 259977</TextLine>
<TextLine>Offline Auth: N</TextLine>
<TextLine>Auth Code : 468512</TextLine>
<TextLine/>
<TextLine>Balance : ??105.00</TextLine>
<TextLine>AMOUNT : ??5.00</TextLine>
<TextLine/>
<TextLine> Approved</TextLine>
<TextLine/>
<TextLine>I agree to the terms of my</TextLine>
<TextLine>credit agreement.</TextLine>
</CardServiceResponse>
This will then be converted to JSON and sent to the client on the web socket channel:
Note:
The client will be expected to take the receipt details out of the final response and manage the printing as such.{
"Terminal":
{
"TerminalID":"12345678",
"MerchantID":"Simulator123456"
},
"Tender":
{
"TotalAmount":
{
"Currency":"GBP","text":"5.00"
},
"Authorization":
{
"AcquirerID":"UNKNOWN",
"AcquirerTransactionReference":"259977",
"TimeStamp":"Tue Jul 07 14:08:01 BST 2020",
"ApprovalCode":"468512",
"CardType":"80",
"EntryMode":"2",
"CardPAN":"492949******0002",
"ExpiryDate":"1299",
"CardCircuit":"UNKNOWN CARD"
}
},
"CardValue":
{
"ICC":{},
"CardPAN":"492949******0002",
"EndDate":"1299",
"CardCircuit":"UNKNOWN CARD",
"Category":"0",
"Token":"C923245089498661163",
"CardType":"80",
"EntryMode":"2"
},
"Balance":"105.00",
"PaymentProviderName":"oracle.eftlink.opiretail.OPIRetailCore",
"RequestType":"15",
"ApplicationSender":"XSTORE",
"WorkstationID":"1",
"RequestID":"10",
"OverallResult":"Success",
"Success":true
}