Flutter支付集成插件paystack_trans_charges_to_cus的使用
Flutter支付集成插件paystack_trans_charges_to_cus的使用
paystack_trans_charges_to_cus
A new Flutter project Util Library for passing Paystack transaction charges to customer
使用说明
本项目是一个用于在Flutter应用中集成Paystack支付功能的工具库。通过此插件,您可以轻松地将Paystack交易费用转嫁给客户。
功能概述
- 将Paystack支付的交易费用直接从客户支付金额中扣除。
- 支持多种货币的交易。
- 提供详细的回调机制以处理支付结果。
安装与配置
1. 添加依赖
在您的pubspec.yaml文件中添加以下依赖:
dependencies:
  paystack_trans_charges_to_cus: ^1.0.0
然后运行以下命令以安装依赖:
flutter pub get
2. 配置Paystack密钥
在使用插件之前,您需要在Paystack平台注册并获取API密钥。将密钥添加到您的Flutter项目中。
示例代码
import 'package:paystack_trans_charges_to_cus/paystack_trans_charges_to_cus.dart';
void main() async {
  // 初始化Paystack密钥
  await PaystackTransChargesToCus.initialize(
    publicKey: "your_paystack_public_key",
    secretKey: "your_paystack_secret_key",
  );
  // 调用支付方法
  await PaystackTransChargesToCus.startPayment(
    amount: 10000, // 支付金额(单位为分)
    email: "customer@example.com", // 客户邮箱
    currency: "NGN", // 货币类型(例如:NGN表示尼日利亚奈拉)
    reference: "unique_reference_id", // 唯一交易标识符
  );
}
完整示例代码
以下是一个完整的示例,展示如何在Flutter应用中集成paystack_trans_charges_to_cus插件。
import 'package:flutter/material.dart';
import 'package:paystack_trans_charges_to_cus/paystack_trans_charges_to_cus.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text("Paystack Payment Example")),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              // 初始化Paystack密钥
              await PaystackTransChargesToCus.initialize(
                publicKey: "your_paystack_public_key",
                secretKey: "your_paystack_secret_key",
              );
              // 开始支付流程
              try {
                final result = await PaystackTransChargesToCus.startPayment(
                  amount: 10000, // 支付金额(单位为分)
                  email: "customer@example.com", // 客户邮箱
                  currency: "NGN", // 货币类型(例如:NGN表示尼日利亚奈拉)
                  reference: "unique_reference_id", // 唯一交易标识符
                );
                if (result.success) {
                  print("支付成功!交易ID: ${result.transactionId}");
                } else {
                  print("支付失败!");
                }
              } catch (e) {
                print("支付过程中发生错误: $e");
              }
            },
            child: Text("发起支付"),
          ),
        ),
      ),
    );
  }
}
更多关于Flutter支付集成插件paystack_trans_charges_to_cus的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件paystack_trans_charges_to_cus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
paystack_trans_charges_to_cus 是一个 Flutter 插件,用于在集成 Paystack 支付时,将交易费用转嫁给客户。这个插件可以帮助开发者在处理支付时,将 Paystack 的交易费用(如手续费)直接添加到客户的支付金额中,而不是由商家承担。
以下是如何在 Flutter 项目中使用 paystack_trans_charges_to_cus 插件的步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml 文件中添加 paystack_trans_charges_to_cus 插件的依赖。
dependencies:
  flutter:
    sdk: flutter
  paystack_trans_charges_to_cus: ^1.0.0  # 请使用最新版本
然后运行 flutter pub get 来获取依赖。
2. 初始化 Paystack
在使用插件之前,你需要初始化 Paystack。通常,你需要在应用的 main.dart 文件中进行初始化。
import 'package:paystack_trans_charges_to_cus/paystack_trans_charges_to_cus.dart';
void main() {
  PaystackPlugin.initialize(
    publicKey: 'your_paystack_public_key',
  );
  runApp(MyApp());
}
3. 使用插件进行支付
接下来,你可以在需要支付的地方使用 paystack_trans_charges_to_cus 插件来处理支付。
import 'package:flutter/material.dart';
import 'package:paystack_trans_charges_to_cus/paystack_trans_charges_to_cus.dart';
class PaymentScreen extends StatefulWidget {
  [@override](/user/override)
  _PaymentScreenState createState() => _PaymentScreenState();
}
class _PaymentScreenState extends State<PaymentScreen> {
  final _formKey = GlobalKey<FormState>();
  final _emailController = TextEditingController();
  final _amountController = TextEditingController();
  Future<void> _processPayment() async {
    if (_formKey.currentState!.validate()) {
      final email = _emailController.text;
      final amount = int.parse(_amountController.text) * 100; // 转换为 kobo
      try {
        final response = await PaystackPlugin.chargeCard(
          email: email,
          amount: amount,
          card: Card(
            number: '4084084084084081', // 测试卡号
            cvc: '408', // 测试 CVC
            expiryMonth: 12, // 测试过期月份
            expiryYear: 2025, // 测试过期年份
          ),
          transactionChargesToCustomer: true, // 将交易费用转嫁给客户
        );
        if (response.status == true) {
          // 支付成功
          ScaffoldMessenger.of(context).showSnackBar(
            SnackBar(content: Text('Payment successful!')),
          );
        } else {
          // 支付失败
          ScaffoldMessenger.of(context).showSnackBar(
            SnackBar(content: Text('Payment failed: ${response.message}')),
          );
        }
      } catch (e) {
        // 处理异常
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(content: Text('Error: $e')),
        );
      }
    }
  }
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Paystack Payment'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Form(
          key: _formKey,
          child: Column(
            children: [
              TextFormField(
                controller: _emailController,
                decoration: InputDecoration(labelText: 'Email'),
                validator: (value) {
                  if (value!.isEmpty) {
                    return 'Please enter your email';
                  }
                  return null;
                },
              ),
              TextFormField(
                controller: _amountController,
                decoration: InputDecoration(labelText: 'Amount (in Naira)'),
                keyboardType: TextInputType.number,
                validator: (value) {
                  if (value!.isEmpty) {
                    return 'Please enter the amount';
                  }
                  return null;
                },
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: _processPayment,
                child: Text('Pay Now'),
              ),
            ],
          ),
        ),
      ),
    );
  }
} 
        
       
             
             
            

