Flutter支付集成插件paystack_standard的使用
Flutter支付集成插件paystack_standard的使用
Paystack Standard简化了Paystack的集成——无需暴露您的PUB_KEY。这是通过使用Paystack重定向实现的。
特性
- 提供Paystack的所有支付方式
开始使用
安装
在pubspec.yaml
文件中添加以下依赖:
flutter pub add paystack_standard
初始化交易
这一步需要在后端服务器上使用您的SECRET-KEY
来完成。参考
const https = require('https')
const params = JSON.stringify({
"email": "customer@email.com",
"amount": "20000"
})
const options = {
hostname: 'api.paystack.co',
port: 443,
path: '/transaction/initialize',
method: 'POST',
headers: {
Authorization: 'Bearer SECRET_KEY',
'Content-Type': 'application/json'
}
}
const req = https.request(options, res => {
let data = ''
res.on('data', (chunk) => {
data += chunk
});
res.on('end', () => {
console.log(JSON.parse(data))
})
}).on('error', error => {
console.error(error)
})
req.write(params)
req.end()
示例响应
{
"status": true,
"message": "Authorization URL created",
"data": {
"authorization_url": "https://checkout.paystack.com/0peioxfhpn",
"access_code": "0peioxfhpn",
"reference": "7PVGX8MEk85tgeEpVDtD"
}
}
返回一个authorization_url
——您的后端服务器应该将此URL发送到前端/客户端进行结账。
注意事项
请确保在初始化Paystack交易时设置您的重定向URL。
结账/支付
从后端服务器发送的authorization_url
作为唯一参数传递给Paystack Standard
接口。PaystackStandard.checkout
方法返回类型为CheckoutResponse
的对象,其中包含一个success - bool
和交易reference
。
PaystackStandard(context).checkout(checkoutUrl: "<authorization_url>").then((response){
// 这里检查是否成功 - 需要通过后端服务器验证交易状态
});
屏幕截图
![paystack_bank] ![paystack_cancel] ![paystack_card] ![paystack_transfer] ![paystack_ussd]
完整示例代码
import 'package:flutter/material.dart';
import 'package:paystack_standard/paystack_standard.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
GestureDetector(
onTap: () {
PaystackStandard(context)
.checkout(checkoutUrl: "https://checkout.paystack.com/c3inl5xppg4z5qo");
},
child: Text(
"Pay 1000N",
style: Theme.of(context).textTheme.headlineMedium,
),
),
],
),
),
);
}
}
更多关于Flutter支付集成插件paystack_standard的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件paystack_standard的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter应用中集成Paystack支付插件paystack_standard
的示例代码。这个示例将展示如何进行基本的支付初始化、支付请求以及处理支付结果。
首先,确保你已经在pubspec.yaml
文件中添加了paystack_standard
依赖:
dependencies:
flutter:
sdk: flutter
paystack_standard: ^最新版本号 # 替换为当前最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,在你的Flutter应用中,你需要按照以下步骤进行支付集成:
- 配置Paystack密钥:
在你的应用的入口文件(通常是main.dart
或者一个专门用于初始化的文件)中,配置Paystack的公钥和私钥。这些密钥应该从Paystack仪表盘中获取。
import 'package:paystack_standard/paystack_standard.dart';
import 'package:flutter/material.dart';
void main() {
// 初始化Paystack
PaystackPlugin.init(
publicKey: '你的公钥', // 替换为你的Paystack公钥
secretKey: '你的私钥', // 替换为你的Paystack私钥(注意:私钥通常不在客户端使用,这里仅作为示例)
encryptionKey: '你的加密密钥', // 替换为你的加密密钥(如果需要)
);
runApp(MyApp());
}
注意:在实际应用中,私钥不应该在客户端代码中暴露。通常,支付请求会通过你的后端服务器进行,后端服务器会使用私钥来生成必要的支付令牌等信息。
- 发起支付请求:
在你的支付页面上,你可以使用PaystackPlugin.startTransaction
方法来发起支付请求。
import 'package:flutter/material.dart';
import 'package:paystack_standard/paystack_standard.dart';
class PaymentPage extends StatefulWidget {
@override
_PaymentPageState createState() => _PaymentPageState();
}
class _PaymentPageState extends State<PaymentPage> {
Future<void> _makePayment() async {
try {
// 发起支付请求
String? response = await PaystackPlugin.startTransaction(
amount: 1000, // 支付金额(单位:奈拉,Naira)
email: '用户的邮箱地址',
phone: '用户的电话号码',
reference: '唯一的交易参考号', // 确保每次交易都是唯一的
currency: 'NGN', // 货币代码
// 其他可选参数,如metadata等,可以根据需要添加
);
// 处理支付响应
if (response != null) {
// 解析响应数据,通常包含支付状态等信息
print('支付响应: $response');
}
} catch (e) {
// 处理错误
print('支付错误: $e');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('支付页面'),
),
body: Center(
child: ElevatedButton(
onPressed: _makePayment,
child: Text('发起支付'),
),
),
);
}
}
- 处理支付结果:
支付完成后,Paystack通常会重定向用户到一个指定的回调URL,或者通过某种方式通知你的后端服务器支付结果。你应该在后端服务器上处理这些回调,并更新你的应用状态。
由于支付结果处理涉及到后端逻辑,这里不展示具体的代码。但通常,你会在后端接收到Paystack的支付通知后,更新订单状态,并通过某种方式(如Firebase Cloud Messaging)通知客户端应用支付结果。
注意:在实际开发中,请务必遵循最佳实践,确保支付过程的安全性。特别是私钥的管理、交易数据的加密以及支付结果的验证等方面。
以上代码提供了一个基本的Flutter集成Paystack支付的示例。根据你的具体需求,你可能需要调整代码以适应你的应用逻辑和用户体验。