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

Доступные сценарии оплаты
В SDK представлены следующие сценарии оплаты:
- обновленная автоматическая оплата;
- автоматическая оплата;
- оплата со списанием бонусов «Спасибо»;
- оплата без рефреш-токена;
- оплата с помощью платежных счетов;
- оплата частями с комиссией;
- оплата с использованием связок.
Реализация сценария оплаты
На данном этапе в SDK был введен универсальный метод вызова оплаты - pay
, который заменяет под собой все предыдущие способы оплаты.
В ближайшее время планируется оставить только новый метод оплаты pay
, старые методы оплаты будут удалены из SDK. На данный момент они уже помечены как Deprecated.
Для проведения необходимого для Вас сценария оплаты надо передать в метод pay структуру SPayMethod
, а также структуру с параметрами SPaymentRequest
, их описание указано в разделе Вспомогательные структуры
.
Пример реализации структуры запроса:
- Swift
- Objective-C
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;
}
}];