Android ECR SDK

Purpose

The Android ECR SDK provides native JNI integration with Nami payment terminals using SkyBandSDK-release.aar. It enables Android POS applications to perform transactions over TCP/IP, Bluetooth, or App‑to‑App connections, without requiring developers to implement raw socket communication manually.

Prerequisites

  • Android Studio Arctic Fox or later
  • Minimum SDK: API 21 (Android 5.0)
  • Terminal connected via TCP/IP (Wi‑Fi) or paired via Bluetooth

Required Permissions

Add the following to AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

Installation

// app/build.gradle
dependencies {
    implementation files('libs/SkyBandSDK-release.aar')
}

Usage Example

val ecrLib = CLibraryLoad()

// Connect via TCP/IP
val socket = Socket("192.168.0.102", 8888)

// Register ECR (txnType = 17) – Legacy only
val registerReq = ecrLib.pack(requestData, 17, signature)
socket.outputStream.write(registerReq)
val response = socket.inputStream.read(buffer)
val parsed = ecrLib.parse(response)

// Purchase (txnType = 0)
val purchaseReq = ecrLib.pack(requestData, 0, signature)
socket.outputStream.write(purchaseReq)
val purchaseResp = socket.inputStream.read(buffer)
val result = ecrLib.parse(purchaseResp)

⚠️ Legacy vs Adapter Separation

  • Legacy ECR integrations require:
    • Register Terminal (txnType = 17)
    • Start Session (txnType = 18)
  • Adapter/Middleware integrations (Local REST API, Cloud REST API) do not require registration or session steps.

Request and Response Details

When performing a transaction, include:

  • Date (ddMMyyHHmmss)
  • ECR Reference Number (String)
  • Amount (Integer in halalas, e.g., 100 = SAR 1.00)

Responses return:

  • Response Code (Approved/Failed)
  • Approval Code
  • Receipt Data

Transaction Type Codes

CodeTransaction Type
0Purchase
1Purchase with Naqd/Cashback
2Refund
3Authorization
4Purchase Advice (Full)
5Purchase Advice (Partial)
6Auth Extension
7Auth Void
9Cash Advance
10Reconciliation
11Reversal
15Bill Payment
17Register (Legacy only)
18Start Session (Legacy only)
19End Session
23Duplicate / Previous Txn
24Check Status
25Health Check