Flutter支付插件flutter_bani_checkout的使用
Flutter支付插件flutter_bani_checkout的使用
本README描述了该包。如果你将此包发布到pub.dev,那么此README的内容将会出现在你的包的首页。
安装
在工作区终端运行以下命令:
flutter pub add flutter_bani_checkout
在应用中导入该包:
import 'package:flutter_bani_checkout/flutter_bani_checkout.dart';
此包使用Riverpod。因此,我们需要用ProviderScope包装MyApp
方法,如下面所示:
void main() {
runApp(const ProviderScope(
child: MyApp(),
));
}
Android要求
在android/app/build.gradle
中,应将最低SDK版本设置为19。
android {
defaultConfig {
minSdkVersion 19
}
}
功能
你可以单独在一个页面中使用BaniShopperCheckout
小部件,或者使用BaniShopper.checkoutModalSheet
底部弹窗。
BaniShopperCheckout
此小部件接受一个自定义类BaniObject
作为必需属性。
final String text; // 显示给用户的文本
final String amount; // 购买的金额
final String phoneNumber; // 用户的ITU标准电话号码,例如:+234 xxx xxxx xxxx
final String merchantKey; // 商户密钥
final String ref; // 交易参考。应是一个唯一字符串
final String email; // 用户邮箱
final String firstName; // 用户名
final String lastName; // 用户姓氏
final Map<String, dynamic> metaData; // 元数据
可以提供以下可选函数以在接收到Event Response
时通知你:
onClose
: 当小部件或模态框关闭或被取消时调用此函数。onSuccess
: 当成功完成交易时调用此函数。onCustomerExists
: 当确认有效客户时调用此函数。onCheckOutClose
: 在成功接收付款并关闭小部件后调用此函数。
EventResponse
类返回的包含事务参考和客户参考。
示例
BaniShopperCheckout(
baniObject: BaniObject(
text: "Pay with Bani",
amount: "200",
phoneNumber: "+23408039485758",
merchantKey: "pub_test_KB9A23HSYR327H5DKW45Y",
ref: "ref-${Random.secure().nextInt(900000) + 100000}",
email: "usercustomer@gmail.com",
firstName: "John",
lastName: "Doe",
metaData: {
"order_ref": "fake_0rderre6",
},
),
onSuccess: (eventResponse){
print("Success!");
},
onClose: (eventResponse) {
print(eventResponse.toString());
print("Closed!");
},
),
await BaniShopper.checkoutModalSheet(
context: context,
baniObject: BaniObject(
text: "Pay with Bani",
amount: "200",
phoneNumber: "+23408038475839",
merchantKey: "pub_test_KB9A23HSYR327H5DKW45Y",
ref: "ref-${Random.secure().nextInt(900000) + 100000}",
email: "usercustomer@gmail.com",
firstName: "John",
lastName: "Doe",
metaData: {
"order_ref": "fake_0rderre6",
},
),
// onClose: onClose,
// onSuccess: onSuccess,
// onCustomerExists: onCustomerExists,
)
查看示例包以获取工作演示。
引入Bani Shopper集成
在您的应用程序中集成Bani Shopper支付功能只需三个简单的步骤!
第一步
第一步需要收集你要发送给Bani Shopper的数据。以下是你可以传递的数据变量,其中collectorRef
是唯一必需的变量:
- 收集者引用(以前称为商户部落引用)
- 金额
- 交易参考
- 分支ID
- 自定义数据
String collectorRef = "BN-e78b38qwrt4bebz514ya1dzpz9";
String amount = "5000";
String transactionReference = "dsfWDFDFddfREEGDfREw";
String branchID = "21";
第二步
第二步是将这些变量放入payInBaniShopper
函数中。BaniShopper.payInBaniShopper
函数负责构造字符串并启动Bani Shopper,所有你在第一步中创建的变量都将被使用:
Future<void> payInBaniShopper({
required String? collectorRef,
String? amount,
String? transactionReference,
String? branchID,
Map<String, dynamic>? customData,
})
第三步
最后一步是最简单的!我们调用payInBaniShopper
函数!这是一个异步调用,所以等待其调用非常重要:
ElevatedButton(
onPressed: () async {
await payInBaniShopper(
collectorRef: collectorRef,
amount: amount,
branchID: branchID,
transactionReference: transactionReference,
customData: {
"is_internal": isInternal,
"order_id": orderID,
},
);
},
child: const Text("Launch Bani Shopper"),
),
更多关于Flutter支付插件flutter_bani_checkout的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付插件flutter_bani_checkout的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用flutter_bani_checkout
插件的一个示例代码案例。flutter_bani_checkout
插件通常用于集成支付功能,这里假设你已经在pubspec.yaml
文件中添加了依赖并运行了flutter pub get
。
1. 添加依赖
首先,确保你的pubspec.yaml
文件中包含以下依赖:
dependencies:
flutter:
sdk: flutter
flutter_bani_checkout: ^最新版本号 # 请替换为实际的最新版本号
2. 初始化支付插件
在你的main.dart
文件中或者任何你需要初始化支付插件的地方,进行初始化:
import 'package:flutter/material.dart';
import 'package:flutter_bani_checkout/flutter_bani_checkout.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
final FlutterBaniCheckout _flutterBaniCheckout = FlutterBaniCheckout();
@override
void initState() {
super.initState();
// 初始化支付插件,如果需要配置参数可以在这里进行
// _flutterBaniCheckout.initialize(...);
}
void _startPayment() async {
try {
final paymentResult = await _flutterBaniCheckout.startPayment(
amount: 100.0, // 支付金额
currencyCode: 'USD', // 货币代码
description: 'Test Payment', // 支付描述
// 其他可选参数根据插件文档添加
);
if (paymentResult.status == PaymentStatus.success) {
// 支付成功处理逻辑
print('Payment successful: ${paymentResult.data}');
} else if (paymentResult.status == PaymentStatus.failed) {
// 支付失败处理逻辑
print('Payment failed: ${paymentResult.errorMessage}');
} else if (paymentResult.status == PaymentStatus.canceled) {
// 支付取消处理逻辑
print('Payment canceled');
}
} catch (e) {
// 错误处理
print('An error occurred: $e');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Bani Checkout Example'),
),
body: Center(
child: ElevatedButton(
onPressed: _startPayment,
child: Text('Start Payment'),
),
),
);
}
}
3. 处理支付结果
在上面的代码中,_startPayment
方法启动支付流程,并处理支付结果。根据支付结果的状态(成功、失败、取消),执行相应的逻辑。
4. 运行应用
确保你已经按照插件文档的要求配置好必要的支付参数(如API密钥等),然后运行你的Flutter应用。点击按钮将启动支付流程,并显示支付结果。
注意事项
- API密钥和其他敏感信息:确保不要在客户端代码中硬编码API密钥或其他敏感信息。通常这些信息应该通过安全的方式(如服务器端)传递给客户端。
- 支付环境:在开发和测试阶段,使用测试环境进行支付。在生产环境中,确保切换到正式支付环境。
- 错误处理:在实际应用中,添加更多的错误处理和用户反馈机制,以提升用户体验。
这个示例展示了如何在Flutter应用中使用flutter_bani_checkout
插件进行支付集成。根据具体需求,你可能需要调整支付参数和处理逻辑。