EFTLink Server - (static one-to-one)

An EFTLink server is essentially multiple instances of EFTLink running where each instance is communicating over its own TCP socket. This allows for a POS/register and the EFTLink instance to have a static 1-1 mapping where each EFTLink instance can communicate using one or more active cores to the corresponding PSP’s.

Figure 2-1 EFTLink Server - static one-to-one

EFTLink Server -static one-to-one

The diagram above shows EFTLink Server running 4 instances of EFTLink which bridges a POS to a dedicated PSP. This configuration can be achieved by following the below configuration steps.

Within the EFTLink installation directory (for example, c:\eftlink) you will need the following:

  • Within the EFTLink installation directory 4 subfolders (Server<n>) are required and each folder will be used as a working directory for each instance.

    C:\eftlink\Server1

    C:\eftlink\Server2

    C:\eftlink\Server3

    C:\eftlink\Server4

The EFTLinkConfig.properties file within the root of the EFTLink Installation directory is used to spin up the required number of EFTLink Instances and to read-in the values specified within theEFTLinkConfig.properties file. To achieve a four-server configuration please ensure the property key NumServers value is set to “4”.

For example, NumServers = 4

Once you have customised the EFTLinkConfig.properties file that exists in the root of the EFTLink installation directory. It is necessary to copy this file to:

  • The root of the "xstore" Installation folder or "xstoredata\xstore" folder (for v22 or greater) as this is needed by the EFTLink (client) API library that xstore Interfaces with to build the requests and parse the EFTLink responses.

  • Each Server<n> folder. Once copied the file under the server<n> folder can be further modified for any specifics to that instance. For example, the active core being used such as EPSCore<n> property key.

An example (snippet) layout of how each configuration file would be is as follows:

Installation root and Xstore

(Not applicable for communication over websockets)

EFTLinkConfig.properties

ServerChannel0 = 10100

NumServers = 4

Xstore (ws1 – ws3)

AuthConfig.xml

<Host dtype="String">socket://localhost:10100</Host>
<Parameter name="deviceCommChannel" value="socket://localhost:10111"/>
<Parameter name="additionalWorkstationHostsMap">
<param_value dtype="Map">
<MapEntry>
    <key dtype="Integer">1</key> <!-- workstation id -->
     <value dtype="EFTLinkCommunicationChannels">
      <Channel0 dtype="String">socket://localhost:10110</Channel0>
      <Channel1 dtype="String">socket://localhost:10111</Channel1>
   </value>
</MapEntry>
<MapEntry>
    <key dtype="Integer">2</key>
     <value dtype="EFTLinkCommunicationChannels">
      <Channel0 dtype="String">socket://localhost:10120</Channel0>
      <Channel1 dtype="String">socket://localhost:10121</Channel1>
   </value>
</MapEntry>
<MapEntry>
     <key dtype="Integer">3</key>
      <value dtype="EFTLinkCommunicationChannels">
       <Channel0 dtype="String">socket://localhost:10130</Channel0>
       <Channel1 dtype="String">socket://localhost:10131</Channel1>
   </value>
</MapEntry>
</param_value>
</Parameter>

Server 1

EFTLinkConfig.properties

EPSCore0 = oracle.eftlink.opiretail.OPIRetailCore

opiretail.properties

EPSAddress = 192.168.1.11

EPSPort = 8443

Server 2

EFTLinkConfig.properties

EPSCore0 = oracle.eftlink.opiretail.OPIRetailCore

opiretail.properties

EPSAddress = 192.168.1.12

EPSPort = 8443

Server 3

EFTLinkConfig.properties

EPSCore0 = oracle.eftlink.opiretail.OPIRetailCore

LineDisplayEnabled=false

opiretail.properties

EPSAddress = 192.168.1.13

EPSPort = 8443

Server 4

EFTLinkConfig.properties

EPSCore0 = oracle.eftlink.opiretail.OPIRetailCore

EPSCore1 = oracle.eftlink.paypal.PayPalCore

LineDisplayEnabled=true

DelegateLineDisplay = true

LineDisplayDelegateList = 0

EwalletCore = 1

EFTLink-rest-api.properties

ServerChannel0 = 10100

NumServers = 1

Pos30 = 10140

PEDPoolEnabled = false

opiretail.properties

EPSAddress = 192.168.1.14

EPSPort = 8443

The above example illustrates that each server can differ its configuration. For example, Server 1 and 2 only differ in terms of core properties file where both point to their respective providers endpoint address and port.

Server 3 will automatically block any sale state notifications reaching the opiretail core.

Server 4 configuration harnesses the EFTLink rest-api service to interpret the websocket requests from the POS along with adding in an additional core to reroute any EWallet requests to core 1. Any sale state notifications coming in will only be forwarded to core 0.