Flutter支付集成插件flutter_theoaks_paystack的使用

💳 Paystack Plugin for Flutter

支付卡支付
银行支付

一个用于通过Paystack支付网关进行支付的Flutter插件。完全支持Android和iOS。


🚀 安装

要使用此插件,只需在pubspec.yaml文件中添加依赖项flutter_paystack

dependencies:
  flutter_paystack: ^版本号

然后在你的widget的initState中初始化插件:

import 'package:flutter_paystack/flutter_paystack.dart';

class _PaymentPageState extends State<PaymentPage> {
  var publicKey = '[YOUR_PAYSTACK_PUBLIC_KEY]'; // 替换为您的Paystack公钥
  final plugin = PaystackPlugin();

  @override
  void initState() {
    super.initState();
    plugin.initialize(publicKey: publicKey); // 初始化插件
  }
}

无需其他配置——插件即可直接使用。


💲 进行支付

该插件提供了两种方式进行支付:

  1. 结账(推荐)
  2. 手动充值信用卡
1. 🌟 结账(推荐)

这是最简单的方式,插件会处理所有支付相关的流程(除了交易初始化和验证,这些应由后端完成)。

创建一个带有金额、邮箱和访问码或引用的Charge对象。如果从后端初始化了交易,则传递accessCode;否则传递reference

Charge charge = Charge()
      ..amount = 10000 // 金额(单位为分)
      ..reference = _getReference() // 生成唯一参考ID
      // 或者 ..accessCode = _getAccessCodeFrmInitialization()
      ..email = 'customer@email.com'; // 客户邮箱

CheckoutResponse response = await plugin.checkout(
  context, // 当前上下文
  method: CheckoutMethod.card, // 默认为CheckoutMethod.selectable
  charge: charge,
);

// 检查支付状态
if (response.status == true) {
  print("支付成功!");
} else {
  print("支付失败:${response.message}");
}

注意:如果方法为CheckoutMethod.bankCheckoutMethod.selectable,则需要提供accessCode

插件的checkout()方法返回支付状态和详细信息,建议在支付完成后,在后端验证交易。

2. ⭐ 手动充值信用卡

你可以在本地初始化支付,也可以通过后端初始化支付。

A. 通过后端初始化(推荐)
  1. 在后端发起HTTP POST请求到Paystack API以初始化交易。
  2. 如果一切正常,后端返回包含access_code的响应。
  3. 使用access_code和信用卡详细信息创建Charge对象,并将其传递给plugin.chargeCard()函数:
PaymentCard _getCardFromUI() {
  // 使用必要的参数创建信用卡对象
  return PaymentCard(
    number: cardNumber, // 卡号
    cvc: cvv,           // CVV码
    expiryMonth: expiryMonth, // 有效期月份
    expiryYear: expiryYear,   // 有效期年份
  );
}

_chargeCard(String accessCode) async {
  var charge = Charge()
    ..accessCode = accessCode // 支付初始化返回的accessCode
    ..card = _getCardFromUI(); // 用户输入的信用卡信息

  final response = await plugin.chargeCard(context, charge: charge);

  // 检查支付结果
  if (response.status == true) {
    print("支付成功!");
  } else {
    print("支付失败:${response.message}");
  }
}
B. 本地初始化

直接将支付详情发送到plugin.chargeCard

Charge charge = Charge();
charge.card = _getCardFromUI(); // 用户输入的信用卡信息
charge
  ..amount = 2000 // 金额(单位为分)
  ..email = 'user@email.com' // 客户邮箱
  ..reference = _getReference() // 生成唯一参考ID
  ..putCustomField('Charged From', 'Flutter PLUGIN'); // 自定义字段

await plugin.chargeCard(context, charge: charge);

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

1 回复

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


flutter_theoaks_paystack 是一个用于在 Flutter 应用中集成 Paystack 支付的插件。Paystack 是一个流行的支付网关,广泛用于非洲地区的在线支付。通过这个插件,你可以轻松地在你的 Flutter 应用中集成 Paystack 支付功能。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 flutter_theoaks_paystack 插件的依赖:

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

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

2. 初始化 Paystack

在你的 Dart 代码中,首先需要初始化 Paystack。通常你可以在 main.dart 或某个初始化函数中进行初始化。

import 'package:flutter_theoaks_paystack/flutter_theoaks_paystack.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 Paystack
  PaystackPlugin.initialize(
    publicKey: 'your_public_key',  // 你的 Paystack 公钥
  );

  runApp(MyApp());
}

3. 发起支付

接下来,你可以在需要支付的地方调用 Paystack 的支付方法。通常,你需要提供用户的电子邮件、支付金额、以及一个回调函数来处理支付结果。

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

class PaymentScreen extends StatelessWidget {
  final PaystackPlugin _paystackPlugin = PaystackPlugin();

  Future<void> _makePayment() async {
    try {
      final Charge charge = Charge()
        ..amount = 10000  // 金额(以最小单位表示,例如 10000 表示 100.00 NGN)
        ..email = 'user@example.com'  // 用户的电子邮件
        ..reference = _getReference();  // 生成唯一的交易参考号

      final CheckoutResponse response = await _paystackPlugin.checkout(
        context,
        method: CheckoutMethod.card,  // 支付方式(卡支付)
        charge: charge,
      );

      if (response.status == true) {
        // 支付成功
        print('Payment successful: ${response.reference}');
      } else {
        // 支付失败
        print('Payment failed: ${response.message}');
      }
    } catch (e) {
      print('Error: $e');
    }
  }

  String _getReference() {
    // 生成唯一的交易参考号
    return 'ref_${DateTime.now().millisecondsSinceEpoch}';
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Pay with Paystack'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _makePayment,
          child: Text('Pay Now'),
        ),
      ),
    );
  }
}
回到顶部