Flutter支付集成插件paystack的使用

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

Flutter支付集成插件paystack的使用

Paystack

pub package package publisher

一个在Dart中实现的Paystack后端客户端库,受Python生态系统中的Pypaystack2启发。

特性

此库实现了Paystack所有端点的包装。PaystackClient类具有绑定方法,可以用于访问不同的包装方法。这些包装方法根据Paystack的API参考进行分组。例如,PaystackClient.transactions绑定提供了Paystack交易API的所有端点的包装方法。即,PaystackClient.transactions.initialize是Paystack初始化交易端点的包装方法。

PaystackClient类上的绑定

绑定
PaystackClient.applePay
PaystackClient.bulkCharges
PaystackClient.charges
PaystackClient.customers
PaystackClient.dedicatedVirtualAccounts
PaystackClient.disputes
PaystackClient.integration
PaystackClient.miscellaneous
PaystackClient.paymentPages
PaystackClient.paymentRequests
PaystackClient.plans
PaystackClient.products
PaystackClient.refunds
PaystackClient.settlements
PaystackClient.subaccounts
PaystackClient.subscriptions
PaystackClient.terminals
PaystackClient.transactions
PaystackClient.transactionSplits
PaystackClient.transfers
PaystackClient.transferControl
PaystackClient.transferRecipient
PaystackClient.verification

开始使用

将库添加到您的客户端包中:

dart pub add paystack

使用方法

查看/example文件夹以获取更多示例。

import 'package:paystack/paystack.dart';

void main() async {
  // 可选参数secretKey如果在环境变量中提供,则可以省略。
  const client = PaystackClient(secretKey: "<your paystack secret key>");
  const response = await client.applePay.all(false);
  print(response.statusCode);
  print(response.data);
}

完整示例

以下是一个完整的示例,展示了如何初始化交易和检索客户信息。

import 'package:paystack/paystack.dart';

void main() async {
  // The secretKey optional name parameter can be omitted if provided in the
  // environmental variables. as 'PAYSTACK_SECRET_KEY'
  var client = PaystackClient(secretKey: "<your paystack secret key>");
  
  // 检索您集成中的所有客户。
  var response = await client.customers.all();
  print("The status code of the last call is ${response.statusCode}");
  print(response.data);

  // 在您的集成上初始化一个交易。
  response = await client.transactions.initialize(10000, "johndoe@example.com");
  print(response.data);
}

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

1 回复

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


在Flutter项目中集成Paystack支付插件,你可以使用flutter_paystack这个社区维护的插件。以下是一个简单的代码案例,展示了如何在Flutter应用中集成和使用Paystack支付。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加flutter_paystack依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_paystack: ^2.0.0  # 请检查最新版本号

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

2. 配置Android和iOS

Android

在你的android/app/src/main/AndroidManifest.xml文件中添加以下权限:

<uses-permission android:name="android.permission.INTERNET"/>

然后,在android/app/build.gradle文件中添加以下内容以启用ProGuard(可选):

android {
    ...
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

proguard-rules.pro文件中添加规则以避免混淆Paystack相关的类:

-keep class com.paystack.** { *; }
-keep interface com.paystack.** { *; }

iOS

确保你的Info.plist文件中有以下权限配置(如果需要的话):

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

3. 初始化Paystack

在你的Flutter项目的lib目录下创建一个新的Dart文件,比如paystack_service.dart,用于初始化Paystack并进行支付。

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

class PaystackService {
  static const String publicKey = 'YOUR_PAYSTACK_PUBLIC_KEY';  // 替换为你的Paystack公钥

  static Future<void> initializePaystack() async {
    await PaystackPlugin.initialize(
      publicKey: publicKey,
      acceptCardPayments: true,
      acceptMpesaPayments: false, // 根据需要启用或禁用
      acceptBankTransfers: false, // 根据需要启用或禁用
      acceptMobileMoneyPayments: false, // 根据需要启用或禁用
      acceptBitcoinPayments: false, // 根据需要启用或禁用
      onInitializeComplete: (result) {
        print('Paystack initialized: ${result.status}');
      },
      onInitializeError: (error) {
        print('Error initializing Paystack: ${error.localizedMessage}');
      },
    );
  }

  static Future<void> makePayment(BuildContext context, double amount) async {
    try {
      await PaystackPlugin.startTransaction(
        amount: amount,
        currency: 'USD',  // 替换为你的货币代码
        email: 'user@example.com',  // 替换为用户的邮箱
        phoneNumber: '+1234567890',  // 替换为用户的电话号码
        firstName: 'John',  // 替换为用户的名字
        lastName: 'Doe',  // 替换为用户的姓氏
        reference: Uuid().v4(),  // 生成一个唯一的支付引用
        metadata: {
          'custom_field': 'custom_value',  // 添加自定义元数据
        },
        onTransactionComplete: (result) {
          print('Transaction complete: ${result.status}');
          Navigator.of(context).pop();  // 支付完成后关闭支付页面
          // 处理支付结果,例如更新UI或发送服务器请求
        },
        onTransactionCancel: () {
          print('Transaction canceled');
          Navigator.of(context).pop();  // 支付取消后关闭支付页面
        },
        onTransactionError: (error) {
          print('Transaction error: ${error.localizedMessage}');
          Navigator.of(context).pop();  // 支付错误后关闭支付页面
        },
      );
    } catch (e) {
      print('Error starting transaction: $e');
    }
  }
}

4. 使用Paystack进行支付

在你的主页面或任何需要发起支付的地方,调用PaystackService中的方法。

import 'package:flutter/material.dart';
import 'package:uuid/uuid.dart';
import 'paystack_service.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Paystack Integration'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              PaystackService.initializePaystack();
              PaystackService.makePayment(context, 100.0);  // 发起支付100美元
            },
            child: Text('Pay Now'),
          ),
        ),
      ),
    );
  }
}

注意事项

  1. 替换公钥:确保你替换了YOUR_PAYSTACK_PUBLIC_KEY为你在Paystack后台获取的公钥。
  2. 处理支付结果:在onTransactionComplete回调中处理支付结果,例如更新UI或发送服务器请求以验证支付状态。
  3. 测试环境:在开发过程中,使用Paystack的测试卡片进行测试,确保支付流程正常工作。

这个代码案例提供了一个基本的框架,你可以根据需要进行扩展和修改。

回到顶部