Flutter支付集成插件razorpay_plus的使用

Flutter支付集成插件razorpay_plus的使用

开始

razorpay_plus 是一个用于支持Web应用的Razorpay插件。

准备工作

要开始使用 razorpay_plus 插件,首先确保你的项目已经集成了Flutter。如果你还没有设置Flutter环境,请参考 官方文档 获取更多帮助。

初始化插件

以下是一个简单的示例,展示了如何在Flutter应用中初始化并使用 razorpay_plus 插件。

示例代码

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

import 'package:flutter/services.dart';
import 'package:razorpay_plus/razorpay_plus.dart';

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

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';
  final _razorpayPlusPlugin = RazorpayPlus();

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  // 平台消息是异步的,所以我们在一个异步方法中进行初始化。
  Future<void> initPlatformState() async {
    String platformVersion;
    // 平台消息可能会失败,所以我们使用try/catch来处理PlatformException。
    // 我们也处理消息可能返回null的情况。
    try {
      platformVersion =
          await _razorpayPlusPlugin.getPlatformVersion() ?? 'Unknown platform version';
    } on PlatformException {
      platformVersion = 'Failed to get platform version.';
    }

    // 如果小部件在异步平台消息仍在飞行时从树中移除,我们想要丢弃回复而不是调用
    // setState来更新我们的非存在的外观。
    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: Text('Running on: $_platformVersion\n'),
        ),
      ),
    );
  }
}

代码解释

  • 导入必要的库

    import 'package:flutter/material.dart';
    import 'dart:async';
    import 'package:flutter/services.dart';
    import 'package:razorpay_plus/razorpay_plus.dart';
    
  • 定义主应用类

    void main() {
      runApp(const MyApp());
    }
    
  • 定义主应用状态类

    class MyApp extends StatefulWidget {
      const MyApp({super.key});
    
      [@override](/user/override)
      State<MyApp> createState() => _MyAppState();
    }
    
  • 初始化平台状态

    class _MyAppState extends State<MyApp> {
      String _platformVersion = 'Unknown';
      final _razorpayPlusPlugin = RazorpayPlus();
    
      [@override](/user/override)
      void initState() {
        super.initState();
        initPlatformState();
      }
    
      Future<void> initPlatformState() async {
        String platformVersion;
        try {
          platformVersion =
              await _razorpayPlusPlugin.getPlatformVersion() ?? 'Unknown platform version';
        } on PlatformException {
          platformVersion = 'Failed to get platform version.';
        }
    
        if (!mounted) return;
    
        setState(() {
          _platformVersion = platformVersion;
        });
      }
    
  • 构建应用UI

    [@override](/user/override)
    Widget build(BuildContext context) {
      return MaterialApp(
        home: Scaffold(
          appBar: AppBar(
            title: const Text('Plugin example app'),
          ),
          body: Center(
            child: Text('Running on: $_platformVersion\n'),
          ),
        ),
      );
    }
    

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

1 回复

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


razorpay_plus 是一个用于在 Flutter 应用中集成 Razorpay 支付功能的插件。Razorpay 是印度一家知名的支付网关,支持多种支付方式,包括信用卡、借记卡、网银、UPI 等。

以下是如何在 Flutter 项目中使用 razorpay_plus 插件的详细步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 razorpay_plus 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  razorpay_plus: ^1.0.0  # 请检查最新版本

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

2. 初始化 Razorpay

在你的 Flutter 应用中初始化 Razorpay。通常,你可以在 initState 方法中进行初始化。

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

class PaymentScreen extends StatefulWidget {
  @override
  _PaymentScreenState createState() => _PaymentScreenState();
}

class _PaymentScreenState extends State<PaymentScreen> {
  late Razorpay _razorpay;

  @override
  void initState() {
    super.initState();
    _razorpay = Razorpay();
    _razorpay.on(Razorpay.EVENT_PAYMENT_SUCCESS, _handlePaymentSuccess);
    _razorpay.on(Razorpay.EVENT_PAYMENT_ERROR, _handlePaymentError);
    _razorpay.on(Razorpay.EVENT_EXTERNAL_WALLET, _handleExternalWallet);
  }

  @override
  void dispose() {
    _razorpay.clear(); // 清理监听器
    super.dispose();
  }

  void _handlePaymentSuccess(PaymentSuccessResponse response) {
    // 处理支付成功逻辑
    print("Payment成功: ${response.paymentId}");
  }

  void _handlePaymentError(PaymentFailureResponse response) {
    // 处理支付失败逻辑
    print("Payment失败: ${response.code} - ${response.message}");
  }

  void _handleExternalWallet(ExternalWalletResponse response) {
    // 处理外部钱包支付逻辑
    print("外部钱包: ${response.walletName}");
  }

  void openCheckout() async {
    var options = {
      'key': 'your_razorpay_key',  // 替换为你的 Razorpay API Key
      'amount': 1000,  // 金额以 paise 为单位(100 paise = 1 INR)
      'name': 'Your Company Name',
      'description': 'Payment for some product',
      'prefill': {'contact': '9999999999', 'email': 'test@example.com'},
      'external': {
        'wallets': ['paytm']  // 可选,指定外部钱包
      }
    };

    try {
      _razorpay.open(options);
    } catch (e) {
      print(e.toString());
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Razorpay Payment'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: openCheckout,
          child: Text('Pay Now'),
        ),
      ),
    );
  }
}

3. 配置 Android 和 iOS

Android 配置

android/app/build.gradle 文件中,确保 minSdkVersion 至少为 21

android {
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 30
        // 其他配置
    }
}

iOS 配置

ios/Runner/Info.plist 文件中,添加以下内容以支持 Razorpay 的 WebView:

<key>io.flutter.embedded_views_preview</key>
<true/>
回到顶部