Flutter网络连接插件connect_ips_flutter的使用

Flutter网络连接插件ConnectIPS Flutter的使用

ConnectIPS Flutter

ConnectIPS Flutter 是一个简化集成 Connect IPS 支付网关到你的移动或 Web 应用的 Flutter 包。

特性

  • 易于与 Connect IPS 支付网关集成。
  • 支持测试环境和生产环境。
  • 提供用于自定义支付流程的组件和方法。
  • 基于令牌的交易认证。
  • 支持使用基本认证进行交易验证。

入门指南

前提条件

商户注册

在集成 ConnectIPS 之前,确保你有一个商户账户。商户必须通过其相应的银行提交必要的文档来注册他们的应用程序。成功注册后,你将收到以下信息:

  • MERCHANTID: 用于识别商户的唯一整数 ID。
  • APPID: 用于识别商户应用的唯一字符串 ID。
  • APPNAME: 用于标识商户及其应用的应用名称。
  • CREDITOR.pfx: 签名令牌的数字证书文件。

重定向 URL

你需要提供以下 URL 用于交易重定向:

  • 成功 URL: 成功付款后重定向。
  • 失败 URL: 付款失败或手动返回时重定向。

设置

存储和访问私钥

将从 CREDITOR.pfx 文件中获取的密钥存储在后端或任何云存储中,并使用安全的服务器端代码(如创建经过身份验证的请求以获取令牌)来检索它。不建议在应用中保留私钥。

添加依赖

pubspec.yaml 中添加 connect_ips_flutter

dependencies:
  connect_ips_flutter: any

导入包

在 Dart 文件中导入包:

import 'package:connect_ips_flutter/connect_ips_flutter.dart';

使用

配置

使用 CIPSConfig 设置配置:

final config = const CIPSConfig.stag(
  creditorKey: '<-- your authenticated server-side request to get the token -->',
  merchantID: '<merchant_id>',
  appID: '<app_id>',
  appName: '<app_name>',
  transactionID: '<unique_transaction_id>',
  successUrl: 'https://example.com/success',
  failureUrl: 'https://example.com/failure',
  transactionAmount: 1000, // 金额(单位:派萨)
);

你可以使用 generateTransactionID([int length = 20]) 工具函数生成唯一的交易 ID。此帮助函数将生成给定长度的唯一交易 ID,默认长度为 20。

注意:交易 ID 最多只能为 20 个字符。

对于生产环境,使用 CIPSConfig.live

支付集成

使用支付按钮

ConnectIPSPaymentButton(
  config: config,
  onMessage: (connectIPS, {description, event, needsPaymentConfirmation, statusCode}) {
    print('Message: $description, Event: $event, Status Code: $statusCode');
  },
  onPaymentResult: (paymentResult, connectIps) {
    print('Payment Result: $paymentResult');
  },
);

使用自定义实例

late ConnectIps connectIps;

@override
void initState() {
  super.initState();
  connectIps = ConnectIps(
    config: CIPSConfig.stag(...),
    onMessage: (connectIPS, {description, event, needsPaymentConfirmation, statusCode}) {
      print('Description: $description, Status Code: $statusCode');
      connectIPS.close(context);
    },
    onPaymentResult: (paymentResult, connectIps) {
      print('Result: $paymentResult');
      connectIps.close(context);
    },
    onReturn: ([payment]) {
      print('Redirection after payment: $payment');
    },
  );
}

void initiatePayment() {
  connectIps.open(context);
}

交易验证

使用 NCHL 提供的用户名和密码通过基本认证进行交易验证:

final vConfig = VerificationConfig(
  username: '<username>',
  password: '<password>',
);

将此添加到你的支付按钮或自定义实例中以进行交易验证。

贡献

欢迎贡献! 如果你发现任何问题或希望改进这个项目,请随时报告问题或提交拉取请求。


更多关于Flutter网络连接插件connect_ips_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter网络连接插件connect_ips_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


connect_ips_flutter 是一个用于处理网络连接的 Flutter 插件,它可以帮助开发者管理和监控设备的网络连接状态。以下是如何使用 connect_ips_flutter 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  connect_ips_flutter: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入插件

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

import 'package:connect_ips_flutter/connect_ips_flutter.dart';

3. 初始化插件

在使用插件之前,建议先进行初始化:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await ConnectIpsFlutter.initialize();
  runApp(MyApp());
}

4. 检查网络连接状态

你可以使用 ConnectIpsFlutter 来检查设备的网络连接状态:

bool isConnected = await ConnectIpsFlutter.checkConnectivity();
print('Is connected: $isConnected');

5. 监听网络状态变化

你还可以监听网络状态的变化,以便在连接状态发生变化时执行某些操作:

ConnectIpsFlutter.onConnectivityChanged.listen((bool isConnected) {
  print('Network connectivity changed: $isConnected');
});

6. 获取网络类型

你可以获取当前连接的网络类型(如 WiFi、移动数据等):

String networkType = await ConnectIpsFlutter.getNetworkType();
print('Network type: $networkType');

7. 其他功能

connect_ips_flutter 可能还提供了其他功能,例如获取 IP 地址、检查网络速度等。你可以查阅插件的文档以获取更多详细信息。

示例代码

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

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await ConnectIpsFlutter.initialize();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('ConnectIpsFlutter Example'),
        ),
        body: Center(
          child: ConnectivityStatus(),
        ),
      ),
    );
  }
}

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

class _ConnectivityStatusState extends State<ConnectivityStatus> {
  bool isConnected = false;
  String networkType = 'Unknown';

  [@override](/user/override)
  void initState() {
    super.initState();
    _checkConnectivity();
    _listenToConnectivityChanges();
  }

  Future<void> _checkConnectivity() async {
    bool connected = await ConnectIpsFlutter.checkConnectivity();
    String type = await ConnectIpsFlutter.getNetworkType();
    setState(() {
      isConnected = connected;
      networkType = type;
    });
  }

  void _listenToConnectivityChanges() {
    ConnectIpsFlutter.onConnectivityChanged.listen((bool connected) {
      setState(() {
        isConnected = connected;
      });
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Text('Is connected: $isConnected'),
        Text('Network type: $networkType'),
      ],
    );
  }
}
回到顶部