Flutter集成EaseBuzz服务插件easebuzz_flutter_sdk的使用

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

Flutter集成EaseBuzz服务插件easebuzz_flutter_sdk的使用

简介

Easebuzz Flutter SDK 提供了与Easebuzz支付网关的无缝集成,使商家能够通过多种支付方式(如信用卡、借记卡、UPI等)安全地收取在线支付。该SDK确保了强大的加密和安全措施来保护客户数据。Easebuzz是一个完全API集成的平台,简化了网站和移动应用中的支付处理。

特性

  • 多种支付模式:信用卡/借记卡、UPI、网上银行等。
  • 安全加密交易。
  • 与Flutter应用的轻松集成。
  • 完全API集成的支付网关。
  • 测试环境支持。

前置条件

在集成Easebuzz Flutter SDK之前,请确保以下几点:

  1. 商户入驻

  2. 沙盒/测试集成凭证

    • 测试凭证会发送到您的注册邮箱。使用这些凭证在安全的沙盒环境中测试支付功能。
    • 测试完成后,用生产密钥替换测试密钥以启用真实交易。
  3. 平台特定配置

    • 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>
        

安装

要集成SDK,请按照以下步骤操作:

  1. 添加依赖项

    • pubspec.yaml文件中添加以下内容:
      dependencies:
        easebuzz_flutter_sdk: ^0.0.1
      
    • 运行以下命令获取包:
      flutter pub get
      
  2. 导入包

    • 在Dart文件中导入SDK:
      import 'package:easebuzz_flutter_sdk/easebuzz_flutter_sdk.dart';
      

使用方法

步骤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, // 商户密钥
);

注意:请将surlfurl替换为实际的成功和失败处理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来生成访问令牌:

步骤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

1 回复

更多关于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());
}

注意事项

  1. 权限管理:确保在AndroidManifest.xmlInfo.plist文件中添加了必要的权限,例如网络权限。
  2. 错误处理:在实际应用中,添加更多的错误处理和用户反馈机制。
  3. 版本兼容性:检查easebuzz_flutter_sdk的版本与你的Flutter SDK版本是否兼容。
  4. 官方文档:参考EaseBuzz的官方文档以获取最新的API信息和最佳实践。

这个示例展示了如何在Flutter项目中集成EaseBuzz服务插件并进行基本的消息发送操作。具体的API调用和功能实现请参考EaseBuzz的官方文档。

回到顶部