Flutter网络管理插件gerencia_net_plus的使用

Flutter网络管理插件gerencia_net_plus的使用

特性

  • 创建、更新和列出您的Pix收费(带或不带额外到期费用)。
  • 列出Pix交易。
  • 创建QRCode、Pix复制粘贴和查看QRCode的链接。

待办事项

  • Webhook功能

开始使用

在您的pubspec.yaml文件中添加gerencia_net_plus作为依赖项。

dependencies:
  gerencia_net_plus: ^版本号

如何获取Client_Id和Client_Secret凭证

创建一个新的应用程序以使用Gerencianet API

  1. 访问Gerencianet仪表板并导航到API部分。
  2. 在左侧点击我的应用(Minhas Aplicações),然后点击新建应用(Nova Aplicação)
  3. 输入应用名称,启用支付API(Boletos e Carnês)Pix API,并根据需要选择授权范围(记住这些可以在后期更改)。
  4. 点击创建新应用(Criar Nova aplicação)

创建一个新应用以使用Gerencianet API

修改现有的应用程序以使用Gerencianet API

  1. 访问Gerencianet仪表板并导航到API部分。
  2. 在左侧点击我的应用(Minhas Aplicações),选择您的应用,然后点击**编辑(Editar)**按钮(橙色按钮)。
  3. 启用Pix API,并根据需要选择授权范围(记住这些可以在后期更改)。
  4. 点击更新应用(Atualizar Aplicação)

修改现有应用以使用Pix API

如何生成一个Pix证书

所有Pix请求必须包含由Gerencianet在您的账户内提供的安全证书,格式为PFX(.p12)。此要求在PIX安全手册中进行了详细描述。

生成证书

  1. 访问Gerencianet仪表板并导航到API部分。
  2. 在左侧点击我的证书(Meus Certificados),选择您想要的环境:生产(Produção)测试(Homologação)
  3. 点击新建证书(Novo Certificado)

生成您的证书

如何转换一个Pix证书

⚠️要在Flutter中使用它,证书必须转换为.pem格式,并且需要为证书创建私钥。

您可以下载Gerencianet提供的证书转换器。

或者使用以下命令进行转换:

# 生成单独的证书和密钥
openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys # 证书
openssl pkcs12 -in path.p12 -out newfile.key.pem -nocerts -nodes # 私钥

将证书和私钥添加到项目中

在项目的根目录下创建一个名为certificates的新文件夹,并将新创建的证书和私钥放入其中。

├── certificates
│   ├── private_key.pem
│   ├── certificate.pem
├── lib
│   ├── src
│   └── main.dart
├── .gitignore
├── analysis_options.yaml
└── pubspec.yaml

如果你正在使用Flutter

如果你正在使用Flutter库,还需要在pubspec.yaml文件中将certificates文件夹添加到资产配置中。

flutter:
  assets:
    - certificates/

如何注册Pix密钥

Pix密钥的注册可以通过Gerencianet移动应用程序或通过API端点完成。以下是注册步骤。

通过移动应用程序注册Pix密钥

如果您还没有安装我们的应用程序,请点击以下链接下载:

要通过应用程序注册您的Pix密钥:

  1. 通过Gerencianet应用访问您的账户。
  2. 在侧边菜单中,点击Pix以开始注册。
  3. 阅读屏幕上的信息并点击注册密钥(Registrar Chave)。 如果这不是您的第一次注册,点击我的密钥(Minhas Chaves),然后点击图标(➕)。
  4. 选择您希望注册为Pix密钥的数据,并点击下一步(Avançar) - 您必须至少选择4个可用选项之一(电话号码、电子邮件、CPF和/或随机密钥)。
  5. 注册完所需的Pix密钥后,点击完成(Concluir)
  6. 完成!您的密钥现在已注册。

使用方法

import 'package:gerencia_net_plus/gerencia_net_plus.dart';

final certificateBytes = File('certificates/my_application_certificate.crt.pem').readAsBytesSync();
final privateKeyBytes = File('certificates/my_application_private_key.key.pem').readAsBytesSync();

final gerenciaNetPlus = GerenciaNetPlus(
    credentials: GerenciaNetCredentials(
      clientId: 'Client_Id',
      clientSecret: 'Client_Secret',
      certificateBytes: certificateBytes,
      privateKeyBytes: privateKeyBytes,
      pixKey: 'pixKey',
      sandbox: true,
    ),
  );

