Flutter统一支付接口(UPI)插件upi_connect的使用
Flutter统一支付接口(UPI)插件upi_connect的使用
upi_connect
是一个为在Android设备上无缝执行UPI交易而设计的Flutter插件。此插件支持通过安装在设备上的各种UPI应用执行UPI交易,并提供了结构化的响应返回给应用程序,便于处理交易结果。
目录
特性
- 在Android上使用URL意图执行UPI交易。
- 支持处理UPI交易后的响应。
- 目前仅支持Android。
安装
在你的 pubspec.yaml
文件中添加 upi_connect
作为依赖项:
dependencies:
upi_connect: latest_version
运行以下命令:
flutter pub get
示例
1. 列出所有UPI应用
检索设备上已安装的UPI应用列表。
List<UPIApp> upiApps = await UpiConnect.getAllApps();
upiApps.forEach((app) {
print("UPI App: ${app.name}, Package: ${app.packageName}");
});
参数 | 类型 | 描述 |
---|---|---|
name | String |
应用名称 |
icon | List<int> |
应用图标(字节列表) |
packageName | String |
应用包名 |
2. 使用意图URL进行UPI交易
UPITransaction upiTransaction = UPITransaction.fromUrl(
upiUrl: "upi://pay?pa=test[@ybl](/user/ybl)&pn=test&am=1.00&tr=1210374251828217008&tn=Getupiapps&cu=INR&mode=04",
onResponse: (UPITransactionResponse response) {
_onResult(response.toString());
},
upiApp: upiApp,
);
Map? response = await upiTransaction.initiate();
print(response);
参数 | 类型 | 描述 |
---|---|---|
upiUrl | String |
UPI意图URL字符串 |
onResponse | Function(UPITransactionResponse) |
接收UPITransactionResponse的回调函数 |
upiApp | UPIApp? |
[可选] 用于发起交易的UPI应用 |
3. 通过传递参数进行UPI交易
UPITransaction upiTransaction = UPITransaction(
amount: 50.0,
receiverName: "TestUser",
receiverUpiId: "test[@ybl](/user/ybl)",
transactionId: "1234567890",
transactionNote: "Test Transaction",
onResponse: (UPITransactionResponse response) {
_onResult(response.toString());
},
upiApp: upiApp,
);
Map? response = await upiTransaction.initiate();
print(response);
更多关于Flutter统一支付接口(UPI)插件upi_connect的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter统一支付接口(UPI)插件upi_connect的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
upi_connect
是一个用于在 Flutter 应用中集成统一支付接口(UPI)的插件。它允许开发者轻松地发起 UPI 支付请求,并处理支付结果。以下是如何在 Flutter 项目中使用 upi_connect
插件的详细步骤。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 upi_connect
插件的依赖。
dependencies:
flutter:
sdk: flutter
upi_connect: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入包
在你的 Dart 文件中导入 upi_connect
包。
import 'package:upi_connect/upi_connect.dart';
3. 发起 UPI 支付请求
使用 UpiConnect
类来发起 UPI 支付请求。你需要提供收款人的 UPI ID、金额、交易备注等信息。
Future<void> initiateUpiPayment() async {
final UpiResponse response = await UpiConnect.initiateTransaction(
app: UpiApp.googlePay, // 选择 UPI 应用
payeeAddress: 'recipient@upi', // 收款人 UPI ID
payeeName: 'Recipient Name', // 收款人姓名
amount: '100.00', // 支付金额
transactionRefId: 'TXN123456', // 交易参考 ID
transactionNote: 'Payment for services', // 交易备注
merchantCode: 'MERCHANT123', // 商户代码(可选)
);
// 处理支付结果
if (response.status == UpiPaymentStatus.success) {
print('Payment successful: ${response.transactionId}');
} else {
print('Payment failed: ${response.errorMessage}');
}
}
4. 处理支付结果
UpiResponse
对象包含了支付的结果信息。你可以根据 response.status
来判断支付是否成功,并获取交易 ID 或错误信息。
enum UpiPaymentStatus {
success,
failure,
submitted,
pending,
}
class UpiResponse {
final UpiPaymentStatus status;
final String? transactionId;
final String? errorMessage;
// 其他字段...
}
5. 选择 UPI 应用
UpiConnect
支持多种 UPI 应用,如 Google Pay、PhonePe、Paytm 等。你可以通过 UpiApp
枚举来选择特定的 UPI 应用。
enum UpiApp {
googlePay,
phonePe,
paytm,
bhim,
// 其他 UPI 应用...
}
6. 处理用户取消支付
如果用户在支付过程中取消了操作,UpiResponse
的 status
将会是 UpiPaymentStatus.failure
,并且 errorMessage
将会包含相关错误信息。
7. 示例代码
以下是一个完整的示例代码,展示了如何发起 UPI 支付并处理结果。
import 'package:flutter/material.dart';
import 'package:upi_connect/upi_connect.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('UPI Payment Example'),
),
body: Center(
child: ElevatedButton(
onPressed: initiateUpiPayment,
child: Text('Pay with UPI'),
),
),
),
);
}
Future<void> initiateUpiPayment() async {
final UpiResponse response = await UpiConnect.initiateTransaction(
app: UpiApp.googlePay,
payeeAddress: 'recipient@upi',
payeeName: 'Recipient Name',
amount: '100.00',
transactionRefId: 'TXN123456',
transactionNote: 'Payment for services',
merchantCode: 'MERCHANT123',
);
if (response.status == UpiPaymentStatus.success) {
print('Payment successful: ${response.transactionId}');
} else {
print('Payment failed: ${response.errorMessage}');
}
}
}