Flutter二维码生成与解析插件lailao_bcel_qr的使用

Flutter二维码生成与解析插件lailao_bcel_qr的使用

Lailaolab BCEL QR 是一个专门为开发者设计的插件,用于通过二维码连接银行进行支付。它允许商家生成和解析 ONEPAY QR Code。

所需条件

在使用此插件之前,您需要获得由银行提供的 merchantID 授权。

安装方式

在您的 pubspec.yaml 文件中添加以下依赖项:

dependencies:
  lailao_bcel_qr: ^0.0.1

或者通过终端命令安装:

flutter add lailao_bcel_qr

开始使用

首先,在需要使用的文件中导入插件:

import 'package:lailao_bcel_qr/lailao_bcel_qr.dart';

接下来,您可以使用以下代码来展示 ONEPAY QR Code:

LailaoBcelQr(
    mcid: "XXXXXXXXXXX",
    amount: 1,
    invoiceId: 'iv123',
    terminalId: 'ti123',
    transactionId: 'tr123',
)

属性说明

属性名 类型 描述
mcid String 商家 ID,从银行获取授权。
amount num 二维码中表示的金额。
invoiceId String 发票 ID,可以自定义。
terminalId String 终端 ID,可以自定义。
transactionId String 交易 ID,可以自定义。

使用示例

您可以在示例项目的 example/lib/main.dart 文件中查看完整的代码。以下是一个简单的示例代码,用于生成并展示二维码字符串和二维码图像:

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

import 'package:flutter/services.dart';
import 'package:lailao_bcel_qr/lailao_bcel_qr.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _qrCodeString = ''; // 用于存储生成的二维码字符串

  [@override](/user/override)
  void initState() {
    super.initState();
    initQR(); // 初始化二维码生成
  }

  Future<void> initQR() async {
    String qrCodeString;
    try {
      // 生成二维码字符串
      qrCodeString = LailaoBcelQr.bcelQr(
        "XXXXXXXXXXX", // 商家 ID
        "transactionId123", // 交易 ID
        "terminalId123", // 终端 ID
        1, // 金额
        "invoiceId123", // 发票 ID
      );
    } on PlatformException {
      qrCodeString = 'Failed to generate QR code.';
    }

    // 更新状态以显示生成的二维码字符串
    setState(() {
      _qrCodeString = qrCodeString;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('lailao_bcel_qr 插件示例'),
        ),
        body: Column(
          children: [
            // 显示二维码图像
            const LailaoBcelQr(
              mcid: "XXXXXXXXXXX",
              amount: 1,
              invoiceId: 'iv123',
              terminalId: 'ti123',
              transactionId: 'tr123',
            ),
            // 显示生成的二维码字符串
            Center(
              child: Text('ONEPAY CODE: $_qrCodeString\n'),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter二维码生成与解析插件lailao_bcel_qr的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter二维码生成与解析插件lailao_bcel_qr的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


lailao_bcel_qr 是一个用于 Flutter 的二维码生成与解析的插件。它可以帮助你在 Flutter 应用中轻松生成二维码,并解析二维码中的信息。以下是使用 lailao_bcel_qr 插件的基本步骤:

1. 添加依赖

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

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

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

2. 导入插件

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

import 'package:lailao_bcel_qr/lailao_bcel_qr.dart';

3. 生成二维码

使用 LailaoBcelQr 类来生成二维码。你可以将生成的二维码显示在 Image 组件中。

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

class QRCodeGenerator extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('QR Code Generator'),
      ),
      body: Center(
        child: FutureBuilder<Uint8List>(
          future: LailaoBcelQr.generateQRCode('Hello, World!'),
          builder: (context, snapshot) {
            if (snapshot.connectionState == ConnectionState.waiting) {
              return CircularProgressIndicator();
            } else if (snapshot.hasError) {
              return Text('Error: ${snapshot.error}');
            } else {
              return Image.memory(snapshot.data!);
            }
          },
        ),
      ),
    );
  }
}

4. 解析二维码

使用 LailaoBcelQr 类来解析二维码。你可以从图像中提取二维码信息。

import 'package:flutter/material.dart';
import 'package:lailao_bcel_qr/lailao_bcel_qr.dart';
import 'package:image_picker/image_picker.dart';

class QRCodeScanner extends StatelessWidget {
  final ImagePicker _picker = ImagePicker();

  Future<void> _scanQRCode(BuildContext context) async {
    final XFile? image = await _picker.pickImage(source: ImageSource.gallery);
    if (image != null) {
      final Uint8List imageBytes = await image.readAsBytes();
      final String? qrCodeResult = await LailaoBcelQr.decodeQRCode(imageBytes);
      if (qrCodeResult != null) {
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(content: Text('QR Code Result: $qrCodeResult')),
        );
      } else {
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(content: Text('No QR Code found')),
        );
      }
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('QR Code Scanner'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () => _scanQRCode(context),
          child: Text('Scan QR Code from Gallery'),
        ),
      ),
    );
  }
}
回到顶部