sunmi_mtb

A Flutter plugin for MineSec SoftPOS (MSA) payment integration on Android.

Features

  • ✅ Check if MineSec SoftPOS app is installed
  • 🔥 Warm up the SoftPOS terminal
  • 🔑 Activate terminal with activation code
  • 💳 Perform sale transactions with typed results

Setup

1. Android Configuration

Your app's MainActivity must extend FlutterFragmentActivity (not FlutterActivity):

import io.flutter.embedding.android.FlutterFragmentActivity

class MainActivity : FlutterFragmentActivity()

Set minSdk to at least 26 in android/app/build.gradle.kts:

defaultConfig {
    minSdk = 26
}

2. Add Dependency

dependencies:
  sunmi_mtb:
    path: packages/sunmi_mtb  # or from git/pub

Usage

import 'package:sunmi_mtb/sunmi_mtb.dart';

// Initialize the plugin
final msa = SunmiMtb();

// Check installation
bool installed = await msa.isInstalled();

// Warm up
String? warmUpResult = await msa.warmUp();

// Activate
String? activationResult = await msa.activate('YOUR_ACTIVATION_CODE');

// Sale transaction
MsaTransactionResult? result = await msa.saleTransaction(
  amount: '15.50',
  posMessageId: 'TRX-123456',  // optional, auto-generated if omitted
);

if (result != null && result.isApproved) {
  print('Payment approved! ID: ${result.tranId}');
}

API Reference

SunmiMtb

Method Returns Description
isInstalled() Future<bool> Check if MSA app is installed
warmUp() Future<String?> Warm up the SoftPOS terminal
activate(code) Future<String?> Activate with code from backend
saleTransaction(amount, posMessageId?) Future<MsaTransactionResult?> Perform a sale transaction

MsaTransactionResult

Key fields: tranId, tranStatus, approvalCode, totalAmount, paymentMethod, maskedAccount, rrn, trace, mchName, acqTid, acqMid, isApproved, isError.

Platform Support

Android iOS

Note: This plugin is Android-only as MineSec SoftPOS is an Android application.

Contact

For any inquiries, please reach out to: support.sunmi.sdk@gmail.com