Flutter发票生成与管理插件invoice_su的使用

Flutter发票生成与管理插件invoice_su的使用

插件简介

Invoice su Acquiring SDK 允许你将 Invoice su Acquiring 集成到iOS、Android、Web、Windows、Linux、MacOS平台的应用程序中。

可用API文档

SDK 功能

  • 发起支付(包括定期支付);
  • 创建终端(包括定期支付);
  • 与在线结账集成;
  • 通过快速支付系统(SBP)通过二维码进行支付;

安装

在你的包的 pubspec.yaml 文件中添加以下内容:

dependencies:
  invoice_su: ^1.0.1

然后运行 flutter pub get 命令以安装该依赖项。

使用前准备

要开始使用SDK,你需要以下信息:

  • 登录名 - 卖家账户登录名;
  • API密钥 - 用于操作的账户API密钥;
  • 终端ID - 开始发起支付时需要选择一个。

这些值会在连接到 Invoice su Acquiring 后在个人账户中提供。

配置凭证

为了配置操作模式,设置以下参数:

final InvoiceAcquiring acquiringInstance = InvoiceAcquiring(
  InvoiceAcquiringConfig.credential(
    login: demoLogin, 
    apiKey: apiDemoKey
  )
);

示例代码

示例代码可以在相应的文件夹中找到。

示例代码:main.dart

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

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

// 登录名和API密钥
const String demoLogin = 'demo';
const String apiDemoKey = '1526fec01b5d11f4df4f2160627ce351';
const String apiDemoMerchantId = 'c24360cfac0a0c40c518405f6bc68cb0';

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // 应用程序根组件
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Invoice Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  // 初始化SDK实例
  final InvoiceAcquiring acquiringInstance = InvoiceAcquiring(
    InvoiceAcquiringConfig.credential(
      login: demoLogin, 
      apiKey: apiDemoKey
    )
  );

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.spaceEvenly,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            // 获取终端信息按钮
            TextButton(
              onPressed: () => acquiringInstance.getTerminal(
                TerminalInfoRequest(id: 'testID')
              ),
              child: const Text('获取终端信息'),
            ),
            // 创建支付按钮
            TextButton(
              onPressed: () => acquiringInstance.createPayment(
                CreatePaymentRequest(
                  order: InvoiceOrder(amount: 100),
                  settings: PaymentSettings(terminalId: 'testID')
                )
              ),
              child: const Text('创建支付'),
            )
          ],
        ),
      ),
    );
  }
}

更多关于Flutter发票生成与管理插件invoice_su的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter发票生成与管理插件invoice_su的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


invoice_su 是一个用于在 Flutter 应用中生成和管理发票的插件。它可以帮助你轻松地创建、管理和导出发票。以下是如何使用 invoice_su 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  invoice_su: ^1.0.0  # 请检查最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入插件

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

import 'package:invoice_su/invoice_su.dart';

3. 创建发票

使用 Invoice 类来创建发票。你可以设置发票的基本信息,如发票编号、日期、客户信息、商品明细等。

Invoice invoice = Invoice(
  invoiceNumber: 'INV-001',
  invoiceDate: DateTime.now(),
  customer: Customer(
    name: 'John Doe',
    address: '123 Main St, City, Country',
  ),
  items: [
    InvoiceItem(
      description: 'Product 1',
      quantity: 2,
      unitPrice: 50.0,
    ),
    InvoiceItem(
      description: 'Product 2',
      quantity: 1,
      unitPrice: 100.0,
    ),
  ],
  taxRate: 0.1, // 10% tax
);

4. 生成 PDF

使用 InvoicePdf 类将发票生成 PDF 文件:

InvoicePdf pdf = InvoicePdf(invoice);
pdf.save('invoice.pdf'); // 保存为 PDF 文件

5. 管理发票

你可以将生成的发票保存到本地或上传到服务器。你也可以创建一个列表来管理多个发票。

List<Invoice> invoices = [];
invoices.add(invoice);

// 保存发票到本地
void saveInvoice(Invoice invoice) {
  // 保存逻辑
}

// 加载发票
void loadInvoice(String invoiceNumber) {
  // 加载逻辑
}

6. 导出和分享

你可以使用 pdf.save() 方法将发票保存为 PDF 文件,并使用 share_plus 插件来分享发票。

import 'package:share_plus/share_plus.dart';

void shareInvoice(String filePath) {
  Share.shareFiles([filePath]);
}

7. 自定义发票样式

你可以通过继承 InvoicePdf 类来自定义发票的样式和布局。

class CustomInvoicePdf extends InvoicePdf {
  CustomInvoicePdf(Invoice invoice) : super(invoice);

  [@override](/user/override)
  void buildPdf() {
    // 自定义 PDF 布局
  }
}

8. 示例代码

以下是一个完整的示例代码:

import 'package:flutter/material.dart';
import 'package:invoice_su/invoice_su.dart';
import 'package:share_plus/share_plus.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: InvoiceScreen(),
    );
  }
}

class InvoiceScreen extends StatelessWidget {
  final Invoice invoice = Invoice(
    invoiceNumber: 'INV-001',
    invoiceDate: DateTime.now(),
    customer: Customer(
      name: 'John Doe',
      address: '123 Main St, City, Country',
    ),
    items: [
      InvoiceItem(
        description: 'Product 1',
        quantity: 2,
        unitPrice: 50.0,
      ),
      InvoiceItem(
        description: 'Product 2',
        quantity: 1,
        unitPrice: 100.0,
      ),
    ],
    taxRate: 0.1,
  );

  void generateAndShareInvoice() async {
    InvoicePdf pdf = InvoicePdf(invoice);
    String filePath = await pdf.save('invoice.pdf');
    Share.shareFiles([filePath]);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Invoice Generator'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: generateAndShareInvoice,
          child: Text('Generate and Share Invoice'),
        ),
      ),
    );
  }
}
回到顶部