Flutter支付集成插件yookassa_payments_flutter的使用
Flutter支付集成插件yookassa_payments_flutter的使用
1. 插件介绍
YooKassa Payments SDK允许您在Flutter应用程序中集成支付功能,并作为API YooKassa的补充。它包含现成的支付界面(支付表单及其相关组件)。通过SDK,您可以获取用于银行卡、Sberbank在线或YooMoney钱包支付的令牌。
2. 插件依赖配置
2.1 添加依赖项到pubspec.yaml
在您的pubspec.yaml
文件中添加以下依赖项并运行flutter pub get
:
dependencies:
flutter:
sdk: flutter
yookassa_payments_flutter: ^version # 替换为最新版本号
或者使用命令:
flutter pub add yookassa_payments_flutter
2.2 配置Podfile
在您的iOS项目中的Podfile添加以下内容:
source 'https://github.com/CocoaPods/Specs.git'
source 'https://git.yoomoney.ru/scm/sdk/cocoa-pod-specs.git'
然后在Runner.xcworkspace目录下运行:
pod install --repo-update
2.3 配置Info.plist
在Info.plist中添加URL schemes以支持通过Sber和YooMoney进行支付:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>yookassapaymentsflutter</string>
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>yoomoneyauth</string>
<string>sberpay</string>
</array>
3. 解决连接/构建问题
3.1 pod install失败
- 尝试运行:
pod update YooKassaPayments
- 如果问题仍然存在,可以清除Cocoapods缓存:
- 方案一:执行以下命令清理缓存:
pod cache clean FunctionalSwift --all pod cache clean MoneyAuth --all pod cache clean ThreatMetrixAdapter --all pod cache clean YooKassaPayments --all pod cache clean YooKassaPaymentsApi --all pod cache clean YooKassaWalletApi --all pod cache clean YooMoneyCoreApi --all pod cache clean TMXProfiling --all pod cache clean TMXProfilingConnections --all
- 方案二:删除整个Cocoapods缓存:
然后执行:rm -rf ~/.cocoapods/repos
flutter clean pod clean pod deintegrate YOUR_PROJECT_NAME.xcodeproj pod install
- 方案一:执行以下命令清理缓存:
3.2 xcode no such module ‘__ObjC’ 错误
- 在Xcode中打开iOS项目,选择target
Runner
,进入Build Settings并将Build Libraries for Distribution
设置为NO
。 - 对于Project
Runner
同样操作:Project Runner -> Build Settings -> 设置Build Libraries for Distribution为NO
。 - 在Xcode中执行
Product -> Clean build folder..
并清空DerivedData。
4. 快速集成示例
4.1 创建TokenizationModuleInputData
需要一个客户端应用密钥(从YooKassa控制台获取)以及支付金额和货币等信息。
var clientApplicationKey = "<Ключ для клиентских приложений>";
var amount = Amount(value: "999.9", currency: Currency.rub);
var shopId = "<Идентификатор магазина в ЮKassa>";
var tokenizationModuleInputData = TokenizationModuleInputData(
clientApplicationKey: clientApplicationKey,
title: "Космические объекты",
subtitle: "Комета повышенной яркости, период обращения — 112 лет",
amount: amount,
shopId: shopId,
savePaymentMethod: SavePaymentMethod.on // 是否保存支付方式
);
4.2 启动令牌化流程
var result = await YookassaPaymentsFlutter.tokenization(tokenizationModuleInputData);
4.3 获取Token
if (result is SuccessTokenizationResult) {
var token = result.token;
var paymentMethodType = result.paymentMethodType;
// 发送token到服务器端
}
4.4 关闭SDK模块并发送token
将token发送到您的服务器,然后通过YooKassa API创建支付。根据用户选择的支付方式,确定确认步骤。
// 示例代码
var clientApplicationKey = "<Ключ для клиентских приложений>";
var shopId = "<Идентификатор магазина в ЮKassa>";
await YookassaPaymentsFlutter.confirmation(confirmationUrl, PaymentMethod.sbp, clientApplicationKey, shopId);
其中confirmationUrl
是通过YooKassa API创建支付时返回的链接。
5. 支持的支付方式
当前SDK支持以下支付方式:
.yooMoney
— 使用YooMoney钱包或绑定的银行卡支付.bankCard
— 银行卡支付(支持扫描卡片).sberbank
— SberPay支付(如果安装了SberBank Online应用,则通过该应用确认,否则通过短信确认).sbp
— СБП支付
6. 配置支付方式
可以通过TokenizationSettings
来配置支付方式。例如:
List<PaymentMethod> paymentMethodTypes = [];
if (/* 条件 */) {
paymentMethodTypes.add(PaymentMethod.bankCard); // 添加银行卡支付方式
}
if (/* 条件 */) {
paymentMethodTypes.add(PaymentMethod.sberbank); // 添加SberPay支付方式
}
// 继续添加其他支付方式...
var settings = TokenizationSettings(PaymentMethodTypes(paymentMethodTypes));
// 使用settings初始化TokenizationModuleInputData
var tokenizationModuleInputData = TokenizationModuleInputData(
...
tokenizationSettings: settings
);
更多关于Flutter支付集成插件yookassa_payments_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件yookassa_payments_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中集成和使用yookassa_payments_flutter
插件的示例代码。这个插件允许你集成YooKassa(Yandex.Checkout的支付解决方案)到你的Flutter应用中。
1. 添加依赖
首先,你需要在你的pubspec.yaml
文件中添加yookassa_payments_flutter
插件的依赖:
dependencies:
flutter:
sdk: flutter
yookassa_payments_flutter: ^最新版本号 # 请替换为实际的最新版本号
然后运行flutter pub get
来安装依赖。
2. 初始化插件
在你的Flutter应用的入口文件(通常是main.dart
)中,你需要初始化YooKassa支付插件。
import 'package:flutter/material.dart';
import 'package:yookassa_payments_flutter/yookassa_payments_flutter.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter YooKassa Payment Integration',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: YooKassaPaymentScreen(),
);
}
}
class YooKassaPaymentScreen extends StatefulWidget {
@override
_YooKassaPaymentScreenState createState() => _YooKassaPaymentScreenState();
}
class _YooKassaPaymentScreenState extends State<YooKassaPaymentScreen> {
@override
void initState() {
super.initState();
// 初始化YooKassa插件
YooKassaPayments.init(
shopId: "你的Shop ID", // 替换为你的实际Shop ID
secretKey: "你的SecretKey", // 替换为你的实际SecretKey,注意不要在客户端代码中硬编码SecretKey
);
}
void makePayment() async {
try {
// 创建支付请求
final paymentResponse = await YooKassaPayments.createPayment(
amount: "100.00", // 支付金额
currency: "RUB", // 货币类型
description: "Test payment", // 支付描述
confirmationMethod: YooKassaConfirmationMethod.redirect, // 支付方式
returnUrls: YooKassaReturnUrls(
successUrl: "https://your-success-url.com", // 支付成功后的回调URL
failureUrl: "https://your-failure-url.com", // 支付失败后的回调URL
),
);
// 处理支付响应
if (paymentResponse.status == "success") {
// 支付成功,重定向到支付网关
Uri paymentUri = Uri.parse(paymentResponse.paymentUrl);
// 这里可以使用`Launcher`插件或类似的方式打开浏览器进行支付
// await Launcher.launch(paymentUri.toString());
// 注意:实际开发中,通常会在Webview或类似组件中处理支付流程,而不是直接打开浏览器
} else {
// 支付失败,处理错误
print("Payment failed: ${paymentResponse.errorMessage}");
}
} catch (e) {
// 处理异常
print("Error creating payment: $e");
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("YooKassa Payment Integration"),
),
body: Center(
child: ElevatedButton(
onPressed: makePayment,
child: Text("Make Payment"),
),
),
);
}
}
3. 注意事项
- 不要在客户端代码中硬编码SecretKey:出于安全考虑,SecretKey应该在服务器端进行管理,客户端只应处理经过验证的请求。
- 支付流程:上面的代码示例中,支付流程是通过打开一个URL来完成的。在实际应用中,你可能需要在应用内使用WebView或其他组件来提供更好的用户体验。
- 回调处理:支付成功或失败后,用户会被重定向到你指定的URL。你需要设置服务器端路由来处理这些回调,并更新应用状态。
这个示例代码展示了如何在Flutter应用中集成YooKassa支付插件,并创建支付请求。根据实际需求,你可能需要进一步定制支付流程和处理逻辑。