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
更多关于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'),
],
);
}
}