Skip to main content

Интеграция SDK

1. Отобразить экран оформления заказа

Помимо информации о заказе, этот экран должен предоставить пользователю возможность выбрать карту для оплаты.

На картинке ниже пример такого экрана в демо-приложении SDK. Код экрана - на github.

2. Вызвать метод своего бэкенда

Перед показом экрана оформления заказа вызовите метод своего бэкенда, созданный по инструкции в Подготовка бэкенда. Затем сохраните customer_access_token и order_access_token в переменных.

// В контроллере экрана оформления заказа
override func viewDidLoad() {
// ...
api.startPayment(for: order) { result in
switch result {
case .success(let response):
self.orderAccessToken = response.orderAccessToken
self.customerAccessToken = response.customerAccessToken
// ...
}
}

3. Получить сохраненные карты пользователя

Вызовите метод получения сохраненных карт пользователя, чтобы отобразить их и сохранить для дальнейшей работы.

Вызовите метод Ioka.shared.getSavedCards(), передав в него customer_access_token:

override func viewDidLoad() {
// ...
api.startPayment(for: order) { result in
switch result {
case .success(let response):
self.orderAccessToken = response.orderAccessToken
self.customerAccessToken = response.customerAccessToken

Ioka.shared.getSavedCards(customerAccessToken: customerAccessToken) { result in
switch result {
case .success(let savedCards):
self.savedCards = savedCards
self.updateInterface()
// ...
}
// ...
}
}

4. Отобразить сохраненные карты в своем интерфейсе

Для получения иконки типа карты (Mastercard, Visa) и иконки банка-эмитента используйте свойства paymentSystemIcon и emitterIcon в объекте SavedCard:

// Отображаемая карта
let savedCard = ...

paymentSystemImageView.image = savedCard.paymentSystemIcon
emitterImageView.image = savedCard.emitterIcon

4.1. Метод удаления сохраненной карты

Если вы даете возможность удалить сохраненную карту на этом экране, то используйте соответствующий метод SDK.

Используйте метод deleteSavedCard(). Необходимо передать customer_access_token и id карты, которую нужно удалить.

// Выбранная пользователем карта
let savedCard = ...

Ioka.shared.deleteSavedCard(customerAccessToken: customerAccessToken, cardId: savedCard.id) { error in
if let error = error {
// Отобразите ошибку в своём интерфейсе
} else {
// Удалите карту из списка
}
}

5. Вызвать метод оплаты в SDK

В зависимости от того, какой способ оплаты выбрал пользователь, вызовите либо метод оплаты сохраненной картой, либо метод оплаты новой картой.

5.1. Метод оплаты сохраненной картой

Метод запускает сценарий оплаты сохраненной картой. Отображает при необходимости форму ввода CVV и форму 3DSecure, также отображает результат оплаты.

Вызовите Ioka.shared.startPaymentWithSavedCardFlow(), передав в него sourceViewController, orderAccessToken и savedCard.

// Выбранная пользователем карта
let savedCard = ...

Ioka.shared.startPaymentWithSavedCardFlow(sourceViewController: self, orderAccessToken: orderAccessToken, card: savedCard) { _ in
// ...
}

Экраны, которые отображаются в рамках сценария оплаты сохраненной картой в ioka SDK:

Подробнее о взаимодействиях с сохраненными картами можно прочитать в соответствующей инструкции.

5.2. Метод оплаты новой картой

Вызовите Ioka.shared.startPaymentFlow(), передав в него orderAccessToken и другие необходимые параметры.

Этот метод такой же, как и в Оплата без использования функционала сохраненных карт.

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

В обоих сценариях оплаты ioka SDK отображает результат оплаты в своём интерфейсе. После того, как пользователь закрывает экран результата оплаты, результат передаётся вам, чтобы вы могли его обработать. Например, очистить корзину при успешной оплате.

Оба метода оплаты принимают completion блок, в который передаётся результат оплаты.

// result, который передаётся в completion блок в методах оплаты
let result = ...

switch result {
case .succeeded:
// Ваша логика для успешной оплаты. Например, очистка корзины.
case .failed(let error):
// Ваша логика для неудачной оплаты.
case .cancelled:
// Ваша логика для закрытия пользователем экрана оплаты.
}