Flutter智能POS机集成插件smartpos_flutter的使用

Flutter智能POS机集成插件smartpos_flutter的使用

Elgin SmartPOS

Flutter插件Elgin SmartPOS。 该插件仍在开发中,可能存在错误。如遇到问题,请打开一个issue。

尚未实现的功能

  • 扫描器。

示例

void initElgin() async {
  await ElginPAY.init(
    DadosAutomacao(
      empresaAutomacao: "公司",
      nomeAutomacao: "公司",
      versaoAutomacao: "1",
      mPersonalizacaoCliente: Personalizacao(
        corFonte: Colors.blue.toHex(),
        corFundoTela: Colors.yellow.toHex(),
      ),
    ),
  );
}

void administrativa() async {
  var saidaTransacao = await ElginPAY.iniciarTransacao(
    EntradaTransacao(
      operacao: Operacoes.VENDA,
      identificadorTransacaoAutomacao: new Random().nextInt(9999).toString(),
    ),
  );

  await ElginPAY.resolvePendencia(
    saidaTransacao.dadosTransacaoPendente!,
    Confirmacoes(statusTransacao: StatusTransacao.CONFIRMADO_AUTOMATICO),
  );
}

void imprimir() {
  ElginPAY.imprimirStrings([
    '测试打印',
    '第2行',
    '第3行',
  ]);
}

安装

  • 运行以下命令安装插件:
flutter pub add smartpos_flutter
  • Android/app/build.gradle文件中添加Elgin的库,具体参考Elgin的集成文档。

完整示例Demo

import 'dart:math';

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:smartpos_flutter/models/confirmacoes.dart';
import 'package:smartpos_flutter/models/dados_automacao.dart';
import 'package:smartpos_flutter/models/entrada_transacao.dart';
import 'package:smartpos_flutter/models/personalizacao.dart';
import 'package:smartpos_flutter/models/transacao_pendente_dados.dart';
import 'package:smartpos_flutter/smartpos_flutter.dart';
import 'package:smartpos_flutter/utils.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState();
    initElgin();
  }

  void initElgin() async {
    await ElginPAY.init(
      DadosAutomacao(
        empresaAutomacao: "公司",
        nomeAutomacao: "公司",
        versaoAutomacao: "1",
        mPersonalizacaoCliente: Personalizacao(
          corFonte: Colors.blue.toHex(),
          corFundoTela: Colors.yellow.toHex(),
        ),
      ),
    );
  }

  void administrativa() async {
    var saidaTransacao = await ElginPAY.iniciarTransacao(
      EntradaTransacao(
        operacao: Operacoes.VENDA,
        identificadorTransacaoAutomacao: new Random().nextInt(9999).toString(),
      ),
    );

    await ElginPAY.resolvePendencia(
      saidaTransacao.dadosTransacaoPendente!,
      Confirmacoes(statusTransacao: StatusTransacao.CONFIRMADO_AUTOMATICO),
    );
  }

  void imprimir() {
    ElginPAY.imprimirStrings([
      '测试打印',
      '第2行',
      '第3行',
    ]);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('SmartPOS Flutter DEMO'),
        ),
        body: Center(
          child: Column(children: [
            ElevatedButton(
              onPressed: administrativa,
              child: Text("交易"),
            ),
            ElevatedButton(
              onPressed: imprimir,
              child: Text("测试打印"),
            ),
          ]),
        ),
      ),
    );
  }
}

更多关于Flutter智能POS机集成插件smartpos_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter智能POS机集成插件smartpos_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


smartpos_flutter 是一个用于在 Flutter 应用中集成智能 POS 机的插件。它提供了与智能 POS 设备进行通信的功能,例如读取银行卡信息、进行支付等。以下是如何使用 smartpos_flutter 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 smartpos_flutter 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  smartpos_flutter: ^版本号

请将 ^版本号 替换为最新的插件版本号。

2. 导入插件

在你的 Dart 文件中导入 smartpos_flutter 插件:

import 'package:smartpos_flutter/smartpos_flutter.dart';

3. 初始化插件

在使用插件之前,你需要初始化它。通常,你可以在 initState 方法中进行初始化:

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  SmartposFlutter _smartpos;

  [@override](/user/override)
  void initState() {
    super.initState();
    _smartpos = SmartposFlutter();
    _smartpos.initialize().then((_) {
      print("Smart POS initialized");
    }).catchError((error) {
      print("Failed to initialize Smart POS: $error");
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Smart POS Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: _startPayment,
            child: Text('Start Payment'),
          ),
        ),
      ),
    );
  }

  void _startPayment() async {
    try {
      // 调用支付方法
      var result = await _smartpos.startPayment(amount: 100.0);
      print("Payment Result: $result");
    } catch (e) {
      print("Payment Failed: $e");
    }
  }
}

4. 使用插件功能

smartpos_flutter 插件提供了多种功能,例如开始支付、读取卡片信息等。你可以根据插件的 API 文档调用相应的方法。

例如,开始支付:

void _startPayment() async {
  try {
    var result = await _smartpos.startPayment(amount: 100.0);
    print("Payment Result: $result");
  } catch (e) {
    print("Payment Failed: $e");
  }
}

5. 处理结果

根据插件的返回值,你可以处理支付成功或失败的情况。通常,插件会返回一个包含支付结果的对象,你可以根据这个对象更新 UI 或进行其他操作。

6. 释放资源

在应用退出或不再需要使用 POS 设备时,记得释放资源:

[@override](/user/override)
void dispose() {
  _smartpos.dispose();
  super.dispose();
}

7. 处理权限和配置

确保你的应用已经获得了访问 POS 设备所需的权限,并且正确配置了设备。你可能需要在 AndroidManifest.xmlInfo.plist 中添加相应的权限和配置。

8. 调试和测试

在实际使用之前,建议在真实设备上进行充分的测试,确保所有功能都能正常工作。

9. 参考文档

更多详细的使用方法和 API 说明,请参考 smartpos_flutter 插件的官方文档或 GitHub 仓库。

示例代码

以下是一个简单的完整示例:

import 'package:flutter/material.dart';
import 'package:smartpos_flutter/smartpos_flutter.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  SmartposFlutter _smartpos;

  [@override](/user/override)
  void initState() {
    super.initState();
    _smartpos = SmartposFlutter();
    _smartpos.initialize().then((_) {
      print("Smart POS initialized");
    }).catchError((error) {
      print("Failed to initialize Smart POS: $error");
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Smart POS Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: _startPayment,
            child: Text('Start Payment'),
          ),
        ),
      ),
    );
  }

  void _startPayment() async {
    try {
      var result = await _smartpos.startPayment(amount: 100.0);
      print("Payment Result: $result");
    } catch (e) {
      print("Payment Failed: $e");
    }
  }

  [@override](/user/override)
  void dispose() {
    _smartpos.dispose();
    super.dispose();
  }
}
回到顶部