Как реализовать Strong Customer Authentication (SCA) в Swift: пошаговое руководство
Strong Customer Authentication (SCA) в Swift реализуется через интеграцию 3‑DS 2, биометрии и токенов — следуйте пошаговому руководству, чтобы соответствовать требованиям PSD2 к 2026 году.
С 1 января 2026 года в странах ЕС обязана работать Strong Customer Authentication (SCA) для всех онлайн‑платежей, и в iOS‑приложениях это достигается с помощью протокола 3‑DS 2, локальных биометрических методов и токенов безопасности. Для разработчиков Swift это значит, что каждый платежный запрос должен проходить минимум два независимых фактора аутентификации, иначе транзакция будет отклонена банком‑эмитентом. Ниже представлено подробное пошаговое руководство, которое поможет внедрить SCA без потери пользовательского опыта.
Как подготовить проект к внедрению SCA в Swift?
Подготовка проекта начинается с обновления зависимостей и включения необходимых фреймворков. Без этого дальнейшая работа будет блокироваться на этапе компиляции.
- 1. Обновите Xcode до версии 15.2 или новее — только в ней поддерживается iOS 17, где улучшена работа с Secure Enclave.
- 2. Добавьте в
PodfileилиPackage.swiftбиблиотекиAuthenticationServicesиStripe3DS2(или аналогичную от вашего PSP). - 3. Включите в
Info.plistключNSFaceIDUsageDescriptionс описанием «Для подтверждения платежей требуется Face ID». - 4. Настройте серверную часть: endpoint
/create-payment-intentдолжен возвращать параметрrequires_actionиpayment_intent_client_secretсогласно спецификации 3‑DS 2. - 5. Проверьте, что ваш сертификат Apple Pay активен и привязан к Merchant ID.
Почему 3‑DS 2 является ядром SCA в Swift?
3‑DS 2 (3‑Domain Secure) обеспечивает стандартизованный обмен данными между приложением, эмитентом карты и процессором. Именно он проверяет, что пользователь прошёл два из трёх факторов: знание (пароль/PIN), владение (токен) и биометрия.
Согласно отчёту Европейского банковского союза, более 87 % онлайн‑транзакций в 2025 году уже использовали 3‑DS 2, что сократило количество мошеннических операций на 42 %. В Swift‑приложениях 3‑DS 2 реализуется через класс ASWebAuthenticationSession или специализированный SDK, который открывает безопасный веб‑виджет внутри приложения.
- • Кросс‑платформенность: один и тот же поток аутентификации работает в iOS, Android и веб‑версии.
- • Поддержка динамических данных: можно передавать информацию о сумме, валюте (например, 1500 ₽) и типе карты, что повышает шансы на успешный аутентификационный вызов.
- • Обратная совместимость: если банк не поддерживает 3‑DS 2, SDK автоматически переключается на 3‑DS 1.
Что делать, если пользователь отказывается от биометрии?
Если пользователь отключил Face ID или Touch ID, приложение должно предложить альтернативный второй фактор. В этом случае рекомендуется использовать одноразовый пароль (OTP), отправляемый по SMS или email.
Пример реализации:
func presentOTPVerification(completion: @escaping (Bool) -> Void) {
let otpVC = OTPViewController()
otpVC.onVerify = { code in
// запрос к серверу /verify-otp
API.verifyOTP(code) { success in
completion(success)
}
}
navigationController?.pushViewController(otpVC, animated: true)
}
Важно обеспечить, чтобы время жизни OTP не превышало 5 минут, а стоимость отправки SMS в России оставалась в пределах 3 ₽ за сообщение, что делает решение экономически выгодным.
Как обработать ошибки аутентификации и вернуть понятный UI?
Каждая ошибка должна отображаться пользователю в виде короткого сообщения с рекомендацией действия. Не стоит показывать технические коды, такие как 4001 или ERR_SCA_FAILED.
- 1. Network error – «Проверьте соединение с интернетом и повторите попытку».
- 2. Authentication timeout – «Сессия аутентификации истекла, нажмите «Повторить»».
- 3. Biometry not available – «Face ID недоступен, используйте пароль или OTP».
Для реализации UI‑сообщений используйте UIAlertController с двумя кнопками: «Повторить» и «Отмена». При повторе автоматически вызывайте метод startAuthentication().
Какие инструменты и библиотеки ускоряют разработку SCA в 2026 году?
Самыми популярными решениями в 2026 году являются Stripe SDK, Adyen 3‑DS 2 и собственные решения от банков. Они предоставляют готовые UI‑компоненты и серверные шаблоны.
- • Stripe iOS SDK (v23.0) – поддерживает автоматическое создание PaymentIntent и вызов
STPThreeDS2Service. - • Adyen 3‑DS 2 SDK – позволяет кастомизировать дизайн окна аутентификации под бренд.
- • Apple Pay + PassKit – встроенный способ передачи токена, который уже считается фактором «владения».
- • Secure Enclave – хранит приватные ключи, используемые для подписи запросов; стоимость внедрения в среднем 150 000 ₽ для среднего проекта.
Все перечисленные инструменты совместимы с Swift 5.9 и поддерживают асинхронные вызовы через async/await, что упрощает код и уменьшает количество багов.
Воспользуйтесь бесплатным инструментом SCA‑Validator на toolbox-online.ru — работает онлайн, без регистрации.
Теги