Оплата связкой
Обновлено 25 июня 2026
Реализация сценария оплаты по связке
В данном сценарии используется метод pay с параметром SPayMethod.bindingPayment. Оплата происходит по сохраненной связке (карте) с предварительной проверкой баланса и возможной OTP-верификацией для SberPay связок.
Метод SPayMethod.withBinding отмечен как deprecated.
Для проведения оплаты по связке необходимо передать в метод pay структуру SPayMethod.bindingPayment, а также структуру с параметрами SPaymentRequest, где обязательно запол нить bindingId — идентификатор связки на стороне мерчанта.
Пример реализации структуры запроса:
let request = SPaymentRequest(
apiKey: "Your API key",
bankInvoiceId: bankInvoiceId,
orderNumber: "Your order number",
merchantLogin: "Test shop",
redirectUri: "sberPayExampleapp://spay",
bindingId: "b6c15da1-dd13-a64c-42d9-4c5ca70ab183"
)
SPay.pay(view: self,
method: .bindingPayment,
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:@"b6c15da1-dd13-a64c-42d9-4c5ca70ab183"];
[SPay payWith:self
method: SPayMethodBindingPayment
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;
}
}];