Інтеграція платіжного шлюзу Тінькофф Касса в мобільному додатку
Тінькофф Касса (тепер T-Касса) надає нативні SDK для iOS та Android. Підтримує оплату картою, через СБП, Tinkoff Pay та Apple/Google Pay. Особливість — SDK включає готовий платіжний екран, тому базова інтеграція займає менше дня, якщо бекенд готов.
Підключення SDK
// Android
implementation("ru.tinkoff.acquiring:ui:x.x.x")
// iOS, SPM
.package(url: "https://github.com/TinkoffCreditSystems/AcquiringSdk_IOS")
Основний потік
T-Касса працює за двохетапною схемою: сервер ініціалізує платіж і отримує paymentId, потім SDK на клієнті проводить його.
Серверна ініціалізація:
POST https://securepay.tinkoff.ru/v2/Init
{
"TerminalKey": "your_terminal_key",
"Amount": 150000,
"OrderId": "ORDER-1234",
"Description": "Оплата замовлення",
"Token": "sha256_signature"
}
Відповідь містить PaymentId і PaymentURL. PaymentId передається в SDK для проведення платежу в нативному UI.
Android: запуск платіжного екрану
val tinkoffAcquiring = TinkoffAcquiring(
context,
terminalKey = "your_terminal_key",
publicKey = "your_public_key"
)
val paymentOptions = PaymentOptions().setOptions {
setTerminalParams(
terminalKey = "your_terminal_key",
publicKey = "your_public_key"
)
orderOptions {
orderId = "ORDER-1234"
amount = Money.ofRubles(1500)
title = "Замовлення №1234"
description = "Оплата замовлення"
savingAsParentPayment = false
}
featuresOptions {
useSecureKeyboard = true
cameraCardScanner = CameraCardIOScanner() // опціонально
fpsEnabled = true // СБП
tinkoffPayEnabled = true
}
}
val launcher = registerForActivityResult(TinkoffAcquiring.createPaymentContract(context)) { result ->
when (result.status) {
AsdkState.Success -> handleSuccess(result.paymentId)
AsdkState.Cancelled -> {}
AsdkState.Error -> handleError(result.error)
else -> {}
}
}
tinkoffAcquiring.openPaymentScreen(
activity = this,
paymentOptions = paymentOptions,
launcher = launcher
)
iOS: AcquiringUISDK
import TinkoffASDKUI
let credential = AcquiringSdkCredential(
terminalKey: "your_terminal_key",
publicKey: "your_public_key"
)
let acquiringSDK = try AcquiringUISDK(credential: credential)
let paymentData = PaymentInitData(
amount: 150000, // у копійках
orderId: "ORDER-1234",
customerKey: "user_123"
)
acquiringSDK.presentPaymentView(
on: self,
paymentData: paymentData,
configuration: AcquiringViewConfiguration()
) { result in
switch result {
case .success(let paymentInfo):
print("Payment ID: \(paymentInfo.paymentId)")
case .failure(let error):
print("Error: \(error)")
case .cancelled:
break
}
}
Tinkoff Pay: окремий кейс
Tinkoff Pay відкриває приложення Т-Банка для підтвердження платежу. Працює тільки якщо Т-Банк встановлений на пристрої. SDK перевіряє це автоматично через UIApplication.canOpenURL (iOS) або PackageManager.getLaunchIntentForPackage (Android) і приховує кнопку, якщо додаток не знайдений.
Підпис запитів (Token)
Всі серверні запити до API T-Кассы підписуються через SHA-256: конкатенація значень параметрів + Password в алфавітному порядку ключів. Неправильний token — частова причина помилки 0 (Invalid Token) при ініціалізації платежу.
Обсяг робіт
- Підключення ASDK iOS / Android
- Серверна ініціалізація платежу з коректною підписом
- Налаштування опцій: СБП, Tinkoff Pay, збереження карти
- Обробка статусів та Webhook підтвердження
- Тестування через тестовий терміна
Терміни
2–3 дні. Вартість розраховується індивідуально.







