Flutter支付集成插件razorpay_flutter_customui的使用
Flutter支付集成插件razorpay_flutter_customui的使用
概述
razorpay_flutter_customui
是一个用于在Flutter应用中集成Razorpay支付功能的插件。本文将详细介绍如何在Flutter项目中安装和使用该插件。
目录
Getting Started
此Flutter插件是一个封装了Android和iOS SDK的包装器。详细文档请参考Razorpay官方文档.
Prerequisites
- 了解Razorpay Payment Flow。
- 注册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
更多关于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密钥。
注意事项
- 密钥管理:不要在客户端代码中硬编码你的Razorpay密钥。使用安全的方式来管理你的密钥,比如环境变量或服务器端的配置管理。
- 错误处理:确保在生产环境中妥善处理支付错误,提供用户友好的错误消息。
- 安全性:遵循Razorpay的安全最佳实践,确保支付流程的安全性。
通过上述步骤,你应该能够在Flutter应用中成功集成并使用Razorpay的自定义UI进行支付。