Flutter支付终端管理插件ingenico_device的使用

Flutter支付终端管理插件ingenico_device的使用

Ingenico

ingenico_device 是一个用于连接 Ingenico 移动支付设备的 Flutter 插件。支持 Ingenico SDK 版本 2.8.0。

Pub License: MIT

初始化

初始化 Ingenico SDK 需要您的 API 密钥、API 基础 URL 和客户端版本。

await IngenicoDevice.ingenicoInitialize("API-KEY", "https://uatmcm.roamdata.com/", "4.2.3");

登录

登录以验证 API 访问的身份,需要用户名和密码。

await IngenicoDevice.ingenicoLogin("UserName", "Password");

设置设备类型

设置应用程序使用的设备类型。应用默认设置为 RUADeviceTypeRP750x,但您可以使用此方法将其更改为任何支持的设备。

await IngenicoDevice.setDeviceType();

设备设置

完成选定并初始化设备的最终设置。请注意,这还需要您已登录到 API。

await IngenicoDevice.setUpDevice();

搜索设备

搜索 Ingenico MOB55 设备。

await IngenicoDevice.search();

处理信用卡销售交易

处理信用卡交易。

await IngenicoDevice.creditSale("INR", 1000);

示例代码

以下是一个完整的示例代码,展示了如何使用 ingenico_device 插件。

示例代码:example/lib/main.dart

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

import 'package:flutter/services.dart';
import 'package:ingenico_device/ingenico_device.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();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
          appBar: AppBar(
            title: const Text('插件示例应用'),
          ),
          body: Column(
            children: [
              ElevatedButton(
                  onPressed: () async {
                    // 初始化 Ingenico SDK
                    await IngenicoDevice.ingenicoInitialize(
                        "API-KEY", "https://uatmcm.roamdata.com/", "4.2.3");
                  },
                  child: Text('初始化')),

              ElevatedButton(
                  onPressed: () async {
                    // 登录
                    await IngenicoDevice.ingenicoLogin("UserName", "Password");
                  },
                  child: Text('登录')),

              ElevatedButton(
                  onPressed: () async {
                    // 设置设备类型
                    var devices = await IngenicoDevice.setDeviceType();
                    print(devices.toString());
                  },
                  child: Text('设置设备类型')),

              ElevatedButton(
                  onPressed: () async {
                    // 搜索设备
                    var devices = await IngenicoDevice.search();
                    print(devices.toString());
                  },
                  child: Text('搜索')),

              ElevatedButton(
                  onPressed: () async {
                    // 完成设备设置
                    var devices = await IngenicoDevice.setUpDevice();
                    print(devices.toString());
                  },
                  child: Text('设置设备')),

              ElevatedButton(
                  onPressed: () async {
                    // 处理信用卡销售交易
                    var devices = await IngenicoDevice.creditSale("INR", 1000);
                    print(devices.toString());
                  },
                  child: Text('处理信用卡销售')),
            ],
          )),
    );
  }
}

更多关于Flutter支付终端管理插件ingenico_device的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter支付终端管理插件ingenico_device的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,关于Flutter中的ingenico_device插件的使用,这里是一个基本的代码示例,展示如何集成和使用该插件进行支付终端管理。请注意,实际使用中可能需要处理更多的错误检查和边界情况,并且确保你有相应的权限和配置来与支付终端进行通信。

首先,确保你已经在pubspec.yaml文件中添加了ingenico_device依赖:

dependencies:
  flutter:
    sdk: flutter
  ingenico_device: ^latest_version  # 替换为实际的最新版本号

然后运行flutter pub get来安装依赖。

接下来,在你的Flutter应用中,你可以按照以下步骤使用ingenico_device插件:

  1. 导入插件
import 'package:ingenico_device/ingenico_device.dart';
  1. 初始化插件

通常,你可能需要在应用启动时初始化插件。这可以放在你的主页面或初始化逻辑中。

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 IngenicoDevice 插件
  IngenicoDevice ingenicoDevice = IngenicoDevice();
  
  // 检查设备连接状态(可选)
  ingenicoDevice.deviceStatus.listen((status) {
    print('Device Status: $status');
  });

  runApp(MyApp());
}
  1. 使用插件功能

这里展示如何连接到支付终端、发送支付指令以及处理支付结果。请注意,这只是一个简化的示例,实际支付流程可能需要更多的步骤和安全性考虑。

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  IngenicoDevice _ingenicoDevice = IngenicoDevice();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Ingenico Device Demo'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              ElevatedButton(
                onPressed: _connectToDevice,
                child: Text('Connect to Device'),
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: _initiatePayment,
                child: Text('Initiate Payment'),
                enabled: _ingenicoDevice.isConnected,  // 只有在连接时才启用
              ),
            ],
          ),
        ),
      ),
    );
  }

  void _connectToDevice() async {
    try {
      bool isConnected = await _ingenicoDevice.connect();
      setState(() {
        // 更新连接状态
      });
      print('Device Connected: $isConnected');
    } catch (e) {
      print('Error connecting to device: $e');
    }
  }

  void _initiatePayment() async {
    if (!_ingenicoDevice.isConnected) {
      print('Device is not connected. Please connect first.');
      return;
    }

    try {
      // 假设我们有一个支付指令对象
      Map<String, dynamic> paymentInstruction = {
        'amount': 100.0,  // 支付金额
        'currency': 'USD',  // 货币
        // 其他必要的支付指令参数...
      };

      // 发送支付指令到设备
      var paymentResult = await _ingenicoDevice.initiatePayment(paymentInstruction);

      // 处理支付结果
      print('Payment Result: $paymentResult');
    } catch (e) {
      print('Error initiating payment: $e');
    }
  }
}

注意事项

  • 上述代码是一个简化的示例,用于展示基本的连接和支付流程。
  • 在实际应用中,你需要根据ingenico_device插件的文档来处理更多细节,比如错误处理、安全认证、支付指令的具体格式等。
  • 确保你已经根据Ingenico的文档配置了必要的后台服务和权限。
  • 考虑到支付操作的安全性,不要在客户端代码中硬编码敏感信息,如API密钥或敏感配置。

希望这个示例能帮助你开始使用ingenico_device插件进行支付终端管理。如果有更多具体需求或问题,建议查阅插件的官方文档或联系插件的维护者。

回到顶部