Flutter未知功能插件khqr_sdk的使用
Flutter未知功能插件khqr_sdk的使用
简介
🍃 KHQR SDK 🍃
KHQR SDK 是一个用于处理柬埔寨国家银行(NBC)提供的支付二维码标准(KHQR)的Flutter插件。它允许开发者生成和验证KHQR码,以及创建深度链接和展示KHQR卡片组件。
注意: 此插件并非由NBC官方发布,而是一个连接Dart代码与原生平台特定SDK的简单接口层,以无缝桥接Flutter和原生功能。
支持的平台
- ✅ iOS
- ✅ Android
特性支持
特性 | Android | iOS |
---|---|---|
Generate Individual | ✔ | ✔ |
Generate Merchant | ✔ | ✔ |
Generate Deeplink | ✔ | ✔ |
Verify | ✔ | ✔ |
Decode | ✔ | ✔ |
KHQR Card Widget | ✔ | ✔ |
平台特定设置
iOS
- 添加源到Podfile (ios/Podfile)
注意: 如果您没有看到source "https://sambo:ycfXmxxRbyzEmozY9z6n@gitlab.nbc.gov.kh/khqr/khqr-ios-pod.git"
Podfile
,请在pubspec.yaml
中禁用Swift Package Manager。
保存后,flutter: disable-swift-package-manager: true
Podfile
将自动生成。 - 运行pod install(确保您的终端在ios文件夹中)
pod install
Android
无需任何操作,开箱即用。
使用方法
创建KHQR SDK实例
import 'package:khqr_sdk/khqr_sdk.dart';
final _khqrSdk = KhqrSdk();
生成个人KHQR码
final info = IndividualInfo(
bakongAccountId: 'kimhak@dev',
merchantName: 'Kimhak',
accountInformation: '123456789',
);
final khqrData = await _khqrSdk.generateIndividual(info);
生成商户KHQR码
final info = MerchantInfo(
bakongAccountId: 'kimhak@dev',
acquiringBank: 'Dev Bank',
merchantId: '123456',
merchantName: 'Kimhak',
);
final khqrData = await _khqrSdk.generateMerchant(info);
验证KHQR码
const qrCode = '00020101021129270010kimhak@dev01091234567895204599953031165802KH5906Kimhak6010Phnom Penh9917001317324625358296304B59E';
final isValid = await _khqrSdk.verify(qrCode);
解析KHQR码
const qrCode = '00020101021129270010kimhak@dev01091234567895204599953031165802KH5906Kimhak6010Phnom Penh9917001317324625358296304B59E';
final khqrDecodeData = await _khqrSdk.decode(qrCode);
生成KHQR深度链接
const qrCode = '00020101021129270010kimhak@dev01091234567895204599953031165802KH5906Kimhak6010Phnom Penh9917001317324625358296304B59E';
final sourceInfo = SourceInfo(
appName: 'Example App',
appIconUrl: 'http://cdn.example.com/icons.logo.png',
appDeepLinkCallBack: 'http://app.example.com/callback',
);
final deeplinkInfo = DeeplinkInfo(
qr: qrCode,
url: 'http://api.example.com/v1/generate_deeplink_by_qr',
sourceInfo: sourceInfo,
);
final deeplinkData = await _khqrSdk.generateDeepLink(deeplinkInfo);
显示KHQR卡片组件
KhqrCardWidget(
width: 300.0,
receiverName: 'Kimhak',
amount: 0.00,
keepIntegerDecimal: false,
currency: KhqrCurrency.khr,
qr: khqrContent,
),
示例项目
以下是完整的示例项目代码,展示了如何在Flutter应用中使用khqr_sdk
:
import 'package:flutter/material.dart';
import 'package:khqr_sdk/khqr_sdk.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'KHQR SDK Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
final _khqrSdk = KhqrSdk();
String _result = '';
Future<void> _generateIndividual() async {
try {
final info = IndividualInfo(
bakongAccountId: 'kimhak@dev',
merchantName: 'Kimhak',
accountInformation: '123456789',
);
final khqrData = await _khqrSdk.generateIndividual(info);
setState(() {
_result = 'Generated Individual QR: $khqrData';
});
} catch (e) {
setState(() {
_result = 'Error: $e';
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('KHQR SDK Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: _generateIndividual,
child: Text('Generate Individual QR'),
),
SizedBox(height: 20),
Text(_result),
],
),
),
);
}
}
此示例项目展示了如何生成个人KHQR码,并在界面上显示结果。您可以根据需要扩展此示例,添加其他功能如生成商户KHQR码、验证和解析KHQR码等。
Bug或请求
如果您遇到任何问题,请自由地在GitHub上提交issue。如果您觉得库缺少某些特性,请提交feature request。
支持
不要忘记给这个项目点赞👍 或加星⭐。
希望这些信息能帮助您更好地理解和使用khqr_sdk
插件!
更多关于Flutter未知功能插件khqr_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter未知功能插件khqr_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,针对Flutter中的未知功能插件khqr_sdk
,由于我无法直接访问该插件的具体实现细节和文档(因为这取决于插件的开发者和其发布在pub.dev或其他平台上的内容),我将提供一个通用的Flutter插件使用示例框架。这个框架可以帮助你理解如何集成和使用一个Flutter插件,尽管具体的API调用和功能实现需要参考khqr_sdk
的官方文档。
首先,假设khqr_sdk
已经发布在pub.dev上,你可以按照以下步骤进行集成和使用:
1. 添加依赖
在你的pubspec.yaml
文件中添加khqr_sdk
作为依赖:
dependencies:
flutter:
sdk: flutter
khqr_sdk: ^最新版本号 # 替换为实际的最新版本号
然后运行flutter pub get
来获取依赖。
2. 导入插件
在你需要使用khqr_sdk
功能的Dart文件中导入插件:
import 'package:khqr_sdk/khqr_sdk.dart';
3. 初始化插件(如果需要)
某些插件可能需要在应用启动时进行初始化。这通常会在main.dart
中的MyApp
类的构造函数或initState
方法中进行:
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// 插件初始化(如果需要)
// KhqrSdk.initialize(); // 假设插件有一个initialize方法
return MaterialApp(
home: MyHomePage(),
);
}
}
4. 使用插件功能
假设khqr_sdk
提供了一个名为performAction
的方法,你可以这样调用它:
import 'package:flutter/material.dart';
import 'package:khqr_sdk/khqr_sdk.dart';
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String result = '';
void _performSdkAction() async {
try {
// 假设performAction是插件提供的一个异步方法
var response = await KhqrSdk.performAction(parameters: {/* 参数 */});
setState(() {
result = 'Action successful: ${response.data}';
});
} catch (e) {
setState(() {
result = 'Action failed: ${e.message}';
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('khqr_sdk Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(result),
SizedBox(height: 20),
ElevatedButton(
onPressed: _performSdkAction,
child: Text('Perform SDK Action'),
),
],
),
),
);
}
}
注意
- 上述代码是一个假设性的示例,具体API调用、参数和返回值需要根据
khqr_sdk
的实际文档进行调整。 - 如果
khqr_sdk
需要Android或iOS特定的配置(如权限、原生代码集成等),请务必参考其官方文档进行相应的设置。 - 由于
khqr_sdk
是一个未知插件,我无法保证上述代码框架与插件的实际功能完全匹配。因此,强烈建议查阅插件的官方文档和示例代码。
如果你没有khqr_sdk
的官方文档,可以尝试在pub.dev上搜索该插件,或者联系插件的开发者获取更多信息。