Giter Club home page Giter Club logo

tinkoff_sdk's Introduction

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,
		);
	}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.