Flutter集成EaseBuzz服务插件easebuzz_flutter_sdk的使用
Flutter集成EaseBuzz服务插件easebuzz_flutter_sdk的使用
简介
Easebuzz Flutter SDK 提供了与Easebuzz支付网关的无缝集成,使商家能够通过多种支付方式(如信用卡、借记卡、UPI等)安全地收取在线支付。该SDK确保了强大的加密和安全措施来保护客户数据。Easebuzz是一个完全API集成的平台,简化了网站和移动应用中的支付处理。
特性
- 多种支付模式:信用卡/借记卡、UPI、网上银行等。
- 安全加密交易。
- 与Flutter应用的轻松集成。
- 完全API集成的支付网关。
- 测试环境支持。
前置条件
在集成Easebuzz Flutter SDK之前,请确保以下几点:
-
商户入驻
- 创建商户账户并完成入驻流程,访问 Easebuzz Signup Portal。
-
沙盒/测试集成凭证
- 测试凭证会发送到您的注册邮箱。使用这些凭证在安全的沙盒环境中测试支付功能。
- 测试完成后,用生产密钥替换测试密钥以启用真实交易。
-
平台特定配置
- Web:
- 在
web/index.html
的<head>
部分添加以下两个<script>
标签:<script src="https://ebz-static.s3.ap-south-1.amazonaws.com/easecheckout/v2.0.0/easebuzz-checkout-v2.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>
- 在
- Web:
安装
要集成SDK,请按照以下步骤操作:
-
添加依赖项
- 在
pubspec.yaml
文件中添加以下内容:dependencies: easebuzz_flutter_sdk: ^0.0.1
- 运行以下命令获取包:
flutter pub get
- 在
-
导入包
- 在Dart文件中导入SDK:
import 'package:easebuzz_flutter_sdk/easebuzz_flutter_sdk.dart';
- 在Dart文件中导入SDK:
使用方法
步骤1:初始化SDK
在使用SDK的任何功能之前,初始化EasebuzzFlutterSdk实例:
final EasebuzzFlutterSdk _easebuzzFlutterPlugin = EasebuzzFlutterSdk();
步骤2:创建支付模型
创建一个EasebuzzPaymentModel
实例:
final paymentModel = EasebuzzPaymentModel(
txnid: "TEST${DateTime.now().millisecondsSinceEpoch}", // 唯一交易ID
amount: amount, // 支付金额
productinfo: productName, // 产品/服务名称
firstname: "John", // 客户的名字
email: "john@example.com", // 客户的电子邮件
phone: "9999999999", // 客户的电话号码
surl: "https://your-success-url.com", // 成功URL
furl: "https://your-failure-url.com", // 失败URL
splitPayments: jsonEncode({"your_label": amount}), // 分成支付(如果适用)
key: key, // 商户密钥
);
注意:请将
surl
和furl
替换为实际的成功和失败处理URL。
步骤3:生成哈希值
生成哈希值以确保安全通信:
final hash = await _easebuzzFlutterPlugin.generateHash(
paymentModel: paymentModel,
key: key, // 商户密钥
salt: salt, // 商户盐值
);
步骤4:发起支付链接
对于移动平台(Android/iOS)
使用initiateLink
方法:
final response = await _easebuzzFlutterPlugin.initiateLink(
isTestMode: true, // 设置为`false`用于生产环境
hash: hash,
paymentModel: paymentModel,
);
对于Web
由于CORS问题,initiateLink
方法不支持Web。您需要从后端或云函数调用Easebuzz API来生成访问令牌:
- 参考Initiate Payment API Documentation。
- 示例代码:
final response = await createAccessTokenForWeb( hash: hash, requestBody: paymentModel.toJson(), );
步骤5:进行支付
获得access key
后,继续进行支付:
final paymentResponse = await _easebuzzFlutterPlugin.payWithEasebuzz(
response, // Access key from initiateLink response
"test", // 支付模式:"test"表示沙盒环境,"production"表示生产环境
);
完整示例
以下是如何在Flutter应用中使用Easebuzz SDK的完整示例:
Future<void> initiatePayment({
required String productName,
required double amount,
required Function(String) onSuccess,
required Function(String) onError,
}) async {
final paymentModel = EasebuzzPaymentModel(
txnid: "TEST${DateTime.now().millisecondsSinceEpoch}",
amount: amount,
productinfo: productName,
firstname: "John",
email: "john@example.com",
phone: "9999999999",
surl: "https://your-success-url.com",
furl: "https://your-failure-url.com",
splitPayments: jsonEncode({"your_label": amount}),
key: key,
);
try {
// 生成哈希值
final hash = await _easebuzzFlutterPlugin.generateHash(
paymentModel: paymentModel,
key: EaseBuzzPaymentRepository.key,
salt: EaseBuzzPaymentRepository.salt,
);
if (hash == null) {
onError("Failed to generate hash.");
return;
}
// 发起支付链接
final response = kIsWeb
? await createAccessTokenForWeb(
hash: hash, requestBody: paymentModel.toJson())
: await _easebuzzFlutterPlugin.initiateLink(
isTestMode: true, // 设置为false用于生产环境
hash: hash,
paymentModel: paymentModel,
);
if (response == null) {
onError("Failed to initiate payment link.");
return;
}
// 进行支付
final paymentResponse =
await _easebuzzFlutterPlugin.payWithEasebuzz(response, "test");
if (paymentResponse != null) {
// 处理成功支付
onSuccess("Payment successful: $paymentResponse");
} else {
// 处理失败支付
onError("Payment failed: Payment response is null.");
}
} on PlatformException catch (e) {
// 处理平台特定错误
onError("Payment failed: ${e.message}");
} catch (e) {
// 处理一般错误
onError("Payment failed: ${e.toString()}");
}
}
/// 在支付按钮上调用此方法
Future<void> _processPayment(BuildContext context, Product product) async {
await paymentService.initiatePayment(
productName: product.title,
amount: product.price,
onSuccess: (response) {
_showFeedbackSnackBar(
context,
'Payment Successful: $response',
Colors.green,
);
},
onError: (error) {
_showFeedbackSnackBar(
context,
'Payment Failed: $error',
Colors.red,
);
},
);
}
更多关于Flutter集成EaseBuzz服务插件easebuzz_flutter_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter集成EaseBuzz服务插件easebuzz_flutter_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中集成并使用EaseBuzz服务插件easebuzz_flutter_sdk
的代码示例。请注意,实际使用时需要根据EaseBuzz的官方文档和SDK版本进行调整。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加easebuzz_flutter_sdk
依赖:
dependencies:
flutter:
sdk: flutter
easebuzz_flutter_sdk: ^最新版本号 # 请替换为实际的最新版本号
然后运行flutter pub get
来安装依赖。
2. 初始化EaseBuzz SDK
在你的应用的主文件(通常是main.dart
)中,初始化EaseBuzz SDK。
import 'package:flutter/material.dart';
import 'package:easebuzz_flutter_sdk/easebuzz_flutter_sdk.dart';
void main() {
// 初始化EaseBuzz SDK
EaseBuzz.initialize(
appId: '你的EaseBuzz App ID', // 请替换为你的EaseBuzz App ID
serverUrl: '你的EaseBuzz服务器URL', // 请替换为你的EaseBuzz服务器URL
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter EaseBuzz Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('EaseBuzz Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
// 调用EaseBuzz SDK的某个功能,例如发送消息
_sendMessage();
},
child: Text('发送消息'),
),
),
);
}
Future<void> _sendMessage() async {
try {
// 假设EaseBuzz SDK有一个发送消息的方法
String result = await EaseBuzz.sendMessage(
to: '接收者ID', // 请替换为实际的接收者ID
message: 'Hello, EaseBuzz!',
);
print('消息发送结果: $result');
} catch (e) {
print('发送消息失败: $e');
}
}
}
3. 处理回调和事件
EaseBuzz SDK可能包含许多回调和事件处理,例如用户登录、消息接收等。这些通常需要在SDK初始化时设置监听器。以下是一个简单的示例,展示如何设置消息接收回调:
void main() {
// 初始化EaseBuzz SDK
EaseBuzz.initialize(
appId: '你的EaseBuzz App ID',
serverUrl: '你的EaseBuzz服务器URL',
onMessageReceived: (message) {
// 处理接收到的消息
print('接收到消息: $message');
},
);
runApp(MyApp());
}
注意事项
- 权限管理:确保在
AndroidManifest.xml
和Info.plist
文件中添加了必要的权限,例如网络权限。 - 错误处理:在实际应用中,添加更多的错误处理和用户反馈机制。
- 版本兼容性:检查
easebuzz_flutter_sdk
的版本与你的Flutter SDK版本是否兼容。 - 官方文档:参考EaseBuzz的官方文档以获取最新的API信息和最佳实践。
这个示例展示了如何在Flutter项目中集成EaseBuzz服务插件并进行基本的消息发送操作。具体的API调用和功能实现请参考EaseBuzz的官方文档。