Flutter支付集成插件tinkoff_acquiring的使用
Flutter支付集成插件tinkoff_acquiring的使用
介绍
Tinkoff Acquiring SDK允许您将Tinkoff Internet Acquiring集成到iOS和Android平台的移动应用程序中。可用API文档。
SDK特性
- 进行支付(包括定期支付);
- 保存客户的银行卡;
- 获取客户和已保存银行卡的信息;
- 管理已保存的银行卡;
- 与在线结账集成;
- 通过QR码进行快速支付系统(SBP)支付;
安装
在pubspec.yaml
文件中添加以下依赖项:
dependencies:
tinkoff_acquiring: ^3.0.10
tinkoff_acquiring_flutter: ^3.0.10
使用前准备
要开始使用SDK,您需要:
- 终端密钥 - 卖家的终端密钥;
- 密码 - 终端密码(可选);
- 公钥 – 用于加密数据。需要将其集成到您的应用程序中以连接到Tinkoff Internet acquiring。
这些值可以在您连接到Tinkoff Internet Acquiring后,在个人账户中获取。 SDK允许配置操作模式(debug / prod),默认为debug。 SDK还允许配置请求代理,默认情况下所有请求都发送到Tinkoff服务器。
凭证配置
要配置操作模式,请设置以下参数:
final TinkoffAcquiring acquiring = TinkoffAcquiring(
TinkoffAcquiringConfig.credential(
terminalKey: terminalKey,
password: password, // 如果不传递,则以无密码模式工作
isDebugMode: false,
),
);
Token配置
如果您的请求是在服务端签名的,那么可以使用以下构造函数:
final TinkoffAcquiring acquiring = TinkoffAcquiring(
TinkoffAcquiringConfig.token(
terminalKey: terminalKey,
isDebugMode: false,
),
);
在这种情况下,您需要在请求模型中添加signToken
:
InitRequest(
signToken: ...,
...
)
request.copyWith(signToken: ...);
代理配置
如果您想使用代理,请使用以下构造函数:
final TinkoffAcquiring acquiring = TinkoffAcquiring(
TinkoffAcquiringConfig.proxy(
proxyDomain: 'myserver.com',
proxyPath: '/acquiring',
isDebugMode: false,
globalHeaders: <String, String>{...},
mapping: (AcquiringRequest request, bool isDebugMode) {
if (request is InitRequest) {
return const ProxyRequest(
headers: <String, String>{...},
methodPath: '/Init',
);
}
...
return null;
},
),
);
示例代码
下面是一个完整的示例demo,展示了如何使用tinkoff_acquiring
插件进行支付集成:
pubspec.yaml
确保您的pubspec.yaml
文件中包含以下内容:
dependencies:
flutter:
sdk: flutter
tinkoff_acquiring: ^3.0.10
tinkoff_acquiring_flutter: ^3.0.10
main.dart
import 'package:flutter/material.dart';
import 'package:tinkoff_acquiring/tinkoff_acquiring.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: PaymentPage(),
);
}
}
class PaymentPage extends StatefulWidget {
@override
_PaymentPageState createState() => _PaymentPageState();
}
class _PaymentPageState extends State<PaymentPage> {
final TinkoffAcquiring _acquiring = TinkoffAcquiring(
TinkoffAcquiringConfig.credential(
terminalKey: 'YourTerminalKey', // 替换为您自己的终端密钥
password: 'YourPassword', // 替换为您自己的密码
isDebugMode: true, // 设置为false以切换到生产环境
),
);
Future<void> _makePayment() async {
try {
final response = await _acquiring.init(
InitRequest(
amount: 10000, // 金额,单位为分
paymentId: DateTime.now().millisecondsSinceEpoch.toString(),
customerId: 'customer_123456',
recurrent: false,
),
);
if (response.isSuccess) {
print('Payment successful');
} else {
print('Payment failed: ${response.message}');
}
} catch (e) {
print('Error during payment: $e');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Tinkoff Acquiring Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: _makePayment,
child: Text('Make Payment'),
),
),
);
}
}
此示例演示了如何初始化一个支付请求,并处理支付结果。请根据实际情况替换terminalKey
、password
等参数。
更多详细信息和完整示例代码,请参考官方GitHub仓库中的example
文件夹。
SDK工作流程
希望以上内容能帮助您顺利集成Tinkoff Acquiring到您的Flutter项目中!如果有任何问题,欢迎随时提问。
更多关于Flutter支付集成插件tinkoff_acquiring的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付集成插件tinkoff_acquiring的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中集成tinkoff_acquiring
插件以实现支付功能,可以通过以下步骤来完成。以下是一个简单的代码案例,展示了如何使用这个插件进行支付集成。
首先,确保你已经在pubspec.yaml
文件中添加了tinkoff_acquiring
依赖:
dependencies:
flutter:
sdk: flutter
tinkoff_acquiring: ^最新版本号 # 请替换为实际发布的最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,你需要配置Android和iOS平台特定的设置。这通常涉及到在AndroidManifest.xml
和Info.plist
文件中添加必要的权限和配置。由于这些配置可能随着插件版本的变化而变化,请参考tinkoff_acquiring
插件的官方文档获取最新的配置信息。
下面是一个基本的Flutter应用示例,展示了如何使用tinkoff_acquiring
插件进行支付:
import 'package:flutter/material.dart';
import 'package:tinkoff_acquiring/tinkoff_acquiring.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Tinkoff Acquiring Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final TinkoffAcquiring _tinkoffAcquiring = TinkoffAcquiring();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Tinkoff Acquiring Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
// 替换为你的实际支付参数
final Map<String, dynamic> paymentParams = {
'Amount': '100.00',
'CurrencyCode': '643', // RUB
'OrderDescription': 'Test order',
'Receipt': {
'Email': 'user@example.com',
'PhoneNumber': '+79991234567',
},
// 其他必要的支付参数...
};
try {
final result = await _tinkoffAcquiring.startPayment(
paymentParams: paymentParams,
publicKey: '你的公钥', // 替换为你的公钥
successUrl: 'https://your-success-url.com', // 支付成功后的回调URL
failUrl: 'https://your-fail-url.com', // 支付失败后的回调URL
);
// 处理支付结果
if (result['Status'] == 'Success') {
print('Payment successful!');
// 更新UI或执行其他操作
} else {
print('Payment failed: ${result['ErrorDescription'] ?? 'Unknown error'}');
// 更新UI或执行其他操作
}
} catch (e) {
print('Error starting payment: $e');
// 处理错误
}
},
child: Text('Start Payment'),
),
),
);
}
}
在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个按钮。当用户点击按钮时,将启动Tinkoff支付流程。你需要替换paymentParams
中的值以及publicKey
、successUrl
和failUrl
为你的实际值。
请注意,这只是一个基本的示例,实际使用中你可能需要处理更多的支付参数和错误情况。此外,确保你已经在Tinkoff Acquiring商户后台正确配置了你的应用信息,并获取了必要的公钥和私钥。
对于生产环境,强烈建议仔细阅读tinkoff_acquiring
插件的官方文档,并遵循最佳实践来确保支付流程的安全性和可靠性。