Інтеграція ЮKassa в мобільний додаток: гайд з токенізації

Інтеграція платежів у мобільний застосунок часто впирається у вимоги безпеки, які лякають складністю та витратами. Ми пропонуємо рішення через токенізацію ЮKassa: клієнтський SDK шифрує дані картки та створює одноразовий токен, не передаючи реквізити на ваш сервер. Наша команда реалізує інтеграцію під ключ — від налаштування SDK до підтримки, забезпечуючи безпечні платежі без власної PCI-сертифікації.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція ЮKassa в мобільний додаток: гайд з токенізації
Середній
~2-3 дні
Часті запитання

Інтеграція платіжного шлюзу ЮKassa в мобільний додаток

При інтеграції платежів у мобільний додаток ключова складність — дотримання вимог безпеки. Пряма передача банківських реквізитів вимагає сертифікації PCI DSS Level 1, яка коштує мільйони рублів і проходить щорічний аудит. Ми, команда з багаторічним досвідом у мобільній розробці, пропонуємо рішення через токенізацію ЮKassa: клієнтський SDK створює одноразовий платіжний токен, який сервер використовує для завершення платежу. Жодні карткові дані не покидають пристрій користувача. Так ви приймаєте платежі без власної PCI-сертифікації, скорочуючи витрати на інфраструктуру безпеки.

Як працює токенізація ЮKassa?

SDK ЮKassa на стороні клієнта (iOS або Android) приймає дані картки, шифрує їх і відправляє безпосередньо в платіжний шлюз ЮKassa. У відповідь SDK повертає вашому додатку токен — унікальний ідентифікатор, прив'язаний до конкретного магазину та суми. Цей токен передається на ваш бекенд, який створює платіж через API ЮKassa. Ваш сервер ніколи не бачить реальних реквізитів — тільки токен. Це знімає відповідальність за PCI DSS з вашої команди і прискорює інтеграцію до 2–3 днів. Для тестування використовуйте test_ ключ і картку з номером 5555555555554444.

Чому токенізація — єдиний безпечний спосіб?

Пряма передача реквізитів вимагає сертифікації PCI DSS Level 1, яка обходиться в мільйони рублів і щорічного аудиту. Токенізація ЮKassa знижує це навантаження: ви не торкаєтесь карткових даних. SDK бере на себе шифрування та передачу в ЮKassa. Навіть при компрометації сервера зловмисник не отримає реквізити. За статистикою, токенізація знижує ризик витоку даних на 90% порівняно зі зберіганням даних на сервері.

Які сценарії оплати підтримуються?

Спосіб оплати Чи потрібне додаткове налаштування Коментар
Банківські картки Ні, включені за замовчуванням Завжди доступні
SberPay Так, потрібно налаштувати в кабінеті ЮKassa Тільки для клієнтів Ощадбанку
СБП Так, потрібна прив'язка до СБП Підтримується більшістю банків
Apple Pay Так, потрібно налаштувати Merchant ID і завантажити сертифікат Тільки на iOS
Google Pay Так, налаштувати в консолі Google Pay Тільки на Android
ЮMoney Ні, доступний за замовчуванням Популярний серед користувачів

iOS: YooKassaPayments SDK

Підключаємо SDK через CocoaPods або SPM (детальніше в документації). Запуск платіжного екрану:

import YooKassaPayments

let inputData = TokenizationModuleInputData(
    clientApplicationKey: "live_your_client_key",
    title: "Your Company",
    subtitle: "Замовлення №1234",
    amount: Amount(value: 1500, currency: .rub),
    paymentTypes: [.bankCard, .sberbank, .sbp, .applePay, .yooMoney],
    savePaymentMethod: .on,
    isLoggingEnabled: false
)

let viewController = TokenizationAssembly.makeModule(
    inputData: inputData,
    moduleOutput: self
)

present(viewController, animated: true)

Обробка результату:

extension PaymentViewController: TokenizationModuleOutput {
    func tokenizationModule(
        _ module: TokenizationModuleInput,
        didTokenize token: Tokens,
        paymentMethodType: PaymentMethodType
    ) {
        dismiss(animated: true)
        sendTokenToBackend(token.paymentToken, paymentMethodType: paymentMethodType.rawValue)
    }

    func didFinish(on module: TokenizationModuleInput, with error: YooKassaPaymentsError?) {
        dismiss(animated: true)
        if let error = error {
            print("YooKassa error: \(error)")
        }
    }
}

Android: YooKassa Payments SDK

Додайте залежність (актуальну версію див. в документації):

