tinkoff_sdk 0.5.0 copy "tinkoff_sdk: ^0.5.0" to clipboard
tinkoff_sdk: ^0.5.0 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 вам понадобятся:

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.

Image

Для проведения рекуррентного платежа добавьте в 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,
		),
	);

После выполнения всех необходимых требований, возможность оплаты через СБП появится в общей форме оплаты.

Image

При выборе конкретного банка из списка произойдет переход в соответствующее банковское приложение.

Оплата с помощью 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,
		);
	}