Flutter支付码生成与处理插件fps_payment_code的使用
Flutter支付码生成与处理插件fps_payment_code的使用
插件简介
fps_payment_code
是一个用于生成 FPS 支付码的 Flutter 插件。它支持多种平台,并且可以灵活地生成基于手机号、ID 或电子邮件的支付码。
平台支持
Android | iOS | MacOS | Web | Linux | Windows |
---|---|---|---|---|---|
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
使用要求
- Flutter >=3.0.1
- Dart >=2.18.0 <4.0.0
- iOS >=12.0
- MacOS >=10.14
- Android
compileSDK
34 - Java 17
- Android Gradle Plugin >=8.3.0
- Gradle wrapper >=8.4
使用方法
导入插件
在项目中添加依赖:
dependencies:
fps_payment_code: ^版本号
然后导入插件:
import 'package:fps_payment_code/fps_payment_code.dart';
初始化生成器
实例化 FPSCodeGenerator
:
FPSCodeGenerator generator = FPSCodeGenerator();
生成支付码
示例 1: 使用 ID 生成支付码
var paymentCode = generator.generate(
fpsType: FpsType.id, // 支付标识类型为 ID
fpsId: '1234567', // 支付标识(ID)
currency: 'HKD', // 货币代码
amount: '100', // 交易金额
merchantName: 'Your Merchant Name', // 商户名称
additionalData: FPSCodeAdditionalData( // 可选附加数据
billNumber: '12345', // 账单编号
mobileNumber: '98765432', // 手机号码
),
);
print(paymentCode); // 输出生成的支付码
示例 2: 使用手机号生成支付码
var paymentCode = generator.generate(
fpsType: FpsType.phoneNumber, // 支付标识类型为手机号
phoneNumber: '+852-92570683', // 用户手机号
currency: 'HKD', // 货币代码
amount: '100.00', // 交易金额
);
print(paymentCode); // 输出生成的支付码
参数说明
FPSCodeGenerator
- fpsType: 支付标识类型(手机号、ID 或电子邮件)。
- fpsId: 如果
fpsType
是 ID,则为支付标识。 - phoneNumber: 如果
fpsType
是手机号,则为用户手机号。 - email: 如果
fpsType
是电子邮件,则为用户邮箱地址。 - currency: 货币代码(例如 HKD)。
- amount: 交易金额。
- merchantName: 商户名称。
- additionalData: 可选的交易附加数据。
FPSCodeAdditionalData
- billNumber: 账单编号,最多 25 个字符。
- mobileNumber: 手机号码,最多 25 个字符。
- storeLabel: 商店标签,最多 25 个字符。
- loyaltyNumber: 忠诚度编号,最多 25 个字符。
- referenceLabel: 引用标签,最多 25 个字符。
- customerLabel: 客户标签,最多 25 个字符。
- terminalLabel: 终端标签,最多 25 个字符。
- purposeOfTransaction: 交易目的,最多 25 个字符。
- additionalConsumerDataRequest: 消费者额外数据请求,最多 25 个字符。
支持的功能
交易类型
- 支持三种支付标识类型:手机号、ID 和电子邮件,用户可以根据需求选择适合的方式接收付款。
货币支持
- 提供全面的货币代码列表(基于 ISO 4217),确保用户可以指定正确的交易货币。
商户信息
- 包括国家、城市和商户名称等详细信息。
额外数据处理
FPSCodeAdditionalData
类允许用户添加可选字段,如账单编号、商店标签等,同时确保某些字段(如账单编号和引用标签)不能同时存在。
验证检查
- 基于 ISO/IEC 13239 的 CRC 校验(多项式为 ‘1021’,初始值为 ‘FFFF’),确保生成的支付码格式正确且无误。
示例代码
以下是完整的示例代码:
import 'package:flutter/material.dart';
import 'package:fps_payment_code/fps_payment_code.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('FPS Payment Code Example')),
body: Center(
child: ElevatedButton(
onPressed: () async {
FPSCodeGenerator generator = FPSCodeGenerator();
var paymentCode = generator.generate(
fpsType: FpsType.phoneNumber,
phoneNumber: '+852-92570683',
currency: 'HKD',
amount: '100.00',
);
print('Generated Payment Code: $paymentCode');
},
child: Text('Generate Payment Code'),
),
),
),
);
}
}
更多关于Flutter支付码生成与处理插件fps_payment_code的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter支付码生成与处理插件fps_payment_code的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
fps_payment_code
是一个用于生成和处理支付码的 Flutter 插件,通常用于生成二维码或条形码,以便用户可以通过扫描这些码进行支付。以下是如何使用 fps_payment_code
插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 fps_payment_code
插件的依赖:
dependencies:
flutter:
sdk: flutter
fps_payment_code: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 fps_payment_code
插件:
import 'package:fps_payment_code/fps_payment_code.dart';
3. 生成支付码
使用 FpsPaymentCode
类来生成支付码。以下是一个简单的示例,展示如何生成一个二维码:
class PaymentCodeScreen extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('支付码生成'),
),
body: Center(
child: FpsPaymentCode(
data: 'https://example.com/payment', // 支付链接或数据
size: 200.0, // 二维码大小
format: FpsPaymentCodeFormat.qrCode, // 生成二维码
errorCorrectionLevel: FpsPaymentCodeErrorCorrectionLevel.high, // 纠错级别
),
),
);
}
}
4. 处理支付码
你可以使用 FpsPaymentCode
插件来处理支付码,例如扫描二维码并获取其中的数据。以下是一个简单的示例:
class ScanPaymentCodeScreen extends StatelessWidget {
Future<void> _scanPaymentCode(BuildContext context) async {
try {
String result = await FpsPaymentCode.scan();
// 处理扫描结果
print('扫描结果: $result');
} catch (e) {
print('扫描失败: $e');
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('扫描支付码'),
),
body: Center(
child: ElevatedButton(
onPressed: () => _scanPaymentCode(context),
child: Text('扫描支付码'),
),
),
);
}
}