Flutter支付集成插件flutter_paystack_naza的使用

Flutter支付集成插件flutter_paystack_naza的使用

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

安装

要使用此插件,在pubspec.yaml文件中添加flutter_paystack作为依赖项。

dependencies:
  flutter_paystack: ^最新版本号

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

import 'package:flutter_paystack_naza/flutter_paystack.dart';

class _PaymentPageState extends State<PaymentPage> {
  var publicKey = '[YOUR_PAYSTACK_PUBLIC_KEY]';
  final plugin = PaystackPlugin();

  @override
  void initState() {
    plugin.initialize(publicKey: publicKey);
  }
}

无需其他配置——插件开箱即用。

进行支付

1. 结账(推荐)

这是最简单的方法;插件处理所有涉及的支付过程(除了交易初始化和验证,这些应该从你的后端进行)。

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

Charge charge = Charge()
      ..amount = 10000
      ..reference = _getReference()
      ..email = 'customer@email.com';

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

请注意,如果方法是CheckoutMethod.bankCheckoutMethod.selectable,则需要accessCode

plugin.checkout()返回支付状态和详细信息的实例CheckoutResponse

建议在plugin.checkout()返回时,在你的后端验证支付。

2. 充值卡

你可以选择在本地或通过你的后端初始化支付。

A. 通过你的后端初始化(推荐)
  1. a. 首先,向https://api.paystack.co/transaction/initialize发送HTTP POST请求以初始化交易。

  2. b. 如果一切顺利,初始化请求将返回一个包含access_code的响应。然后创建一个带有访问码和卡片详情的Charge对象。这个charge将传递给plugin.chargeCard()函数进行支付:

PaymentCard _getCardFromUI() {
  // 使用必须参数
  return PaymentCard(
    number: cardNumber,
    cvc: cvv,
    expiryMonth: expiryMonth,
    expiryYear: expiryYear,
  );
}

_chargeCard(String accessCode) async {
  var charge = Charge()
    ..accessCode = accessCode
    ..card = _getCardFromUI();

  final response = await plugin.chargeCard(context, charge: charge);
  // 使用响应
}

如果response.status为true,则交易成功。请参阅CheckoutResponse文档获取更多信息。

B. 在本地初始化

直接将支付详情传递给plugin.chargeCard

Charge charge = Charge();
charge.card = _getCardFromUI();
charge
  ..amount = 2000
  ..email = 'user@email.com'
  ..reference = _getReference()
  ..putCustomField('Charged From', 'Flutter PLUGIN');

_chargeCard();

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

1 回复

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


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

以下是如何使用 flutter_paystack_naza 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  flutter_paystack_naza: ^1.0.0

然后运行 flutter pub get 来安装依赖。

2. 初始化 Paystack

在你的 Dart 文件中,导入 flutter_paystack_naza 并初始化 Paystack:

import 'package:flutter_paystack_naza/flutter_paystack_naza.dart';

void initializePaystack() {
  PaystackPlugin.initialize(publicKey: 'your_public_key');
}

your_public_key 替换为你在 Paystack 控制台中获得的公钥。

3. 发起支付

接下来,你可以使用 PaystackPlugin 发起支付。以下是一个简单的例子:

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

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

class _PaymentPageState extends State<PaymentPage> {
  final plugin = PaystackPlugin();

  [@override](/user/override)
  void initState() {
    super.initState();
    plugin.initialize(publicKey: 'your_public_key');
  }

  Future<void> makePayment() async {
    Charge charge = Charge()
      ..amount = 10000 // 金额单位为 kobo (例如,10000 kobo = 100 Naira)
      ..email = 'customer@example.com'
      ..reference = 'ref_${DateTime.now().millisecondsSinceEpoch}'
      ..card = PaymentCard(
        number: '4084084084084081',
        cvc: '408',
        expiryMonth: 12,
        expiryYear: 2025,
      );

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

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

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