Flutter支付集成插件razorpay_flutter_customui的使用

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

Flutter支付集成插件razorpay_flutter_customui的使用

概述

razorpay_flutter_customui 是一个用于在Flutter应用中集成Razorpay支付功能的插件。本文将详细介绍如何在Flutter项目中安装和使用该插件。

目录

Getting Started

此Flutter插件是一个封装了Android和iOS SDK的包装器。详细文档请参考Razorpay官方文档.

Prerequisites

  1. 了解Razorpay Payment Flow
  2. 注册Razorpay账户并生成API Keys

Installation

pubspec.yaml文件中添加依赖:

dependencies:
  razorpay_flutter_customui: ^1.3.3

Proguard Rules (仅限Android)

如果你使用ProGuard进行构建,需要在ProGuard文件中添加以下规则:

-keepattributes *Annotation*
-dontwarn com.razorpay.**
-keep class com.razorpay.** {*;}
-optimizations !method/inlining/
-keepclasseswithmembers class * {
  public void onPayment*(...);
}

iOS 设置

确保最低部署目标为iOS 10.0或更高,并启用Bitcode。

运行以下命令以获取包:

flutter packages get

Usage

导入包

import 'package:razorpay_flutter_customui/razorpay_flutter_customui.dart';

创建Razorpay实例

Razorpay _razorpay = Razorpay();

绑定事件监听器

_razorpay.on(Razorpay.EVENT_PAYMENT_SUCCESS, _handlePaymentSuccess);
_razorpay.on(Razorpay.EVENT_PAYMENT_ERROR, _handlePaymentError);

void _handlePaymentSuccess(Map<dynamic, dynamic> response) {
  // 处理支付成功
}

void _handlePaymentError(Map<dynamic, dynamic> response) {
  // 处理支付失败
}

设置选项

var options = {
  'key': '<YOUR_KEY_HERE>',
  'amount': 100,
  'name': 'Acme Corp.',
  'description': 'Fine T-Shirt',
  'prefill': {
    'contact': '8888888888',
    'email': 'test@razorpay.com'
  }
};

打开Checkout页面

_razorpay.submit(options);

示例Demo

以下是一个完整的示例代码,展示了如何在Flutter应用中集成Razorpay支付:

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

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  Razorpay _razorpay;

  [@override](/user/override)
  void initState() {
    super.initState();
    _razorpay = Razorpay();
    _razorpay.on(Razorpay.EVENT_PAYMENT_SUCCESS, _handlePaymentSuccess);
    _razorpay.on(Razorpay.EVENT_PAYMENT_ERROR, _handlePaymentError);
  }

  [@override](/user/override)
  void dispose() {
    super.dispose();
    _razorpay.clear();
  }

  void _handlePaymentSuccess(PaymentSuccessResponse response) {
    print('Payment Success');
  }

  void _handlePaymentError(PaymentFailureResponse response) {
    print('Payment Error');
  }

  void openCheckout() {
    var options = {
      'key': '<YOUR_KEY_HERE>',
      'amount': 100,
      'name': 'Acme Corp.',
      'description': 'Fine T-Shirt',
      'prefill': {
        'contact': '8888888888',
        'email': 'test@razorpay.com'
      }
    };
    _razorpay.open(options);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Razorpay Demo'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              openCheckout();
            },
            child: Text('Pay Now'),
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何在Flutter项目中集成并使用razorpay_flutter_customui插件的示例代码。这个插件允许你使用Razorpay的自定义UI进行支付集成。

第一步:添加依赖

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

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

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

第二步:配置Android

android/app/src/main/AndroidManifest.xml中添加以下权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

然后,在android/app/build.gradle文件中添加以下内容:

android {
    ...
    defaultConfig {
        ...
        manifestPlaceholders = [
                razorpayRedirectUri: "yourapp.com://razorpay-redirect"
        ]
    }
}

第三步:配置iOS

ios/Runner/Info.plist中添加以下内容:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>yourapp.com</string>
        </array>
    </dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>razorpay-redirect</string>
</array>

确保将yourapp.com替换为你的实际应用的URL Scheme。

第四步:初始化Razorpay并启动支付

在你的Flutter代码中,你可以按照以下方式初始化Razorpay并启动支付流程:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Razorpay Payment Example'),
        ),
        body: Center(
          child: PaymentButton(),
        ),
      ),
    );
  }
}

class PaymentButton extends StatefulWidget {
  @override
  _PaymentButtonState createState() => _PaymentButtonState();
}

class _PaymentButtonState extends State<PaymentButton> {
  final Razorpay _razorpay = Razorpay();

  @override
  void initState() {
    super.initState();
    _razorpay.on(Razorpay.EVENT_PAYMENT_SUCCESS, (paymentSuccessResponse) {
      // handle payment success
      print('Payment Successful: ${paymentSuccessResponse.toMap()}');
    });

    _razorpay.on(Razorpay.EVENT_PAYMENT_ERROR, (paymentErrorResponse) {
      // handle payment error
      print('Payment Error: ${paymentErrorResponse.toMap()}');
    });

    _razorpay.on(Razorpay.EVENT_EXTERNAL_WALLET, (externalWalletResponse) {
      // handle external wallet payment
      print('External Wallet: ${externalWalletResponse.toMap()}');
    });
  }

  void openCheckout() async {
    try {
      var options = {
        "key": "YOUR_RAZORPAY_KEY", // Replace with your Razorpay key
        "amount": "100", // Amount in the smallest currency unit (e.g., 100 cents = $1)
        "name": "Merchant Name",
        "description": "Payment Description",
        "prefill": {
          "email": "customer.email@example.com",
          "contact": "1234567890",
        },
        "external": {
          "wallets": ["paytm", "googlepay", "phonepe"]
        },
        "theme": {
          "color": "#FF5733"
        }
      };

      await _razorpay.open(options);
    } catch (e) {
      print('Error: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: openCheckout,
      child: Text('Pay'),
    );
  }
}

确保将YOUR_RAZORPAY_KEY替换为你的Razorpay密钥。

注意事项

  1. 密钥管理:不要在客户端代码中硬编码你的Razorpay密钥。使用安全的方式来管理你的密钥,比如环境变量或服务器端的配置管理。
  2. 错误处理:确保在生产环境中妥善处理支付错误,提供用户友好的错误消息。
  3. 安全性:遵循Razorpay的安全最佳实践,确保支付流程的安全性。

通过上述步骤,你应该能够在Flutter应用中成功集成并使用Razorpay的自定义UI进行支付。

回到顶部