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
- 访问Gerencianet仪表板并导航到API部分。
- 在左侧点击我的应用(Minhas Aplicações),然后点击新建应用(Nova Aplicação)。
- 输入应用名称,启用支付API(Boletos e Carnês)和Pix API,并根据需要选择授权范围(记住这些可以在后期更改)。
- 点击创建新应用(Criar Nova aplicação)。
修改现有的应用程序以使用Gerencianet API
- 访问Gerencianet仪表板并导航到API部分。
- 在左侧点击我的应用(Minhas Aplicações),选择您的应用,然后点击**编辑(Editar)**按钮(橙色按钮)。
- 启用Pix API,并根据需要选择授权范围(记住这些可以在后期更改)。
- 点击更新应用(Atualizar Aplicação)。
如何生成一个Pix证书
所有Pix请求必须包含由Gerencianet在您的账户内提供的安全证书,格式为PFX(.p12)。此要求在PIX安全手册中进行了详细描述。
生成证书
- 访问Gerencianet仪表板并导航到API部分。
- 在左侧点击我的证书(Meus Certificados),选择您想要的环境:生产(Produção)或测试(Homologação)。
- 点击新建证书(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密钥:
- 通过Gerencianet应用访问您的账户。
- 在侧边菜单中,点击Pix以开始注册。
- 阅读屏幕上的信息并点击注册密钥(Registrar Chave)。 如果这不是您的第一次注册,点击我的密钥(Minhas Chaves),然后点击图标(➕)。
- 选择您希望注册为Pix密钥的数据,并点击下一步(Avançar) - 您必须至少选择4个可用选项之一(电话号码、电子邮件、CPF和/或随机密钥)。
- 注册完所需的Pix密钥后,点击完成(Concluir)。
- 完成!您的密钥现在已注册。
使用方法
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
更多关于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}"),
);
},
),
),
],
),
),
);
}
}
解释
- 依赖添加:在
pubspec.yaml
中添加gerencia_net_plus
依赖。 - 检查网络连接状态:使用
GerenciaNetPlus.isConnected()
方法检查设备是否连接到网络,并更新UI显示状态。 - 获取Wi-Fi列表:使用
GerenciaNetPlus.getWifiList()
方法获取当前可用的Wi-Fi网络列表,并在UI中显示。 - UI显示:使用Flutter的Material Design组件(如
Scaffold
、AppBar
、Column
、Text
、ListTile
等)来构建用户界面,显示网络状态和Wi-Fi列表。
请注意,实际使用中可能需要处理更多的异常情况和权限问题(如访问Wi-Fi状态的权限),具体请参考gerencia_net_plus
的官方文档和权限要求。
希望这个示例能帮助你更好地理解如何在Flutter项目中使用gerencia_net_plus
插件进行网络管理。