Перейти к основному содержимому

Интеграция 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 {
// Удалите карту из списка
}
}

4.2. Метод получения сохраненной карты​

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

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


let cardId = ...

Ioka.shared.getSavedCardById(customerAccessToken: customerAccessToken, cardId: cardId) { result in
switch result {
case .success(let savedCard):
// Полученная сохраненная карта
case .failure(let error):
// Ошибка произошедшая во время получения сохраненной карты
}
}

4.3. Метод создания экземпляра сохраненной карты​

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

Используйте метод createSavedCardInstance(). Необходимо передать id сохраненной карты, маскированный PAN карты, срок действия карты, срок действия. Опционально: платежная систему и код банка.

/// Идентификатор сохраненной карты.
let cardId: String = ...
/// Маскированный PAN карты в формате "555555******5599".
let let maskedPan: String = ...
/// Срок действия карты в формате "12/24"
let expirationDate: String? = ...
/// Платежная система карты (VISA, MASTERCARD, и тд.)
let paymentSystem: String? = ...
/// Код банка, выпустившего карту
let emtter: String? = ...
/// Необходимость ввода cvc при оплате
let cvvRequired: Bool = ...

let savedCard = Ioka.shared.createSavedCardInstance(id: cardId, maskedPan: maskedPan, expirationDate: expirationDate, paymentSystem: paymentSystem, emitter: emitter, cvvRequired: svvRequired)

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:
// Ваша логика для закрытия пользователем экрана оплаты.
}