Сценарий оплаты
Обновлено 09 сентября 2025
Схема взаимодействия

Доступные сценарии оплаты
В SDK представлены следующие сценарии оплаты:
- обновленная автоматическая оплата;
- автоматическая оплата;
- оплата со списанием бонусов «Спасибо»;
- оплата без рефреш-токена;
- оплата с помощью платежных счетов;
- оплата частями с комиссией;
- оплата с использованием связок.
Реализация сценария оплаты
На данном этапе в SDK был введен универсальный метод вызова оплаты - pay, который заменяет под собой все предыдущие способы оплаты.
В ближайшее время планируется оставить только новый метод оплаты pay, старые методы оплаты будут удалены из SDK. На данный момент они уже помечены как Deprecated.
Для проведения необходимого для Вас сценария оплаты надо передать в метод pay структуру SPayMethod, а также структуру с параметрами SPaymentRequest, их описание указано в разделе Вспомогательные структуры.
Пример реализации структуры запроса:
let request = SPaymentRequest(
apiKey: "Your API key",
bankInvoiceId: bankInvoiceId,
orderNumber: "Your order number",
merchantLogin: "Test shop",
redirectUri: "sberPayExampleapp://spay"
)
SPay.pay(view: self,
method: method,
request: request) { state, bankInvoiceId, localSessionId, info in
switch state {
case .success: print("Успешный результат")
case .waiting: print("Необходимо проверить статус оплаты")
case .cancel: print("Пользователь отменил оплату")
case .error: print("(info) - описание ошибки")
@unknown default: print("Неопределенная ошибка")
}
}
SPaymentRequest *request = [[SPaymentRequest alloc] initWithapiKey:@"Your API key"
bankInvoiceId:@"12312312"
orderNumber:@"123add"
merchantLogin:@"Test shop"
redirectUri:@"sberPayExampleapp://spay",
bindingId:nil];
[SPay payWith:self
method: method
with:request
completion:^(enum SPayState state, NSString * _Nonnull bankInvoiceId, NSString * _Nonnull localSessionId, NSString * _Nonnull info) {
switch(state) {
case SPayStateSuccess: NSLog(@"Успешный результат");
break;
case SPayStateWaiting: NSLog(@"Необходимо проверить статус оплаты");
break;
case SPayStateCancel: NSLog(@"Пользователь отменил оплату");
break;
case SPayStateError: NSLog(@"%@ - описание ошибки", info);
break;
}
}];