SDK для iOS
Библиотека позволяет встроить прием платежей в мобильные приложения на iOS и работает как дополнение к API Яндекс.Кассы.
В мобильный SDK входят готовые платежные интерфейсы (форма оплаты и всё, что с ней связано). С помощью SDK можно получать токены для проведения оплаты с банковской карты, через Apple Pay, Сбербанк Онлайн или из кошелька в Яндекс.Деньгах.
 Демо-приложение
Посмотреть, как выглядят платежные интерфейсы и как проходит процесс оплаты, можно в специальном демо-приложении. Установите приложение на ваше устройство и пройдите весь процесс так, как это сделают ваши пользователи: нажмите на кнопку Купить, введите данные банковской карты или кошелька на Яндексе. Приложение позволяет воспроизводить разные сценарии оплаты.
Чтобы установить демо-приложение, загрузите и установите Testflight на ваш iPhone или iPad, согласитесь с лицензионным соглашением, а затем установите демо-приложение mSDK.
Скачивая демо-приложение, вы принимаете лицензионное соглашение.
 Порядок работы с SDK
Для начала вам нужно реализовать прием платежей по API Яндекс.Кассы. После этого:
  1. Cообщите менеджеру, что собираетесь проводить платежи с помощью мобильного SDK.
  2. Выпустите ключ для клиентских приложений в личном кабинете (эту возможность включает менеджер по запросу).
  3. Добавьте SDK в приложение и настройте выпуск одноразовых платежных токенов.
  4. Реализуйте отправку одноразовых токенов из мобильного приложения в вашу систему (например, в бэкенд вашего сайта, который отвечает за работу с Яндекс.Кассой).
  5. Проводите платежи с использованием платежных токенов через API Яндекс.Кассы.
 Подключение
Требования: iOS 8.0, 9, 10, 11 и 12
Подключить библиотеку можно через CocoaPods — это менеджер зависимостей для Swift и Objective-C проектов Cocoa. Carthage пока не поддерживается.
 Подключение зависимостей через CocoaPods
Шаг 1. Установите CocoaPods.
Как установить CocoaPods
cURL
$ gem install cocoapods
Шаг 2. Добавьте зависимости в Podfile. Вместо
Your Target Name
пропишите название таргета в Xcode для вашего приложения.
tag
— версия SDK, ее можно узнать GitHub в разделе Releases.
Пример Podfile из демо-приложения
Как добавить зависимости в Podfile
cURL
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

target 'Your Target Name' do
  pod 'YandexCheckoutPayments',
    :git => 'https://github.com/yandex-money/yandex-checkout-payments-swift.git',
    :tag => 'tag'
end
Шаг 3. Добавьте библиотеку
TrustDefender.framework
в папку Frameworks вашего проекта.
Библиотеку
TrustDefender.framework
вам пришлет менеджер Яндекс.Кассы, после того как вы согласуете подключение мобильного SDK.
Как добавить библиотеку TrustDefender.framework в папку Frameworks
cURL
App
├─ Pods
└─ Frameworks
   └─ TrustDefender.framework
 Быстрая интеграция
 Шаг 1. Подготовка к приему платежа
Создайте
TokenizationModuleInputData
. Вам понадобится ключ для клиентских приложений из личного кабинета Яндекс.Кассы. В этой модели передаются параметры платежа (валюта и сумма), параметры платежной формы, которые увидит пользователь при оплате (способы оплаты, название магазина и описание заказа).
Для работы с сущностями
YandexCheckoutPayments
импортируйте зависимости в исходный файл.
Как импортировать зависимости в исходный файл
Swift
import YandexCheckoutPayments
import YandexCheckoutPaymentsApi
Пример создания TokenizationModuleInputData
Swift
let clientApplicationKey = "<Ключ для клиентских приложений>"
let amount = Amount(value: 999.99, currency: .rub)
let inputData = TokenizationModuleInputData(clientApplicationKey: clientApplicationKey,
                                            shopName: "Космические объекты",
                                            purchaseDescription: """
                                                Комета повышенной яркости, период обращения — 112 лет
                                                """,
                                            amount: amount)
 Шаг 2. Получение токена
Создайте
ViewController
из
TokenizationAssembly
и выведите его на экран.
Swift
let viewController = TokenizationAssembly.makeModule(inputData: inputData,
                                                     moduleOutput: self)
present(viewController, animated: true, completion: nil)
В
moduleOutput
передайте объект, который реализует протокол
TokenizationModuleOutput
.
Реализуйте протокол
TokenizationModuleOutput
.
Swift
extension ViewController: TokenizationModuleOutput {
  func tokenizationModule(_ module: TokenizationModuleInput,
                          didTokenize token: Tokens,
                          paymentMethodType: PaymentMethodType) {
    DispatchQueue.main.async { [weak self] in
        guard let strongSelf = self else { return }
        strongSelf.dismiss(animated: true)
    }
    // Отправьте токен в вашу систему
  }

  func didFinish(on module: TokenizationModuleInput) {
      DispatchQueue.main.async { [weak self] in
          guard let strongSelf = self else { return }
          strongSelf.dismiss(animated: true)
      }
  }
}
 Шаг 3. Платеж с токеном
Закройте
ViewController
и отправьте токен в вашу систему. Затем создайте платеж по API Яндекс.Кассы, в параметре
payment_token
передайте токен, полученный в SDK. Сценарий подтверждения при создании платежа зависит от способа оплаты, который выбрал пользователь. Способ оплаты приходит вместе с токеном в
paymentMethodType
.
 Возможности SDK
С помощью SDK вы можете:
  • токенизировать платежные данные пользователя;
  • при оплате банковской картой сканировать данные карты и обрабатывать 3-D Secure;
  • настраивать интерфейс платежной формы.
Для отладки токенизации вы можете использовать логирование сетевых запросов. Корректность интеграции SDK можно проверить с помощью тестового режима.
Более подробная информация о возможностях iOS SDK приведена в документации на GitHub.
 Что почитать еще
Платежный токенПроведение платежейСпособы оплатыВходящие уведомления