Flutter支付插件flutter_paystack_payment的使用
Flutter支付插件 flutter_paystack_payment
的使用
概述
flutter_paystack_payment
是一个用于在Flutter应用中集成Paystack支付系统的插件。它支持所有平台,并提供了多种支付方式。
特性
当前支持的功能:
- 卡支付
- 银行转账
开发中的功能:
- USSD支付
- QR码支付
- 移动货币支付
安装
在您的 pubspec.yaml
文件中添加 flutter_paystack_payment
作为依赖项:
dependencies:
flutter_paystack_payment: ^latest_version
然后在您的Widget的 initState
方法中初始化插件:
import 'package:flutter_paystack_payment/flutter_paystack_payment.dart';
class _ExamplePaymentPageState extends State<ExamplePaymentPage> {
var publicKey = 'Add your Paystack Public Key Here';
final plugin = PaystackPayment();
[@override](/user/override)
void initState() {
super.initState();
plugin.initialize(publicKey: publicKey);
}
}
新特性
现在可以扫描卡片而不是手动输入卡信息。
设置 - Android
需要添加权限以使用相机:
<uses-permission android:name="android.permission.CAMERA" />
设置 - iOS
需要添加权限以使用相机,并提供使用原因:
<key>NSCameraUsageDescription</key>
<string>To Scan Details on Card While trying to process payment</string>
支付流程
有两种方法可以进行支付:
- Checkout(推荐):插件处理所有支付过程,除了交易初始化和验证。
- Charge Card:开发者处理所有回调和UI状态。
1. Checkout(推荐)
通过初始化一个包含金额、电子邮件和访问代码或引用的 Charge
对象来开始支付流程:
Charge charge = Charge()
..amount = 10000 // 金额单位为最小货币单位
..reference = _getReference() // 或者使用 accessCode
..email = 'customer@email.com';
CheckoutResponse response = await plugin.checkout(
context,
method: CheckoutMethod.card, // 默认是 CheckoutMethod.selectable
charge: charge,
);
如果 CheckoutMethod
是 bank
或 selectable
,则必须提供 accessCode
。
2. Charge Card
可以选择在本地或通过后端初始化支付。
A. 后端初始化(推荐)
- 在后端发送HTTP POST请求到 Paystack 初始化交易。
- 成功后返回响应中的
access_code
,创建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);
// 使用响应
}
示例项目
以下是一个完整的示例项目,演示如何在Flutter应用程序中使用 flutter_paystack_payment
插件。
import 'package:flutter/material.dart';
import 'package:flutter_paystack_payment/flutter_paystack_payment.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Paystack Example',
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
[@override](/user/override)
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
final plugin = PaystackPayment();
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
[@override](/user/override)
void initState() {
super.initState();
plugin.initialize(publicKey: 'your_public_key_here');
}
void _startPayment() async {
Charge charge = Charge()
..amount = 10000
..email = 'customer@example.com'
..reference = 'some_unique_reference';
CheckoutResponse response = await plugin.checkout(
context,
method: CheckoutMethod.card,
charge: charge,
);
if (response.status) {
_showMessage('Payment successful: ${response.message}');
} else {
_showMessage('Payment failed: ${response.message}');
}
}
void _showMessage(String message) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(message)));
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
key: _scaffoldKey,
appBar: AppBar(title: Text('Paystack Example')),
body: Center(
child: ElevatedButton(
onPressed: _startPayment,
child: Text('Start Payment'),
),
),
);
}
}
更多关于Flutter支付插件flutter_paystack_payment的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付插件flutter_paystack_payment的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用flutter_paystack_payment
插件进行支付的示例代码。这个插件允许你集成Paystack支付网关到你的Flutter应用中。
首先,确保你已经在你的pubspec.yaml
文件中添加了flutter_paystack_payment
依赖:
dependencies:
flutter:
sdk: flutter
flutter_paystack_payment: ^1.0.10 # 请检查最新版本号
然后运行flutter pub get
来安装依赖。
接下来,你需要进行一些初始化设置,包括获取Paystack的公钥(public key)。你可以在Paystack的仪表板上找到这个公钥。
下面是一个完整的示例,展示如何在Flutter应用中使用flutter_paystack_payment
插件:
import 'package:flutter/material.dart';
import 'package:flutter_paystack_payment/flutter_paystack_payment.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Paystack Payment Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: PaymentScreen(),
);
}
}
class PaymentScreen extends StatefulWidget {
@override
_PaymentScreenState createState() => _PaymentScreenState();
}
class _PaymentScreenState extends State<PaymentScreen> {
final String publicKey = 'YOUR_PAYSTACK_PUBLIC_KEY'; // 替换为你的Paystack公钥
void initiatePayment() async {
try {
PaystackPayment paystackPayment = PaystackPayment();
String email = "test@example.com";
int amount = 1000; // 金额,单位为奈拉(Naira),这里示例为1000奈拉
String reference = DateTime.now().millisecondsSinceEpoch.toString();
Map<String, dynamic> result = await paystackPayment.initializePayment(
publicKey: publicKey,
email: email,
amount: amount,
currency: 'NGN',
reference: reference,
// 其他可选参数,如metadata等
);
if (result['status']) {
print("Payment successful!");
// 处理支付成功后的逻辑
} else {
print("Payment failed: ${result['message']}");
// 处理支付失败后的逻辑
}
} catch (e) {
print("Error initiating payment: $e");
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Paystack Payment Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: initiatePayment,
child: Text('Initiate Payment'),
),
),
);
}
}
在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个按钮,点击按钮将启动Paystack支付流程。
注意:
- 替换
YOUR_PAYSTACK_PUBLIC_KEY
为你的实际Paystack公钥。 - 金额单位为奈拉(NGN),你可以根据需要调整。
reference
是一个唯一标识符,通常使用当前时间的毫秒数,但你可以根据需求生成。- 根据你的应用需求,你可以添加更多的支付参数,如
metadata
等。
确保在实际部署前,在Paystack仪表板上配置好你的应用,并遵循Paystack的安全和合规要求。