Skip to content

Synqpay Driver

Overview

The Synqpay Driver is a lightweight client library for connecting a host application directly to a Synqpay payment terminal over the network or serial link. It handles the connection (TCP, SSL, or UART) and the JSON-RPC transport underneath, so your application can focus on sending requests and reacting to responses.

The driver ships as a single C++ core with matching bindings for Java (desktop and Android) and C# (.NET), so the same API is available regardless of which platform your application targets.


Why Choose Synqpay Driver?

  • Lightweight & Dependency-Free: no external dependencies pulled into your application.
  • One API, Every Platform: the same client shape across C++, Java, and C#.
  • Simple Threading Model: safe to call from your UI thread; the SDK manages its own connection thread internally.
  • Multiple Transports: TCP, SSL, or UART, selected at client creation.

Key Features

  • Simple Request API: send a JSON-RPC request and receive its response through a callback, without managing sockets or framing yourself.
  • Connection Lifecycle Management: start/stop and connect/disconnect are safe to call repeatedly.
  • Live Transaction Notifications: receive asynchronous status updates while a transaction is in progress.
  • No File Dependencies (Java / C#): the native library is bundled inside the jar / NuGet package and loaded automatically — no manual java.library.path setup or copying .so/.dll files yourself.

Getting Started

Adding the Driver to Your Project

See Setup for Maven, Gradle, and NuGet coordinates for each supported platform.

Synqpay Driver in 3 Simple Steps

Step 1: Build a client

1
2
3
4
5
SynqpayClient client = SynqpayClient.create(SynqpayClient.TransportType.TCP)
        .setEndpoint("10.0.0.1")
        .setApiKey("your-api-key")
        .setConnectionStateCallback(status -> { /* ... */ })
        .build();

Step 2: Start and connect

client.start();
client.connect();

Step 3: Send requests

1
2
3
4
5
6
7
int result = client.sendRequest(
    "{\"jsonrpc\":\"2.0\",\"method\":\"getTerminalStatus\",\"params\":null,\"id\":\"1\"}",
    response -> System.out.println(response)
);
if (result != 0) {
    System.out.println("send failed: " + client.getErrorMessage(result));
}

Warning

Always check the return value of sendRequest. It reports SDK/transport-level failures (e.g. not connected) that happen before the request is even sent, so the response callback will never fire for them.

For the full method reference, see API. For the request/response protocol itself (methods, params, transaction notifications), see the API reference.


Notes

  • The driver is a transport layer: it gets your JSON-RPC requests to the terminal and the responses back. The payment protocol itself (methods, parameters, error codes) is documented separately in the API reference.
  • Continue to Key Concepts for the full client lifecycle, threading, error handling, and logging.