Установка Yandex Pay Kit для iOS
Системные требования
|
Компонент |
Версия |
|
iOS |
15.0 и выше |
|
Swift |
6.0 и выше |
|
Xcode |
16.4 и выше |
Доступные модули
| Модуль | Зависимость | Описание |
|---|---|---|
| CP QR | YandexQuickPay |
Customer Presented QR. Быстрая оплата через QR-код в офлайн-точках. |
| Ассистент | YandexPayAssistant |
Виджеты выгод и сценарии ИИ-ассистента от Яндекс Пэй. |
| Авторизация | YandexPayAuth |
Авторизация пользователя в Яндекс Пэй и передача состояния авторизации партнера. |
| Редирект | YandexPayWithRedirect |
PSP-оплата через платежную ссылку с редиректом в платежную форму. |
| Пэй Виджет | YandexPayInApp |
Виджет быстрой онлайн-оплаты на checkout-странице. Подключается вместе с модулем «Редирект» (YandexPayWithRedirect). |
| Инвентарь | YandexPayInventory |
Бейджи Яндекс Пэй с информацией о скидках, кешбэке баллами Плюса или платежах Яндекс Сплит. |
Пакет SDK на GitHub: https://github.com/yandexmobile/yandex-pay-ios.
Установка
В файле Package.swift добавьте зависимость от репозитория:
dependencies: [
.package(
url: "https://github.com/yandexmobile/yandex-pay-ios.git",
from: "2.1.1"
)
]
Затем добавьте нужные продукты к цели:
.target(
name: "MyApp",
dependencies: [
.product(name: "YandexPayAuth", package: "yandex-pay-ios"),
.product(name: "YandexQuickPay", package: "yandex-pay-ios"),
.product(name: "YandexPayAssistant", package: "yandex-pay-ios"),
// и другие необходимые
]
)
Либо добавьте зависимость через Xcode: File → Add Package Dependencies…, вставьте URL репозитория и выберите нужные продукты в диалоге.
Добавьте только нужные пакеты:
pod 'YandexPaySDK/YandexPayAuth' # при необходимости
pod 'YandexPaySDK/YandexQuickPay' # при необходимости
pod 'YandexPaySDK/YandexPayAssistant' # при необходимости
Настройка проекта
1. Идентификатор Client ID
SDK использует до двух идентификаторов клиента:
|
Идентификатор |
Обязательный |
Описание |
|
|
Да |
Выдается менеджером по интеграции со стороны Яндекс Пэй. |
|
|
Да |
Используется SDK для настройки авторизации через Yandex ID.
|
Чтобы зарегистрировать Client ID:
-
Настройте цели в Xcode:
-
Откройте вкладку Build Settings и выберите All → User-Defined.
-
Добавьте одну или обе переменные:
YANDEX_PAY_CLIENT_ID = <ваш идентификатор> YANDEX_CLIENT_ID = <ваш идентификатор>
-
-
Добавьте ссылки на переменные в
Info.plist:<key>YANDEX_PAY_CLIENT_ID</key> <string>$(YANDEX_PAY_CLIENT_ID)</string> <key>YANDEX_CLIENT_ID</key> <string>$(YANDEX_CLIENT_ID)</string> <key>LSApplicationQueriesSchemes</key> <array> <string>yandexauth</string> <string>yandexauth2</string> <string>yandexauth4</string> <string>primaryyandexloginsdk</string> <string>secondaryyandexloginsdk</string> </array> -
Добавьте в
Info.plistпараметрNSFaceIDUsageDescription, чтобы реализовать сценарий аутентификации с использованием Face ID — параметр обязателен, если приложение использует модули «CP QR», «Ассистент» или «Пэй Виджет».В значении параметра укажите, для чего приложению требуется доступ к Face ID. Без этого параметра сценарии аутентификации, используемые модулями, могут работать некорректно.
Например:
<key>NSFaceIDUsageDescription</key> <string>Use biometrics to access your private key for secure payments.</string>
2. URL-схемы
Для каждого используемого Client ID зарегистрируйте URL-схему. Без этого SDK не сможет получать OAuth-колбэки.
Схема формируется по правилу: yx + <значение_Сlient_ID>. Например, для Client ID abcdef1234567890 схема будет yxabcdef1234567890.
Добавьте схему для обоих переменных в Info.plist:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>YandexLoginSDK</string>
<key>CFBundleURLSchemes</key>
<array>
<!-- Схема для YANDEX_PAY_CLIENT_ID -->
<string>yx$(YANDEX_PAY_CLIENT_ID)</string>
<!-- Схема для YANDEX_CLIENT_ID -->
<string>yx$(YANDEX_CLIENT_ID)</string>
</array>
</dict>
</array>
3. Инициализация
Вызовите YPay.initialize(...) один раз при старте приложения до первого обращения к любому модулю. Вызов можно сделать в SceneDelegate или в AppDelegate.
import YandexPayConfiguration
import YandexPayAuth
import YandexQuickPay
import YandexPayAssistant
import YandexPayWithRedirect
import YandexPayInApp
import YandexPayInventory
let merchant = YPSDKMerchant(
id: "ваш-merchant-id",
name: "Название магазина",
url: nil
)
YPay.initialize(
environment: .production,
locale: .ru,
modules: [
// Только необходимые модули здесь нужно указать
YPayWithRedirect.module(merchant: merchant),
YPayInApp.module(merchant: merchant),
YPAssistantModule.module(merchant: merchant),
YPayInventory.module(merchant: merchant),
YPayAuth.module(merchant: merchant),
YQuickPay.module(
stateListener: stateListener,
merchant: merchant,
presentationContextProvider: presentationContextProvider
)
]
)
После успешной инициализации доступ к конфигурации и модулям осуществляется через синглтон YPay.instance.
Параметры YPay.initialize:
|
Параметр |
Тип |
Значение по умолчанию |
Описание |
|
|
|
— |
Среда:
|
|
|
|
— |
Язык:
|
|
|
|
|
Цветовая схема:
|
|
|
|
|
Включить отладочные логи |
|
|
|
— |
Список подключаемых модулей |
4. Обработка диплинков
Передавайте входящие URL и user activity в SDK из SceneDelegate. Метод deeplinkHandler автоматически маршрутизирует их к нужному модулю.
import YandexPayConfiguration
// Обработка кастомных URL-схем (OAuth-колбэки)
func scene(_ scene: UIScene, openURLContexts contexts: Set<UIOpenURLContext>) {
guard YPay.isInitialized else { return }
contexts.map(\.url).forEach { url in
YPay.instance.deeplinkHandler.handleOpenURL(url)
}
}
// Обработка Universal Links
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
guard YPay.isInitialized else { return }
YPay.instance.deeplinkHandler.handleUserActivity(userActivity)
}
Примечание
Всегда проверяйте YPay.isInitialized перед обращением к YPay.instance, так как SceneDelegate может получить URL до момента инициализации SDK.
Настройка модулей
О настройке отдельных модулей Yandex Pay Kit читайте в соответствующих разделах документации.