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

Интеграция SDK

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

Этот экран предоставляет пользователю возможность проверить заказанные товары и общую сумму заказа, выбрать время и адрес доставки. На этом экране должна быть кнопка "Оплатить", которая непосредственно создаёт сам заказ.

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

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

При нажатии на кнопку вызовите метод своего бэкенда, созданный по инструкции в Подготовка бэкенда. Он создаст заказ и вернёт order_access_token.

func didTapButton() {
api.startPayment(for: order) { result in
// ...
}
}

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

После получения order_access_token вызовите метод запуска сценария оплаты. Метод отображает форму оплаты и экран результата оплаты. При необходимости отображает форму 3DSecure.

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

func didTapButton() {
api.startPayment(for: order) { result in
switch result {
case .success(let response):
Ioka.shared.startPaymentFlow(sourceViewController: self, orderAccessToken: response.orderAccessToken) { _ in
// ...
}
//...
}
}
}

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

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

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

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

func didTapButton() {
api.startPayment(for: order) { result in
switch result {
case .success(let response):
Ioka.shared.startPaymentFlow(sourceViewController: self, orderAccessToken: response.orderAccessToken) { result in
switch result {
case .succeeded:
// Ваша логика для успешной оплаты. Например, очистка корзины.
case .failed(let error):
// Ваша логика для неудачной оплаты.
case .cancelled:
// Ваша логика для закрытия пользователем экрана оплаты.
}
}
// ...
}
}
}