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
}