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
更多关于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
来安装依赖。
接下来,你需要进行一些初始化设置,并在你的应用中调用支付功能。以下是一个简单的示例:
- 初始化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(),
);
}
}
- 创建支付界面:
在你的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,你需要根据实际需要转换金额。email
和phoneNumber
字段是可选的,但提供这些信息可以提高用户体验。metadata
字段允许你传递自定义数据,这些数据会在支付成功后返回给你。
这个示例只是一个基本的实现,你可能需要根据自己的应用需求进行进一步的定制和错误处理。