SDK для iOS
Библиотека позволяет встроить прием платежей в мобильные приложения на iOS и работает как дополнение к API Яндекс.Кассы.
В мобильный SDK входят готовые платежные интерфейсы (форма оплаты и всё, что с ней связано). С помощью SDK можно получать токены для проведения оплаты с банковской карты, через Apple Pay, Сбербанк Онлайн или из кошелька в Яндекс.Деньгах.
 Демо-приложение
Посмотреть, как выглядят платежные интерфейсы и как проходит процесс оплаты, можно в специальном демо-приложении. Установите приложение на ваше устройство и пройдите весь процесс так, как это сделают ваши пользователи: нажмите на кнопку Купить, введите данные банковской карты или кошелька на Яндексе. Приложение позволяет воспроизводить разные сценарии оплаты.
Чтобы установить демо-приложение, загрузите и установите Testflight на ваш iPhone или iPad, согласитесь с лицензионным соглашением, а затем установите демо-приложение mSDK.
Скачивая демо-приложение, вы принимаете лицензионное соглашение.
 Порядок работы с SDK
Для начала вам нужно реализовать прием платежей по API Яндекс.Кассы. После этого:
  1. Сообщите менеджеру, что собираетесь проводить платежи с помощью мобильного SDK.
  2. Выпустите ключ для клиентских приложений в личном кабинете (эту возможность включает менеджер по запросу).
  3. Добавьте SDK в приложение и настройте выпуск одноразовых платежных токенов.
  4. Реализуйте отправку одноразовых токенов из мобильного приложения в вашу систему (например, в бэкенд вашего сайта, который отвечает за работу с Яндекс.Кассой).
  5. Проводите платежи с использованием платежных токенов через API Яндекс.Кассы.
 Подключение
Требования: iOS 8.0, 9, 10, 11 и 12
Подключить библиотеку можно через CocoaPods — это менеджер зависимостей для Swift и Objective-C проектов Cocoa. Carthage пока не поддерживается.
 Подключение зависимостей через CocoaPods
Шаг 1. Установите CocoaPods.
cURL
$ gem install cocoapods
Шаг 2. Добавьте зависимости в Podfile. Вместо
Your Target Name
пропишите название таргета в Xcode для вашего приложения.
tag
 — версия SDK, ее можно узнать GitHub в разделе Releases.
Пример 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.
cURL
App
├─ Pods
└─ Frameworks
   └─ TrustDefender.framework
 Быстрая интеграция
 Шаг 1. Импорт зависимостей
Для работы с сущностями
YandexCheckoutPayments
импортируйте зависимости в исходный файл.
Swift
import YandexCheckoutPayments
import YandexCheckoutPaymentsApi
 Шаг 2. Подготовка к приему платежа
Создайте
TokenizationModuleInputData
. В этой модели передайте параметры платежа (валюта и сумма), параметры платежной формы, которые увидит пользователь при оплате (способы оплаты, название магазина и описание заказа), а также ключ для клиентских приложений из личного кабинета Яндекс.Кассы.
Swift
let clientApplicationKey = "<Ключ для клиентских приложений>"
let amount = Amount(value: 999.99, currency: .rub)
let tokenizationModuleInputData =
          TokenizationModuleInputData(clientApplicationKey: clientApplicationKey,
                                      shopName: "Космические объекты",
                                      purchaseDescription: """
                                          Комета повышенной яркости, период обращения — 112 лет
                                          """,
                                      amount: amount)
Создайте
inputData
для отображения формы оплаты и присвойте ей 
TokenizationFlow.tokenization
с ассоциативным значением
TokenizationModuleInputData
.
Swift
let inputData: TokenizationFlow = .tokenization(tokenizationModuleInputData)
 Шаг 3. Получение токена
Создайте
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 self = self else { return }
        self.dismiss(animated: true)
    }
    // Отправьте токен в вашу систему
  }

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