Flutter支付插件flutter_upi_pay的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter支付插件flutter_upi_pay的使用

支持平台

  • Android
  • iOS

开始使用

该插件可以在Pub上找到:https://pub.dev/packages/flutter_upi_pay

在你的应用pubspec.yaml文件中添加依赖:

dependencies:
  flutter_upi_pay: 0.0.2

使用说明

导入包

import 'package:flutter_upi_pay/flutter_upi_pay.dart';

创建FlutterPayment实例

FlutterPayment flutterPayment = FlutterPayment();

设置选项

flutterPayment.launchUpi(
  upi_id: "test@oksbi",   // UPI ID
  name: "tester",         // 付款人姓名
  amount: "100",          // 付款金额
  message: "test",        // 付款备注
  currency: "INR");       // 货币类型

预览图

Preview Image

示例代码

example/lib/main.dart

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // 这个小部件是您的应用的根。
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter pay',
      theme: ThemeData(
        // 这是您的应用程序的主题。
        //
        // 尝试这样做:运行您的应用“flutter run”。您会看到
        // 应用程序有一个蓝色工具栏。然后,不退出应用,
        // 将颜色方案中的seedColor改为Colors.green
        // 并触发热重载(保存更改或按IDE中的“热重载”按钮,或者如果您使用
        // 命令行启动应用,则按“r”)。
        //
        // 注意计数器并没有重置回零;应用程序的状态在重载时不会丢失。
        // 若要重置状态,请使用热重启。
        //
        // 这对代码也适用,而不仅仅是值:大多数代码更改可以通过
        // 热重载来测试。
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.blueAccent),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter UPI Pay'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  // 这个小部件是您的应用的主页。它是有状态的,意味着
  // 它有一个状态对象(定义如下),包含影响其外观的字段。
  //
  // 这个类是状态的配置。它保存了由父级(在这种情况下为App小部件)提供的值(在这种情况下为标题)
  // 并用于State的构建方法。小部件子类中的字段总是标记为“final”。

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  FlutterPayment flutterPayment = FlutterPayment();

  [@override](/user/override)
  Widget build(BuildContext context) {
    // 此方法每次调用setState时都会重新运行,例如上面的_incrementCounter方法。
    //
    // Flutter框架已被优化为使重新构建方法快速运行,
    // 因此您可以只需重新构建任何需要更新的内容,而不是逐个更改小部件实例。
    return Scaffold(
      appBar: AppBar(
        // 尝试这样做:将此处的颜色更改为特定颜色(如Colors.amber?)
        // 并触发热重载以查看AppBar颜色变化,而其他颜色保持不变。
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        // 这里我们从MyHomePage对象中获取值,该对象由App.build方法创建,
        // 并将其用于设置appbar标题。
        title: Text(widget.title),
      ),
      body: const Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              'Initiate UPI payment from Flutter',
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          // 启动UPI支付
          flutterPayment.launchUpi(
            upiId: "test@oksbi",
            name: "tester",
            amount: "100",
            message: "test",
            currency: "INR",
          );
        },
        tooltip: '',
        child: const Icon(Icons.monetization_on_outlined),
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何使用Flutter支付插件flutter_upi_pay的示例代码案例。这个插件允许你通过Unified Payments Interface (UPI) 进行支付。

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

dependencies:
  flutter:
    sdk: flutter
  flutter_upi_pay: ^latest_version  # 请替换为最新版本号

然后,运行flutter pub get来安装依赖。

接下来,你可以在你的Flutter应用中使用flutter_upi_pay插件。下面是一个简单的示例,展示如何启动UPI支付流程:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter UPI Pay Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  void _initiateUpiPayment() async {
    try {
      String receiverUpiId = 'test@upi';  // 替换为实际的收款人UPI ID
      String amount = '10.00';  // 替换为实际的支付金额
      String transactionNote = 'Payment for goods';  // 交易备注
      String transactionRef = DateTime.now().toString();  // 交易引用ID,唯一标识一次交易
      String appName = 'MyFlutterApp';  // 你的应用名称

      UpiResponse response = await FlutterUpiPay.initiateTransaction(
        receiverUpiId: receiverUpiId,
        amount: amount,
        transactionNote: transactionNote,
        transactionRef: transactionRef,
        appName: appName,
      );

      if (response.status == "SUCCESS") {
        print("Payment successful: ${response.responseCode}, ${response.responseMessage}");
      } else if (response.status == "FAILURE") {
        print("Payment failed: ${response.responseCode}, ${response.responseMessage}");
      } else {
        print("Payment pending or unknown status: ${response.responseCode}, ${response.responseMessage}");
      }
    } catch (e) {
      print("Error initiating UPI payment: $e");
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter UPI Pay Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _initiateUpiPayment,
          child: Text('Initiate UPI Payment'),
        ),
      ),
    );
  }
}

在这个示例中:

  1. 依赖添加:在pubspec.yaml文件中添加了flutter_upi_pay依赖。
  2. UPI支付发起:在_initiateUpiPayment方法中,使用FlutterUpiPay.initiateTransaction方法来启动UPI支付流程。你需要提供收款人的UPI ID、支付金额、交易备注、交易引用ID和应用名称等信息。
  3. 响应处理:根据UpiResponse对象的状态码和消息来处理支付结果。

请确保在实际应用中替换示例中的收款人UPI ID、支付金额等信息,并根据需要调整UI和逻辑。

这个示例代码提供了一个基础框架,你可以根据实际需求进行扩展和修改。

回到顶部