implementation("ru.yoomoney.sdk.kassa.payments:yookassa-android-sdk:7.x.x") 

Запуск платіжного екрану:

private val tokenizeLauncher = registerForActivityResult(
    ActivityResultContracts.StartActivityForResult()
) { result ->
    if (result.resultCode == Activity.RESULT_OK) {
        val token = Checkout.createTokenizationResult(result.data!!)
        sendTokenToBackend(
            token.paymentToken,
            token.paymentMethodType.name
        )
    }
}

fun startPayment() {
    val paymentParameters = PaymentParameters(
        amount = Amount(
            BigDecimal.valueOf(1500),
            Currency.getInstance("USD")
        ),
        title = "Your Company",
        subtitle = "Замовлення №1234",
        clientApplicationKey = "live_your_client_key",
        shopId = "your_shop_id",
        savePaymentMethod = SavePaymentMethod.ON,
        paymentMethodTypes = setOf(
            PaymentMethodType.BANK_CARD,
            PaymentMethodType.SBERBANK,
            PaymentMethodType.SBP,
            PaymentMethodType.GOOGLE_PAY,
            PaymentMethodType.YOO_MONEY
        )
    )
    val intent = Checkout.createTokenizeIntent(this, paymentParameters)
    tokenizeLauncher.launch(intent)
}

Як автоматично обробляти 3D Secure?

При створенні платежу через API, якщо потрібен 3D Secure, у відповіді приходить confirmation.type: redirect і confirmation_url. У мобільному додатку потрібно відкрити цей URL у веб-в'ю (SFSafariViewController на iOS, Custom Tabs на Android) і дочекатися повернення по return_url. Ми рекомендуємо використовувати автоматичну обробку SDK, але при прямій інтеграції слідуйте цьому алгоритму.

Серверне підтвердження платежу

Токен з клієнта передається на сервер, сервер створює платіж через API:

POST https://api.yookassa.ru/v3/payments
Authorization: Basic base64(shopId:secretKey)
Content-Type: application/json
Idempotence-Key: unique-uuid

{
  "amount": {
    "value": "1500.00",
    "currency": "USD"
  },
  "capture": true,
  "payment_method_data": {
    "type": "bank_card"
  },
  "confirmation": {
    "type": "mobile_application",
    "return_url": "yourapp://payment/result"
  },
  "payment_token": "token_from_client",
  "description": "Замовлення №1234"
}

Якщо відповідь містить status: pending і confirmation.type: redirect — потрібне 3DS підтвердження. SDK обробляє це автоматично, але при прямій інтеграції потрібно відкрити confirmation_url у SFSafariViewController / Custom Tabs.

Порівняння ЮKassa з прямим прийомом карток

Критерій ЮKassa Прямий прийом карток
PCI DSS Не потрібна сертифікація Потрібен Level 1, щорічний аудит
Час інтеграції 2–3 дні 1–2 місяці
Підтримка 3D Secure Автоматично (SDK / redirect) Реалізація вручну
Вартість запуску Відносно низька Висока (сертифікація + комісії)
Способи оплати 10+ (картки, SberPay, СБП, гаманці) Тільки картки

ЮKassa відмінно підходить для швидкого запуску: ви економите значні кошти на сертифікації та отримуєте широкий набір платіжних методів. Токенізація знижує час інтеграції в 10 разів порівняно з прямим прийомом карток (2–3 дні проти 1–2 місяців).

Що входить в роботу

  • Підключення YooKassa SDK (iOS / Android / Flutter) під ключ
  • Налаштування paymentTypes під завдання проекту
  • Серверний endpoint для створення та підтвердження платежу
  • Налаштування Webhook для фінального статусу
  • Тестування в тестовому магазині ЮKassa
  • Допомога в публікації в App Store і Google Play (перевірка на відповідність правилам)

Строки та вартість

Базова інтеграція займає 2–3 дні. Вартість розраховується індивідуально — оцінимо проект після знайомства з вашим додатком і платіжними сценаріями. Наші інженери мають багаторічний досвід у мобільній розробці та реалізували багато проектів з ЮKassa. Ми гарантуємо коректну обробку 3D Secure, повернення при помилках та дотримання App Store Review Guidelines Section 4.2/5.1. Якщо потрібна консультація або оцінка — зв'яжіться з нами, щоб обговорити деталі.

Отримайте консультацію наших інженерів — ми проведемо аудит вашого додатку та запропонуємо оптимальне рішення. Замовте інтеграцію, і ми налаштуємо платіжний шлюз за 2 дні.

Наші компетенції:

Останні роботи

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714