Flutter支付集成插件sb_payment_sdk的使用

特性

此文档介绍了如何在Flutter应用中使用sb_payment_sdk插件进行支付集成。


开始使用

导入必要的包

首先,需要在项目中导入以下依赖包:

import 'package:sb_payment_sdk/sb_payment_sdk.dart';
import 'package:sb_payment_sdk/models/charge_model.dart';
import 'package:sb_payment_sdk/models/api_response.dart';

初始化插件

在使用插件之前,需要调用initialize方法进行初始化。参数包括是否为生产环境(isLive)和公钥(publicKey)。

StartButtonPlugin _paymentPlugin = StartButtonPlugin();
_paymentPlugin.initialize(isLive: false, publicKey: "sb_e73bc345*************2bc08442957****8db719f*******12c0");

说明

  • isLive: 如果设置为true,表示当前环境为生产环境;如果设置为false,表示测试环境。
  • publicKey: 从支付服务提供商获取的公钥。

执行支付操作

通过调用makePayment方法发起支付请求。以下是示例代码:

const _reference = ""; // 生成一个随机字符串作为交易参考号
num _amount = 2000; // 支付金额(单位为分)
APIResponse response = await _paymentPlugin.makePayment(
  context, // 当前上下文
  charge: Payment( 
    amount: _amount, // 支付金额
    email: "example@gmail.com", // 用户邮箱
    currencyType: CurrencyType.NGN, // 货币类型
    reference: _reference // 交易参考号
  )
);

说明

  • _reference: 随机生成的交易参考号,用于标识该笔交易。
  • _amount: 支付金额,单位通常为“分”。例如,2000表示20.00。
  • CurrencyType.NGN: 表示货币类型为尼日利亚奈拉(NGN),可根据实际需求替换为其他货币类型。

处理支付结果

支付完成后,插件会返回一个APIResponse对象。根据支付状态处理不同的逻辑。

成功支付示例

成功支付后,响应数据可能如下所示:

var data = {
  "reference": "reference",
  "amount": 2000,
  "email": "example@gmail.com",
  "currency": "NGN",
  "bankName": "",
  "accountName": "",
  "accountNumber": "",
  "paymentStatus": "successful",
  "paymentType": "Paystack",
  "paymentDate": "2024-03-19T18:42:51.757Z"
};

错误支付示例

如果支付失败,插件会返回错误信息。例如:

var data = {
  "error": "Invalid email address",
  "message": "Please check your email and try again."
};

完整示例代码

以下是一个完整的示例代码,展示了如何在Flutter中集成sb_payment_sdk插件并完成支付流程:

import 'package:flutter/material.dart';
import 'package:sb_payment_sdk/sb_payment_sdk.dart';
import 'package:sb_payment_sdk/models/charge_model.dart';
import 'package:sb_payment_sdk/models/api_response.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: PaymentScreen(),
    );
  }
}

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

class _PaymentScreenState extends State<PaymentScreen> {
  final StartButtonPlugin _paymentPlugin = StartButtonPlugin();

  [@override](/user/override)
  void initState() {
    super.initState();
    // 初始化插件
    _paymentPlugin.initialize(isLive: false, publicKey: "sb_e73bc345*************2bc08442957****8db719f*******12c0");
  }

  Future<void> makePayment() async {
    const _reference = "random_reference_123"; // 随机生成的参考号
    num _amount = 2000; // 支付金额(单位为分)

    try {
      APIResponse response = await _paymentPlugin.makePayment(
        context,
        charge: Payment(
          amount: _amount,
          email: "example@gmail.com",
          currencyType: CurrencyType.NGN,
          reference: _reference
        )
      );

      if (response.success) {
        // 成功支付后的处理逻辑
        print("Payment Successful: ${response.data}");
      } else {
        // 支付失败后的处理逻辑
        print("Payment Failed: ${response.error}");
      }
    } catch (e) {
      print("Error during payment: $e");
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('SB Payment SDK Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: makePayment,
          child: Text('Make Payment'),
        ),
      ),
    );
  }
}

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

1 回复

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


sb_payment_sdk 是一个用于 Flutter 的支付集成插件,通常用于处理移动应用中的支付功能。以下是如何在 Flutter 项目中使用 sb_payment_sdk 的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 sb_payment_sdk 的依赖。

dependencies:
  flutter:
    sdk: flutter
  sb_payment_sdk: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 初始化 SDK

在你的 Flutter 应用中,你需要在应用启动时初始化 sb_payment_sdk

import 'package:sb_payment_sdk/sb_payment_sdk.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化支付 SDK
  await SBPaymentSDK.initialize(
    apiKey: 'YOUR_API_KEY',
    environment: Environment.SANDBOX, // 或者 Environment.PRODUCTION
  );

  runApp(MyApp());
}

3. 配置支付参数

在发起支付之前,你需要配置支付参数,例如订单号、金额、货币类型等。

PaymentRequest paymentRequest = PaymentRequest(
  orderId: 'ORDER_123456',
  amount: 100.0,
  currency: 'USD',
  description: 'Payment for order #123456',
  customerEmail: 'customer@example.com',
);

4. 发起支付

使用配置好的支付参数发起支付请求。

void initiatePayment() async {
  try {
    PaymentResponse response = await SBPaymentSDK.initiatePayment(paymentRequest);
    
    if (response.status == PaymentStatus.SUCCESS) {
      print('Payment successful: ${response.transactionId}');
    } else {
      print('Payment failed: ${response.errorMessage}');
    }
  } catch (e) {
    print('Error during payment: $e');
  }
}

5. 处理支付结果

根据支付结果,你可以更新 UI 或执行其他操作。

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

6. 处理回调(可选)

如果你需要处理支付完成后的回调,可以设置回调监听器。

SBPaymentSDK.setPaymentCallback((PaymentResponse response) {
  if (response.status == PaymentStatus.SUCCESS) {
    print('Payment successful: ${response.transactionId}');
  } else {
    print('Payment failed: ${response.errorMessage}');
  }
});

7. 处理错误和异常

在支付过程中,可能会遇到各种错误和异常。确保你捕获并处理这些错误,以提供更好的用户体验。

try {
  PaymentResponse response = await SBPaymentSDK.initiatePayment(paymentRequest);
  // 处理支付结果
} catch (e) {
  print('Error during payment: $e');
}
回到顶部