Administration

You can perform an administration operation using the the REST API for Oracle Retail EFTLink as long as the logon request was successfully performed. For more details, see the Use Case Logon.

Note:

The administration function is used to drive the maintenance menu options provided by the payment provider. This could be a reconilliation or print last receipt for example. The administration operation is driven by the service request API of EFTLink.

To perform an administration request:

URL: wss://localhost:8443/administration

Sample request from the client:

{
        "RequestType":"ADMINISTRATION",
        "ApplicationSender":"XSTORE",
        "WorkstationID":"1",
        "POSdata":
        {
               "LanguageCode":"en",
               "POSTimeStamp":"2020-05-15T13:32:48",
               "StoreID":"101",
               "TransactionNumber":"1"
         }
}

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

<?xml version="1.0" encoding="UTF-8"?>
<ServiceRequest RequestID="15" WorkstationID="1" ApplicationSender="XSTORE" RequestType="Administration">
  <POSdata LanguageCode="en">
    <POSTimeStamp>2020-06-26T15:42:27</POSTimeStamp>
    <StoreID>101</StoreID>
  </POSdata>
</ServiceRequest>

EFTLink will then send a device request over channel 1, the purpose of this is to be able to allow the associate to select a menu option:

<?xml version="1.0" encoding="UTF-8"?>
<DeviceRequest RequestID="15.1" WorkstationID="1" ApplicationSender="MICROS" RequestType="Input">
  <Output OutDeviceTarget="CashierDisplay">
    <TextLine MenuItem="0">EftLink v20.0.0.39 20200623-1719
OPIRetailCore v20.0.0.51 20200623-1719</TextLine>
    <TextLine MenuItem="1">RECONCILIATION</TextLine>
    <TextLine MenuItem="2">Cancel</TextLine>
  </Output>
  <Input InDeviceTarget="CashierKeyboard">
    <Command TimeOut="60">GetMenu</Command>
  </Input>
</DeviceRequest>
>

Which gets converted to JSON and sent over the same websocket channel for the client:

{
       "RequestType":"Input",
       "ApplicationSender":"MICROS",
       "WorkstationID":"1",
       "RequestID":"7.1",
       "Output":
       {
              "OutDeviceTarget":"CashierDisplay",
              "TextLine":
              "EftLink v20.0.0.39 20200623-1719\n
              OPIRetailCore v20.0.0.51 20200623-1719",
              "Labels":
              [
                      "RECONCILIATION",
                      "Cancel"
              ]
        },
        "Input":
        {
               "InDeviceTarget":"CashierKeyboard",
               "Command":
               {
                     "PII":false,
                     "Command":"GetMenu"
               },
               "CustomerOptions":[]
         }
}

This particular device request is for a menu selection, options being RECONCILLIATION or Cancel. The client must respond with an acknowledgement on the same web socket channel, assuming the associate selects the RECONCILLIATION option the following JSON is the response to the device request:

{
         "Output":
         {
                "OutDeviceTarget":"CashierDisplay",
                "OutResult":"Success"
         },
         "Input":
         {
               "InputValue":
               {
                       "InNumber":"1"
               },
               "InDeviceTarget":"CashierKeyboard",
               "InResult":"Success"
         },
         "RequestType":"Input",
         "ApplicationSender":"MICROS",
         "WorkstationID":"1",
         "RequestID":"7.1",
         "OverallResult":"Success"
}

The response is converted to XML and sent over the SSL socket channel 1:

<?xml version="1.0" encoding="UTF-8"?>
<DeviceResponse RequestID="15.1" WorkstationID="1" OverallResult="Success" ApplicationSender="MICROS" RequestType="Input">
  <Output OutDeviceTarget="CashierDisplay" OutResult="Success"/>
  <Input InDeviceTarget="CashierKeyboard" InResult="Success">
    <InputValue>
      <InNumber>1</InNumber>
    </InputValue>
  </Input>
</DeviceResponse>

EFTLink then send another device request over channel 1 to confirm the RECONCILLIATION request was successful:

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

Which will be converted to JSON and sent over the websocket channel to the client:

{
       "RequestType":"Output",
       "ApplicationSender":"MICROS",
       "WorkstationID":"1",
       "RequestID":"7.2",
       "Output":
       {
              "OutDeviceTarget":"CashierDisplay",
              "TextLine":"SETTLEMENT ACCEPTED"
       },
       "Input":
       {
            "Command":
            {
                "PII":false,
                "Command":"GetAnyKey"
            },
            "CustomerOptions":[]
       }
}

The client will respond with the following JSON over the same websocket channel:

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

Which will be converted to the following XML and sent back over channel 1:

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

Finally EFTLink will respond to the original service request over channel 0 with the following service response:

<?xml version="1.0" encoding="UTF-8"?>
<ServiceResponse RequestID="15" WorkstationID="1" OverallResult="Success" ApplicationSender="XSTORE" RequestType="Administration"/>

Which is converted to JSON and sent over the websocket channel for the client:

{
      "RequestType":"ADMINISTRATION",
      "ApplicationSender":"XSTORE",
      "WorkstationID":"1",
      "RequestID":"7",
      "OverallResult":"Success",
      "success":true
}