Flutter支付集成插件sb_payment_sdk的使用
特性
此文档介绍了如何在Flutter应用中使用sb_payment_sdk
插件进行支付集成。
开始使用
导入必要的包
首先,需要在项目中导入以下依赖包:
import 'package:sb_payment_sdk/sb_payment_sdk.dart';
import 'package:sb_payment_sdk/models/charge_model.dart';
import 'package:sb_payment_sdk/models/api_response.dart';
初始化插件
在使用插件之前,需要调用initialize
方法进行初始化。参数包括是否为生产环境(isLive
)和公钥(publicKey
)。
StartButtonPlugin _paymentPlugin = StartButtonPlugin();
_paymentPlugin.initialize(isLive: false, publicKey: "sb_e73bc345*************2bc08442957****8db719f*******12c0");
说明:
isLive
: 如果设置为true
,表示当前环境为生产环境;如果设置为false
,表示测试环境。publicKey
: 从支付服务提供商获取的公钥。
执行支付操作
通过调用makePayment
方法发起支付请求。以下是示例代码:
const _reference = ""; // 生成一个随机字符串作为交易参考号
num _amount = 2000; // 支付金额(单位为分)
APIResponse response = await _paymentPlugin.makePayment(
context, // 当前上下文
charge: Payment(
amount: _amount, // 支付金额
email: "example@gmail.com", // 用户邮箱
currencyType: CurrencyType.NGN, // 货币类型
reference: _reference // 交易参考号
)
);
说明:
_reference
: 随机生成的交易参考号,用于标识该笔交易。_amount
: 支付金额,单位通常为“分”。例如,2000表示20.00。CurrencyType.NGN
: 表示货币类型为尼日利亚奈拉(NGN),可根据实际需求替换为其他货币类型。
处理支付结果
支付完成后,插件会返回一个APIResponse
对象。根据支付状态处理不同的逻辑。
成功支付示例
成功支付后,响应数据可能如下所示:
var data = {
"reference": "reference",
"amount": 2000,
"email": "example@gmail.com",
"currency": "NGN",
"bankName": "",
"accountName": "",
"accountNumber": "",
"paymentStatus": "successful",
"paymentType": "Paystack",
"paymentDate": "2024-03-19T18:42:51.757Z"
};
错误支付示例
如果支付失败,插件会返回错误信息。例如:
var data = {
"error": "Invalid email address",
"message": "Please check your email and try again."
};
完整示例代码
以下是一个完整的示例代码,展示了如何在Flutter中集成sb_payment_sdk
插件并完成支付流程:
import 'package:flutter/material.dart';
import 'package:sb_payment_sdk/sb_payment_sdk.dart';
import 'package:sb_payment_sdk/models/charge_model.dart';
import 'package:sb_payment_sdk/models/api_response.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: PaymentScreen(),
);
}
}
class PaymentScreen extends StatefulWidget {
[@override](/user/override)
_PaymentScreenState createState() => _PaymentScreenState();
}
class _PaymentScreenState extends State<PaymentScreen> {
final StartButtonPlugin _paymentPlugin = StartButtonPlugin();
[@override](/user/override)
void initState() {
super.initState();
// 初始化插件
_paymentPlugin.initialize(isLive: false, publicKey: "sb_e73bc345*************2bc08442957****8db719f*******12c0");
}
Future<void> makePayment() async {
const _reference = "random_reference_123"; // 随机生成的参考号
num _amount = 2000; // 支付金额(单位为分)
try {
APIResponse response = await _paymentPlugin.makePayment(
context,
charge: Payment(
amount: _amount,
email: "example@gmail.com",
currencyType: CurrencyType.NGN,
reference: _reference
)
);
if (response.success) {
// 成功支付后的处理逻辑
print("Payment Successful: ${response.data}");
} else {
// 支付失败后的处理逻辑
print("Payment Failed: ${response.error}");
}
} catch (e) {
print("Error during payment: $e");
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('SB Payment SDK Example'),
),
body: Center(
child: ElevatedButton(
onPressed: makePayment,
child: Text('Make Payment'),
),
),
);
}
}
更多关于Flutter支付集成插件sb_payment_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件sb_payment_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
sb_payment_sdk
是一个用于 Flutter 的支付集成插件,通常用于处理移动应用中的支付功能。以下是如何在 Flutter 项目中使用 sb_payment_sdk
的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 sb_payment_sdk
的依赖。
dependencies:
flutter:
sdk: flutter
sb_payment_sdk: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 初始化 SDK
在你的 Flutter 应用中,你需要在应用启动时初始化 sb_payment_sdk
。
import 'package:sb_payment_sdk/sb_payment_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化支付 SDK
await SBPaymentSDK.initialize(
apiKey: 'YOUR_API_KEY',
environment: Environment.SANDBOX, // 或者 Environment.PRODUCTION
);
runApp(MyApp());
}
3. 配置支付参数
在发起支付之前,你需要配置支付参数,例如订单号、金额、货币类型等。
PaymentRequest paymentRequest = PaymentRequest(
orderId: 'ORDER_123456',
amount: 100.0,
currency: 'USD',
description: 'Payment for order #123456',
customerEmail: 'customer@example.com',
);
4. 发起支付
使用配置好的支付参数发起支付请求。
void initiatePayment() async {
try {
PaymentResponse response = await SBPaymentSDK.initiatePayment(paymentRequest);
if (response.status == PaymentStatus.SUCCESS) {
print('Payment successful: ${response.transactionId}');
} else {
print('Payment failed: ${response.errorMessage}');
}
} catch (e) {
print('Error during payment: $e');
}
}
5. 处理支付结果
根据支付结果,你可以更新 UI 或执行其他操作。
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Payment Example'),
),
body: Center(
child: ElevatedButton(
onPressed: initiatePayment,
child: Text('Pay Now'),
),
),
);
}
6. 处理回调(可选)
如果你需要处理支付完成后的回调,可以设置回调监听器。
SBPaymentSDK.setPaymentCallback((PaymentResponse response) {
if (response.status == PaymentStatus.SUCCESS) {
print('Payment successful: ${response.transactionId}');
} else {
print('Payment failed: ${response.errorMessage}');
}
});
7. 处理错误和异常
在支付过程中,可能会遇到各种错误和异常。确保你捕获并处理这些错误,以提供更好的用户体验。
try {
PaymentResponse response = await SBPaymentSDK.initiatePayment(paymentRequest);
// 处理支付结果
} catch (e) {
print('Error during payment: $e');
}