final newCharge = await gerenciaNetPlus.pix.immediateCharge.createCharge(value: 100);

示例

您可以点击这里查看所有可用的示例。

// 忽略未使用的局部变量

import 'dart:io';

import 'package:gerencia_net_plus/gerencia_net_plus.dart';
import 'package:gerencia_net_plus/src/pix/models/additional_info.dart';

Future<void> main(List<String> args) async {
  final certificateBytes =
      File('certificates/certificate.crt.pem').readAsBytesSync();

  final privateKeyBytes =
      File('certificates/private_key.key.pem').readAsBytesSync();

  final gerenciaNetPlus = GerenciaNetPlus(
    credentials: GerenciaNetCredentials(
      clientId: 'Client_Id',
      clientSecret: 'Client_Secret',
      certificateBytes: certificateBytes,
      privateKeyBytes: privateKeyBytes,
      pixKey: 'pixKey',
    ),
  );

  final newCharge = await gerenciaNetPlus.pix.immediateCharge.createCharge(
    value: 100,
    additionalInfo: const [
      AdditionalInfo(
        name: 'Local de Venda',
        value: 'Rua ABCD, Nº 20',
      )
    ],
  );

  final recievedPix = await gerenciaNetPlus.pix.transactions.listRecievedPix(
    start: DateTime(2023),
    end: DateTime(2024),
    cpf: '12345678909',
  );
}

更多关于Flutter网络管理插件gerencia_net_plus的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter网络管理插件gerencia_net_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中使用gerencia_net_plus插件的示例代码。gerencia_net_plus是一个用于网络管理的Flutter插件,可以检查网络连接状态、获取Wi-Fi信息以及管理网络连接等。

首先,确保你已经在pubspec.yaml文件中添加了gerencia_net_plus依赖:

dependencies:
  flutter:
    sdk: flutter
  gerencia_net_plus: ^最新版本号  # 请替换为实际最新版本号

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

接下来,是如何在你的Flutter项目中使用gerencia_net_plus的示例代码:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: NetworkManagerPage(),
    );
  }
}

class NetworkManagerPage extends StatefulWidget {
  @override
  _NetworkManagerPageState createState() => _NetworkManagerPageState();
}

class _NetworkManagerPageState extends State<NetworkManagerPage> {
  String networkStatus = "Checking...";
  List<WifiInfo> wifiList = [];

  @override
  void initState() {
    super.initState();
    checkNetworkStatus();
    getWifiList();
  }

  void checkNetworkStatus() async {
    bool isConnected = await GerenciaNetPlus.isConnected();
    setState(() {
      networkStatus = isConnected ? "Connected" : "Not Connected";
    });
  }

  void getWifiList() async {
    try {
      wifiList = await GerenciaNetPlus.getWifiList();
      setState(() {});
    } catch (e) {
      print("Error getting WiFi list: $e");
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Network Manager"),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text("Network Status: $networkStatus"),
            SizedBox(height: 16),
            Text("Available WiFi Networks:"),
            SizedBox(height: 8),
            Expanded(
              child: ListView.builder(
                itemCount: wifiList.length,
                itemBuilder: (context, index) {
                  WifiInfo wifi = wifiList[index];
                  return ListTile(
                    title: Text(wifi.ssid),
                    subtitle: Text("BSSID: ${wifi.bssid}"),
                  );
                },
              ),
            ),
          ],
        ),
      ),
    );
  }
}

解释

  1. 依赖添加:在pubspec.yaml中添加gerencia_net_plus依赖。
  2. 检查网络连接状态:使用GerenciaNetPlus.isConnected()方法检查设备是否连接到网络,并更新UI显示状态。
  3. 获取Wi-Fi列表:使用GerenciaNetPlus.getWifiList()方法获取当前可用的Wi-Fi网络列表,并在UI中显示。
  4. UI显示:使用Flutter的Material Design组件(如ScaffoldAppBarColumnTextListTile等)来构建用户界面,显示网络状态和Wi-Fi列表。

请注意,实际使用中可能需要处理更多的异常情况和权限问题(如访问Wi-Fi状态的权限),具体请参考gerencia_net_plus的官方文档和权限要求。

希望这个示例能帮助你更好地理解如何在Flutter项目中使用gerencia_net_plus插件进行网络管理。

回到顶部