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

1 回复

更多关于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. 处理用户取消支付

如果用户在支付过程中取消了操作,UpiResponsestatus 将会是 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}');
    }
  }
}
回到顶部