Flutter未知功能插件khqr_sdk的使用

发布于 1周前 作者 htzhanglong 来自 Flutter

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

  1. 添加源到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将自动生成。
  2. 运行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

1 回复

更多关于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上搜索该插件,或者联系插件的开发者获取更多信息。

回到顶部