tinkoff_sdk 0.5.1 tinkoff_sdk: ^0.5.1 copied to clipboard
Flutter TinkoffSDK plugin
Tinkoff SDK for Flutter #
SDK позволяет интегрировать Интернет-Эквайринг от Тинькофф в мобильные приложения на Flutter.
Возможности SDK #
- Прием платежей (в том числе рекуррентных)
- Оплата с помощью:
- СБП (Системы быстрых платежей)
- TinkoffPay
- Оплата с помощью QR-кода (статический и динамический)
- СБП (Системы быстрых платежей)
- Получение информации о картах клиента
- Добавление новой банковской карты
- Управление сохраненными картами
- Добавление новой банковской карты
Содержание #
Требования #
Для работы Tinkoff SDK
необходимо:
Android #
- Поддержка Android 7.0 и выше (API level 24)
- Использование FragmentActivity вместо Activity
MainActivity.kt
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant
class MainActivity: FlutterFragmentActivity() {
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
}
}
или MainActivity.java
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterFragmentActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugins.GeneratedPluginRegistrant;
public class MainActivity extends FlutterFragmentActivity {
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
}
}
iOS #
- Поддержка iOS 15.0 и выше
Использование #
Подготовка к работе #
Для начала работы с SDK вам понадобятся:
- Terminal Key
- PublicKey Эти данные вы получите после подключения к Интернет-Эквайрингу.
import 'package:tinkoff_sdk/tinkoff_sdk.dart';
static const _TERMINAL_KEY = 'TERMINAL_KEY';
static const _PUBLIC_KEY = 'PUBLIC_KEY';
final TinkoffSdk acquiring = TinkoffSdk();
acquiring.activate(
terminalKey: _TERMINAL_KEY,
publicKey: _PUBLIC_KEY,
// SDK позволяет настроить режим работы (debug/prod). По умолчанию - режим prod.
// Чтобы настроить debug режим, установите параметры:
logging: true,
isDeveloperMode: true
);
❗ Обратите особое внимание на параметр isDeveloperMode
.
Используйте isDeveloperMode: true
только с данными тестового терминала (terminal key и public key), а isDeveloperMode: false
только с данными боевого терминала.
При попытке использовать isDeveloperMode: true
с данными боевого терминала (и наоборот) возникнет ошибка на этапе создания TinkoffSdk в приложении.
Проведение оплаты #
Для проведения оплаты нужно вызвать метод openPaymentScreen
.
import 'package:tinkoff_sdk/tinkoff_sdk.dart';
final tinkoffSdk = TinkoffSdk();
Future<TinkoffResult> openPaymentScreen({
required String terminalKey,
required String publicKey,
required OrderOptions orderOptions,
required CustomerOptions customerOptions,
}) async {
await tinkoffSdk.openPaymentScreen(
terminalKey: terminalKey,
publicKey: publicKey,
orderOptions: orderOptions,
customerOptions: customerOptions,
);
}
Метод вернет результат типа TinkoffResult
.
Для проведения рекуррентного платежа добавьте в OrderOptions
поле recurrentPayment: true
.
final orderOptions = OrderOptions(
recurrentPayment: true
///
);
СБП #
❗ Перед началом работы с СБП (Системой быстрых платежей) включите "Оплату через Систему быстрых платежей" в Личном кабинете Интернет-Эквайринга.
Информация взята из документации Tinkoff ASDK iOS
iOS
Перед началом работы добавьте в Info.plist
список банков, поддерживающих СБП.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>bank100000000111</string>
<string>bank100000000004</string>
<string>bank110000000005</string>
<string>bank100000000008</string>
</array>
❗ В список можно внести не более 50-ти схем
Android
Дополнительных шагов не требуется
Для отображения кнопки оплаты по СБП в общей форме оплаты добавьте в метод openPaymentScreen
параметр featuresOptions
с полем fpsEnabled: true
(по умолчанию fpsEnabled = false
).
await tinkoffSdk.openPaymentScreen(
terminalKey: terminalKey,
publicKey: publicKey,
orderOptions: orderOptions,
customerOptions: customerOptions,
featuresOptions: FeaturesOptions(
fpsEnabled: true,
),
);
После выполнения всех необходимых требований, возможность оплаты через СБП появится в общей форме оплаты.
При выборе конкретного банка из списка произойдет переход в соответствующее банковское приложение.
Оплата с помощью QR-кода #
Оплата с помощью QR-кода может быть проведена двумя способами: через статический или динамический QR-код.
❗ Для корректной работы оплаты по QR-коду включите "Оплату через Систему быстрых платежей" в Личном кабинете Интернет-Эквайринга.
Статический QR-код
Отображает экран с многразовым QR-кодом, отсканировав который пользователь сможет провести оплату по СБП (Системе быстрых платежей).
❗ При данном способе оплаты SDK никак не отслеживает статус платежа
Для отображения статического QR-кода вызовите метод showStaticQRCode
.
import 'package:tinkoff_sdk/tinkoff_sdk.dart';
final tinkoffSdk = TinkoffSdk();
Future<void> showStaticQrCode() async {
await tinkoffSdk.showStaticQRCode();
}
Динамический QR-код
Отображает экран с одноразовым QR-кодом, отсканировав который пользователь сможет провести оплату по СБП (Системе быстрых платежей).
Для отображения динамического QR-кода вызовите метод showDynamicQRCode
.
import 'package:tinkoff_sdk/tinkoff_sdk.dart';
final tinkoffSdk = TinkoffSdk();
Future<TinkoffResult> showDynamicQRCode({
required AndroidDynamicQrCode androidDynamicQrCode,
required IosDynamicQrCode iOSDynamicQrCode,
}) async {
await tinkoffSdk.showDynamicQRCode(
androidDynamicQrCode: androidDynamicQrCode,
iOSDynamicQrCode: iOSDynamicQrCode,
);
}
Метод вернет результат типа TinkoffResult
.
TinkoffPay #
❗ На данный момент оплата через TinkoffPay доступна только через общую форму оплаты ❗ Перед началом работы подключите "Оплату через TinkoffPay" в Личном кабинете Интернет-Эквайринга
Информация взята из документации Tinkoff ASDK iOS
iOS
Для корректной работы TinkoffPay
в вашем приложении необходимо добавить в Info.plist
в массив по ключу LSApplicationQueriesSchemes
значение tinkoffbank
:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>tinkoffbank</string>
</array>
Так приложение сможет определить наличие приложения Тинькофф
на устройстве пользователя.
Android
Дополнительных шагов не требуется
Список привязанных карт #
Вы можете отобразить список привязанных карт пользователя. Для этого вызовите метод getCardList
:
import 'package:tinkoff_sdk/tinkoff_sdk.dart';
final tinkoffSdk = TinkoffSdk();
Future<void> getCardsList({
required String terminalKey,
required String publicKey,
required CustomerOptions customerOptions,
}) async {
await tinkoffSdk.getCardList(
terminalKey: terminalKey,
publicKey: publicKey,
customerOptions: _customerOptions,
);
}
Добавление новой банковской карты #
Вы можете отобразить на новом экране форму добавления новой банковской карты. Для этого вызовите метод openAttachCardScreen
:
import 'package:tinkoff_sdk/tinkoff_sdk.dart';
final tinkoffSdk = TinkoffSdk();
Future<void> openAttachCardScreen({
required String terminalKey,
required String publicKey,
required CustomerOptions customerOptions,
}) async {
await tinkoffSdk.openAttachCardScreen(
terminalKey: terminalKey,
publicKey: publicKey,
customerOptions: _customerOptions,
);
}