Flutter支付网关插件paystack_gateway_payment的使用

Flutter支付网关插件paystack_gateway_payment的使用

A Flutter package that integrates the Paystack payment gateway to facilitate online transactions. 它提供了易于使用的服务来初始化和验证支付,并且在您的Flutter应用中提供了一个可定制的支付按钮小部件。

特性

  • 使用Paystack API安全地初始化支付。
  • 验证交易状态。
  • 可定制的Paystack支付按钮。
  • WebView来处理Paystack支付流程。

安装

在你的pubspec.yaml文件中添加以下依赖:

dependencies:
  paystack_gateway_payment: ^1.0.0

然后运行:

flutter pub get

使用

1. 设置Paystack服务

要初始化Paystack服务,你需要提供你的Paystack密钥:

import 'package:paystack_gateway_payment/services/paystack_service.dart';

final paystackService = PaystackService(secretKey: 'your-paystack-secret-key');
2. 初始化交易

要初始化支付,调用带有必要参数的initializeTransaction方法:

PaystackResponse response = await paystackService.initializeTransaction(
  email: 'user@example.com',
  amount: 1000,
  callbackUrl: 'https://your-callback-url.com',
);

这将返回一个包含交易详情的PaystackResponse,包括一个完成支付的授权URL。

3. 支付按钮

使用PaystackButton小部件在你的应用中提供一个支付按钮:

import 'package:paystack_gateway_payment/widgets/paystack_button.dart';

PaystackButton(
  paystackService: paystackService,
  email: 'user@example.com',
  amount: 1000,
  callbackUrl: 'https://your-callback-url.com',
  onSuccess: (reference) {
    print('Payment successful: $reference');
  },
  onError: (error) {
    print('Payment error: $error');
  },
)
4. WebView处理支付流程

该包包含一个PaystackWebView来处理Paystack支付过程:

import 'package:paystack_gateway_payment/paystack_webview.dart';

// 导航到WebView页面并传入授权URL
Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) => PaystackWebView(
      authorizationUrl: response.data['authorization_url'],
      onSuccess: () {
        print('Payment successful');
      },
      onError: (error) {
        print('Payment failed: $error');
      },
    ),
  ),
);

错误处理

该包包含自定义异常用于错误处理。如果交易失败或有无效参数,它将抛出一个带有相关信息消息的PaystackException

例如:

try {
  // 一些与支付相关的操作
} catch (e) {
  if (e is PaystackException) {
    print('Error: ${e.message}');
  }
}

示例

以下是一个完整的示例:

import 'package:flutter/material.dart';
import 'package:paystack_gateway_payment/services/paystack_service.dart';
import 'package:paystack_gateway_payment/widgets/paystack_button.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Paystack Payment Example',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: PaymentScreen(),
    );
  }
}

class PaymentScreen extends StatelessWidget {
  // 替换为你的实际Paystack密钥
  final String paystackSecretKey = 'sk_test_xxxxxxxx';

  [@override](/user/override)
  Widget build(BuildContext context) {
    final paystackService = PaystackService(secretKey: paystackSecretKey);

    return Scaffold(
      appBar: AppBar(title: const Text('Paystack Payment Example')),
      body: Center(
        child: PaystackButton(
          paystackService: paystackService,
          email: 'testuser@example.com',
          amount: 5000, // 金额以科博为单位(例如,5000 科博 = 50 NGN)
          callbackUrl: 'https://example.com/callback',
          buttonText: const Text('Pay Now'),
          paymentScreenTitle: '完成您的支付',
          onTransactionComplete: (status, response) {
            // 处理交易完成
            debugPrint('Transaction Status: $status');
            if (response != null) {
              debugPrint('Transaction Data: ${response.toString()}');
            }
          },
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter应用中使用paystack_gateway_payment插件进行支付的代码示例。这个插件允许你集成Paystack支付网关到你的Flutter应用中。

首先,确保你已经添加了paystack_gateway_payment到你的pubspec.yaml文件中:

dependencies:
  flutter:
    sdk: flutter
  paystack_gateway_payment: ^最新版本号  # 请替换为实际的最新版本号

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

接下来,你需要进行一些初始化设置,并在你的应用中调用支付功能。以下是一个简单的示例:

  1. 初始化Paystack配置

在你的Flutter应用的入口文件(通常是main.dart)中,进行Paystack的初始化。

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化Paystack配置
  PaystackPlugin.initialize(
    publicKey: '你的Public Key', // 请替换为你的Paystack公钥
    encryptionKey: '你的Encryption Key', // 可选,如果你使用了Paystack的加密功能
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeScreen(),
    );
  }
}
  1. 创建支付界面

在你的HomeScreen或其他屏幕中,添加一个按钮来触发支付流程。

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

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  void _startPayment() async {
    try {
      var response = await PaystackPlugin.makePayment(
        amount: 1000, // 支付金额,单位为kobo(100 kobo = 1 Nigerian Naira),这里为10 Nigerian Naira
        email: '用户的邮箱地址',
        phoneNumber: '用户的电话号码',
        currency: 'NGN', // 货币代码
        metadata: {
          'custom_fields': 'custom values', // 你可以传递任何自定义数据
        },
        returnUrl: 'https://yourapp.com/success', // 支付成功后的回调URL
      );

      // 处理支付响应
      if (response['status']) {
        print('支付成功: ${response['data']}');
      } else {
        print('支付失败: ${response['message']}');
      }
    } catch (e) {
      print('支付过程中发生错误: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Paystack支付示例'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _startPayment,
          child: Text('开始支付'),
        ),
      ),
    );
  }
}

在这个示例中,当用户点击“开始支付”按钮时,会调用_startPayment方法,该方法会触发Paystack支付流程。支付完成后,无论成功还是失败,都会打印出相应的信息。

注意

  • 请确保你已经在Paystack后台配置了正确的回调URL和公钥。
  • amount字段的单位是kobo,你需要根据实际需要转换金额。
  • emailphoneNumber字段是可选的,但提供这些信息可以提高用户体验。
  • metadata字段允许你传递自定义数据,这些数据会在支付成功后返回给你。

这个示例只是一个基本的实现,你可能需要根据自己的应用需求进行进一步的定制和错误处理。

回到顶部