Flutter支付集成插件flutter_paystack_client的使用
Flutter支付集成插件flutter_paystack_client的使用
flutter_paystack_client
是一个用于通过Paystack支付网关进行支付的Flutter插件,支持Web和移动设备。它作为 flutter_paystack
的一个包装器。
🚀 安装
要在项目中使用此插件,请在 pubspec.yaml
文件中添加 flutter_paystack_client
作为依赖项:
dependencies:
flutter_paystack_client: ^latest_version
然后,在您的小部件的 initState
方法中初始化插件:
import 'package:flutter_paystack_client/flutter_paystack_client.dart';
class _PaymentPageState extends State<PaymentPage> {
var publicKey = '[YOUR_PAYSTACK_PUBLIC_KEY]';
[@override](/user/override)
void initState() {
super.initState();
PaystackClient.initialize(publicKey);
}
}
Web
对于Web平台,需要在 index.html
文件中包含Paystack JS脚本:
<script src="https://js.paystack.co/v1/inline.js"></script>
使用方法
下面是如何使用 flutter_paystack_client
创建并处理支付请求的基本示例:
Charge charge = Charge()
..amount = 10000 // 支付金额,单位为最小货币单位(如分)
..reference = _getReference() // 唯一交易参考号
..email = 'customer@email.com'; // 用户邮箱
CheckoutResponse response = await PaystackPlugin.checkout(
context,
charge: charge,
);
当 PaystackClient.checkout()
返回时,建议在后端验证支付是否成功。
示例代码
以下是一个完整的示例demo,展示了如何集成和使用 flutter_paystack_client
插件:
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_paystack_client/flutter_paystack_client.dart';
// 假设.env文件中定义了paystackPublicKey变量
import '.env.dart';
const String appName = 'Paystack Example';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await PaystackClient.initialize(paystackPublicKey);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: appName,
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
[@override](/user/override)
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
String _email = '';
int _amount = 0;
String _message = '';
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Paystack Client Test'),
),
body: Padding(
padding: EdgeInsets.symmetric(
horizontal: MediaQuery.of(context).size.width / 8,
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
_message,
style: TextStyle(
fontWeight: FontWeight.w600,
color: Colors.deepPurple,
),
),
const SizedBox(height: 10),
TextField(
decoration: InputDecoration(
labelText: 'Email',
),
keyboardType: TextInputType.emailAddress,
onChanged: (val) {
_email = val;
},
),
TextField(
decoration: InputDecoration(
labelText: 'Amount',
),
keyboardType: TextInputType.number,
onChanged: (val) {
try {
_amount = (double.parse(val) * 100).toInt();
} catch (e) {}
},
),
const SizedBox(height: 20),
ElevatedButton(
onPressed: () async {
setState(() {
_message = '';
});
final charge = Charge()
..email = _email
..amount = _amount
..reference = 'ref_${DateTime.now().millisecondsSinceEpoch}';
final res =
await PaystackClient.checkout(context, charge: charge);
if (res.status) {
_message = 'Charge was successful. Ref: ${res.reference}';
} else {
_message = 'Failed: ${res.message}';
}
setState(() {});
},
child: Text('Checkout'),
),
],
),
),
);
}
}
更多关于Flutter支付集成插件flutter_paystack_client的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件flutter_paystack_client的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中集成和使用flutter_paystack_client
插件进行支付的代码示例。这个插件允许你使用Paystack进行支付集成。
第一步:添加依赖
首先,你需要在你的pubspec.yaml
文件中添加flutter_paystack_client
依赖:
dependencies:
flutter:
sdk: flutter
flutter_paystack_client: ^x.y.z # 请使用最新版本号替换x.y.z
然后运行flutter pub get
来安装依赖。
第二步:配置Android和iOS
Android
在android/app/src/main/AndroidManifest.xml
中添加必要的权限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
iOS
确保在ios/Runner/Info.plist
中配置了适当的网络权限,例如:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
第三步:初始化Paystack
在你的Flutter应用中,你需要初始化Paystack并设置公钥。
import 'package:flutter/material.dart';
import 'package:flutter_paystack_client/flutter_paystack_client.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: PaystackIntegration(),
),
);
}
}
class PaystackIntegration extends StatefulWidget {
@override
_PaystackIntegrationState createState() => _PaystackIntegrationState();
}
class _PaystackIntegrationState extends State<PaystackIntegration> {
final String publicKey = 'YOUR_PAYSTACK_PUBLIC_KEY'; // 替换为你的Paystack公钥
@override
void initState() {
super.initState();
PaystackPlugin.initialize(publicKey: publicKey);
}
void makePayment() async {
try {
var result = await PaystackPlugin.startTransaction(
amount: 1000, // 金额,单位:分(例如1000代表10.00)
email: 'customer@example.com',
phoneNumber: '+2348012345678',
currency: 'NGN',
ref: 'unique-transaction-ref',
metadata: {
'custom_fields': [
{'display_name': 'Item Purchased', 'value': 'T-Shirt'},
{'display_name': 'Quantity', 'value': '2'},
],
},
);
if (result.status == 'success') {
print('Payment successful: ${result.data}');
} else if (result.status == 'error') {
print('Payment error: ${result.message}');
}
} catch (e) {
print('Error initiating payment: $e');
}
}
@override
Widget build(BuildContext context) {
return Center(
child: ElevatedButton(
onPressed: makePayment,
child: Text('Make Payment'),
),
);
}
}
注意事项
- 公钥:确保你已经从Paystack获取了公钥,并将其替换到代码中的
YOUR_PAYSTACK_PUBLIC_KEY
位置。 - 测试环境:在开发过程中,建议使用Paystack的测试环境,包括测试公钥和测试卡。
- 安全性:不要在客户端代码中硬编码敏感信息,如私钥。这些信息应该在服务器端安全地处理。
- 处理回调:在真实的应用中,你需要处理支付成功或失败的回调,并根据结果更新用户界面或执行相应的业务逻辑。
这个示例展示了如何在Flutter应用中集成Paystack进行支付。你可以根据具体需求进一步定制和扩展这个代码。