Flutter生成NFE密钥插件generate_key_nfe的使用

Flutter生成NFE密钥插件generate_key_nfe的使用

什么是NFE的访问密钥?

NFE(Nota Fiscal Eletrônica)的访问密钥是一个唯一的数字序列,用于识别电子发票。因此,虽然在.XML文件和辅助文档(Danfe)中可能会有相同的票据编号,但绝不会存在两个相同的访问密钥。它是用来区分不同NFE的关键。

这一机制旨在为商业交易记录提供更高的安全性和效率。实际上,它就像票据的身份证,确保了文档的真实身份,避免混淆,并简化了整理和归档过程。

NFE访问密钥的构成

NFE访问密钥由44位数字组成,这些数字代表了许多识别票据和公司的数据。

尽管看起来复杂,但实际上非常简单。对于不熟悉这种系统的人来说,可能一开始会觉得有点难,但习惯后你会发现这其实是有逻辑的。每个数字都有其特定的信息,可以按组分块进行验证。

NFE访问密钥的组成部分如下:

  • cUF: 公司所在州的代码(2位数字)。
  • AAMM: 发票发行年份和月份(4位数字)。
  • CNPJ: 开票公司CNPJ号码(14位数字)。
  • mod: 发票模型代码(2位数字)。
  • serie: 发票系列号(3位数字)。
  • nNF: 电子发票编号(9位数字)。
  • tpEmis: 发票类型(1位数字)。
  • cNF: 密钥的数值代码(8位数字)。
  • cDV: 访问密钥的校验码(1位数字)。

使用Flutter生成NFE密钥插件generate_key_nfe

1. 添加依赖

首先,在pubspec.yaml文件中添加generate_key_nfe插件依赖:

dependencies:
  generate_key_nfe: ^1.0.0

然后运行以下命令以更新依赖:

flutter pub get
2. 创建一个简单的Flutter应用

下面是一个完整的示例代码,展示如何使用generate_key_nfe插件生成NFE密钥。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('生成NFE密钥示例'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              // 初始化插件参数
              final cUF = '35'; // SP州代码
              final AAMM = '2305'; // 2023年5月
              final CNPJ = '12345678901234'; // 示例CNPJ
              final mod = '55'; // NFE模型代码
              final serie = '1'; // 系列号
              final nNF = '123456789'; // 发票编号
              final tpEmis = '1'; // 发票类型
              final cNF = '12345678'; // 数值代码
              final cDV = '9'; // 校验码

              // 调用插件生成密钥
              final key = await GenerateKeyNFE.generateKey(
                cUF: cUF,
                AAMM: AAMM,
                CNPJ: CNPJ,
                mod: mod,
                serie: serie,
                nNF: nNF,
                tpEmis: tpEmis,
                cNF: cNF,
                cDV: cDV,
              );

              // 显示结果
              showDialog(
                context: context,
                builder: (BuildContext context) {
                  return AlertDialog(
                    title: Text('生成的NFE密钥'),
                    content: Text(key),
                    actions: <Widget>[
                      TextButton(
                        child: Text('关闭'),
                        onPressed: () {
                          Navigator.of(context).pop();
                        },
                      ),
                    ],
                  );
                },
              );
            },
            child: Text('生成NFE密钥'),
          ),
        ),
      ),
    );
  }
}
3. 运行应用

当你点击按钮时,插件将根据输入的参数生成NFE访问密钥,并通过弹窗显示结果。

示例运行效果

以下是生成的NFE访问密钥的示例输出:


更多关于Flutter生成NFE密钥插件generate_key_nfe的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter生成NFE密钥插件generate_key_nfe的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中生成 NFE(Nota Fiscal Eletrônica,电子发票)密钥通常需要使用特定的插件或库。generate_key_nfe 插件是一个假设的插件,用于生成符合巴西电子发票标准的密钥。以下是如何在 Flutter 项目中使用 generate_key_nfe 插件的步骤:

1. 添加依赖

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

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

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

2. 导入插件

在你的 Dart 文件中导入 generate_key_nfe 插件。

import 'package:generate_key_nfe/generate_key_nfe.dart';

3. 生成 NFE 密钥

使用 generate_key_nfe 插件生成 NFE 密钥。通常,生成密钥需要一些参数,如 CNPJ(公司注册号)、发票号码、日期等。

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 示例参数
  String cnpj = "12345678000195";
  String invoiceNumber = "12345";
  String date = "20231001";
  String uf = "SP";
  String model = "55";
  String serie = "1";
  String typeOfEmission = "1";
  String codeNumber = "12345678";

  // 生成密钥
  String nfeKey = await GenerateKeyNfe.generateKey(
    cnpj: cnpj,
    invoiceNumber: invoiceNumber,
    date: date,
    uf: uf,
    model: model,
    serie: serie,
    typeOfEmission: typeOfEmission,
    codeNumber: codeNumber,
  );

  print("生成的NFE密钥: $nfeKey");
}

4. 处理生成的密钥

生成的 NFE 密钥可以用于生成电子发票或其他相关操作。你可以将密钥存储在数据库中,或者直接用于生成发票。

5. 错误处理

在实际使用中,可能会遇到各种错误,如无效的参数或网络问题。确保在生成密钥时进行适当的错误处理。

try {
  String nfeKey = await GenerateKeyNfe.generateKey(
    cnpj: cnpj,
    invoiceNumber: invoiceNumber,
    date: date,
    uf: uf,
    model: model,
    serie: serie,
    typeOfEmission: typeOfEmission,
    codeNumber: codeNumber,
  );
  print("生成的NFE密钥: $nfeKey");
} catch (e) {
  print("生成密钥时出错: $e");
}
回到顶部