Flutter ECR Plugin

Purpose

The Flutter ECR Plugin (ecrlib) provides cross‑platform integration for Android and iOS applications. It wraps the native SDKs to expose Dart APIs, enabling developers to build POS apps in Flutter without directly handling native socket communication.

Prerequisites

  • Flutter SDK 2.0+
  • ecrlib package added to pubspec.yaml
  • Native Android/iOS SDKs configured in the project

Installation

# pubspec.yaml
dependencies:
  ecrlib:
    path: ./plugins/ecrlib

TCP/IP Connection Example

import 'package:ecrlib/ecrlib.dart';

final tcp = TcpConnect();
int status = await tcp.connectTCP("192.168.0.102", 8888, "ECR001");

tcp.doTransaction(
  reqData: requestString,
  txnType: 0, // Purchase
  signature: signatureData,
  listener: ComEventListener(
    onEvent: (event) => print("Event: $event"),
    onSuccess: (response) => print("Success: $response"),
    onFailure: (error, code) => print("Error: $error"),
  ),
);

tcp.disconnect();

App‑to‑App Connection Example (Android Only)

final a2a = AppToAppConnect();
int? status = await a2a.connect("ECR001");

a2a.doTransaction(
  reqData: requestString,
  txnType: 0, // Purchase
  signature: signatureData,
  listener: ComEventListenerss(
    onEvent: (event) => print("Event: $event"),
    onSuccess: (response) => print("Success: $response"),
    onFailure: (error, code) => print("Error: $error"),
  ),
);

Transaction Flow

connectTCP() / connect() → Register (17) → Start Session (18) → doTransaction() → ComEventListener

⚠️ Legacy vs Adapter Separation

  • Legacy ECR integrations require Register (17) and Start Session (18).
  • Adapter/Middleware integrations (Local REST API, Cloud REST API) do not require these steps.

Request and Response Details

When performing a transaction, include:

  • Date (ddMMyyHHmmss)
  • ECR Reference Number
  • 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