Remote Access
Enable external POS systems to trigger payment transactions on the SDK via local network communication.
Overview
EdfaPayPlugin.RemoteChannel enables external systems (e.g., a POS desktop) to send commands to the SDK over a local TCP socket. The SDK listens on a configurable port and responds with JSON.
LocalNetwork
Accepts commands over a local TCP socket. The SDK listens on a configurable port.
Interface
Commands and responses are JSON-formatted strings over the socket.
Use Cases
Remote Access is suitable for a variety of integration scenarios where payment needs to be triggered from an external system.
Hybrid POS Integration
External POS triggers payments on Android device over LAN
Kiosk Mode
Unattended kiosk where remote system controls payment flow
Backend Integration
Server sends commands directly to the payment device
Multi-Device Setup
Coordinate multiple devices from a central hub
Setup
Open a TCP listener on the device that accepts payment commands from external POS systems on the same network.
Loading...API Reference
The RemoteChannel API is accessed via EdfaPayPlugin.RemoteChannel.
| Member | Type/Parameters | Description |
|---|---|---|
| RemoteChannel.LocalNetwork(port, timeout) | port: Int, timeout: Long (ms) | Creates a local TCP channel on the given port with a read timeout |
| channel.open(context) | Context (Kotlin/Java) | Starts listening on the configured port. Returns the channel instance. |
| channel.close() | Unit | Stops the TCP listener and closes the socket. |
Remote Commands
The following JSON command formats are accepted on the socket:
| Command | action Value | Required Fields | Description |
|---|---|---|---|
| Purchase | purchase | amount, orderId? | Trigger a purchase transaction |
| Reverse Last | reverseLastTransaction | none | Reverse the last transaction processed |
Purchase Command
Loading...Protocol
Communication between the external system and the SDK follows a simple JSON request/response pattern over TCP.
Transport
Raw TCP socket (not HTTP). Connect to device IP on the configured port.
Format
UTF-8 encoded JSON strings. Line-delimited (newline terminated).
Flow
External system sends command -> SDK processes payment -> SDK sends response back.
Response
JSON object with success, transactionId, rrn, amount, status fields.
Network Security
The RemoteChannel TCP socket is unencrypted. Only use on isolated, trusted local networks. Never expose the port to the internet.
Security Considerations
The RemoteChannel is designed for trusted local network use only. Follow these guidelines to keep your integration secure.
Isolated Network Only
Use RemoteChannel exclusively on private, isolated local networks — never on public internet or untrusted Wi-Fi.
No TLS Encryption
The TCP socket is unencrypted. Sensitive command data is sent in plaintext. Ensure the network is physically secured.
Firewall Rules
Use firewall rules to restrict socket access to known IP addresses or MAC addresses of trusted POS terminals.
Port Selection
Choose a non-standard port above 1024. Avoid well-known ports that may be scanned or blocked.
Close When Idle
Call channel.close() when payment is not expected. Don't leave the socket open indefinitely.
PCI DSS Reminder
Exposing RemoteChannel on a network that connects to the internet may violate PCI DSS requirements. Always consult your compliance team before deploying.
On this page
Downloads
Coming SoonSample apps, release bundles, and more content will be available here soon.