ym88659208ym87991671
Ручная оплата iOS | Документация для разработчиков

Ручная оплата iOS

Обновлено 11 июля 2024

Схема взаимодействия

Схема оплаты

Сценарий ручной оплаты

Получение токена оплаты

Если клиент продолжил сценарий, то есть выбрал оплатить со SberPay, то для получения PaymentToken необходимо создать структуру для запроса, после чего вызвать метод getPaymentToken. Ниже представлен список параметров для формирования структуры запроса.

Параметры запроса getPaymentToken

ОбъектТипФорматОбязательныйОписание
apiKeyStringANS..512ДаКлюч клиента для работы с сервисами платежного шлюза через SDK
clientIdStringANS..36НетИдентификатора плательщика в вашей системе Пример: ac2db5dd-9bd0-441e-a5d9-6d23ce7a1123
clientNameStringANS..512ДаНазвание магазина клиента Пример: Любимый магазин
amountIntN..12ДаСумма операции в минорных единицах Пример: 145566
currencyIntN3ДаЦифровой код валюты операции согласно ISO 4217 Пример: 643
bankInvoiceIdStringANS..36НетУникальный номер (идентификатор) заказа в Платежном шлюзе Банка. Необходимо передавать значение sbolBankInvoiceId
mobilePhoneStringN12НетНомер мобильного телефона Плательщика, если имеется в вашей системе Пример: 79261112233
orderNumberStringANS..36НетУникальный номер (идентификатор) заказа в системе Клиента. Пример: 5f3f7d10-7005-7afe-b756-f73001c896b1
descriptionStringANS..512НетОписание к заказу
languageStringA2НетВыбранный язык локализации интерфейсов Пример: RU
recurrentEnabledBooleanДаПараметр создания платежного токена для реккурентных платежей (true или false) Пример: true
recurrentExpiryStringN8НетДата прекращения действия рекуррентных платежей (формат YYYYMMDD) Пример: 20230821
recurrentFrequencyIntN..2ДаПериод рекуррентных платежей в днях (натуральное число в пределах от 1 до 28) Для нереккурентых платежей значение 0 Пример: 20
redirectUriStringANS..512ДаАдрес вашего приложения, по которому необходимо вернуть пользователя после аутентификации в СберБанк Онлайн Пример: apptest:/
merchantLoginStringANS..512ДаНазвание магазина клиента Пример: Любимый магазин
let request = SPaymentTokenRequest(redirectUri: "sberPayExampleapp://spay",

merchantLogin: "Test shop",

amount: totalCost,

currency: "643",

mobilePhone: nil,

orderNumber: orderId,

recurrentExipiry: "20230821",

recurrentFrequency: 2)

// ⁣или

let request = SPaymentTokenRequest(merchantLogin: "Test shop",

orderId: orderId,

redirectUri: "sberPayExampleapp://spay")

Вызов метода getPaymentToken

После инициализации структуры запроса необходимо вызвать сам метод getPaymentToken, передать в его параметры созданную ранее структуру и текущий UIViewController вашего приложения.

SPay.getPaymentToken(with: self, with: request) {  state, info in

switch state {

case .success:

print("Успешный результат")

case .cancel:

print("Пользователь отменил оплату")

case .error:

print("(info) - описание ошибки")

@unknown default:

print("Неопределенная ошибка")

}
}

Оплата заказа платежным токеном

При успешном получении платежного токена можно провести оплату заказа Плательщика через вызов метода pay. Ниже представлен список параметров для формирования структуры запроса

Параметры запроса pay

ОбъектТипФорматОбязательныйОписание
orderIdStringANS 36ДаУникальный номер (идентификатор) заказа в Платежном шлюзе Банка. Необходимо передавать значение sbolBankInvoiceId (передается в externalParams)
paymentTokenStringANS 96000НетПлатежный токен, полученный от SDK. Отсутствует, если заполнен paymentTokenId
paymentTokenIdStringANS 36НетИдентификатор платежного токена, полученный от SDK. Отсутствует, если заполнен paymentToken
let request = SPaymentRequest( orderId: "eyJhbGciOiJFQ0RILUVTIiwiZXBrIj",

paymentToken: "6fcb2418-ba44-4af2-8b54-711efb494b54")

// или

let request = SPaymentRequest(orderId: "eyJhbGciOiJFQ0RILUVTIiwiZXBrIj",

paymentTokenId: "6fcb2418-ba44-4af2-8b54-711efb494b54")

Вызов метода pay

После инициализации структуры запроса необходимо вызвать сам метод pay и передать в его параметр созданную ранее структуру. После того как метод отработает окно SDK будет закрыто.

SPay.pay(with: request) { state, info in

switch state {

case .success:

print("Успешный результат")

case .waiting:

print("Необходимо проверить статус оплаты")

case .cancel:

print("Пользователь отменил оплату")

case .error:

print("(info) - описание ошибки")

@unknown default:

print("Неопределенная ошибка")

}

}

ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей.
Вы можете запретить сохранение cookie в настройках своего браузера.