Оплата вне SDK iOS
Обновлено 11 июля 2024
Схема взаимодействия
Сценарий ручной оплаты
Получение токена оплаты
Если клиент продолжил сценарий, то есть выбрал оплатить со SberPay, то для получения PaymentToken необходимо создать структуру для запроса, после чего вызвать метод getPaymentToken
. Ниже представлен список параметров для формирования структуры запроса.
Параметры запроса getPaymentToken
Объект | Тип | Формат | Обязательный | Описание |
---|---|---|---|---|
apiKey | String | ANS..512 | Да | Ключ клиента для работы с сервисами платежного шлюза через SDK |
clientId | String | ANS..36 | Нет | Идентификатора плательщика в вашей системе Пример: ac2db5dd-9bd0-441e-a5d9-6d23ce7a1123 |
clientName | String | ANS..512 | Да | Название магазина клиента Пример: Любимый магазин |
amount | Int | N..12 | Да | Сумма операции в минорных единицах Пример: 145566 |
currency | Int | N3 | Да | Цифровой код валюты операции согласно ISO 4217 Пример: 643 |
bankInvoiceId | String | ANS..36 | Нет | Уникальный номер (идентификатор) заказа в Платежном шлюзе Банка. |
mobilePhone | String | N12 | Нет | Номер мобильного телефона Плательщика, если имеется в вашей системе Пример: 79261112233 |
orderNumber | String | ANS..36 | Нет | Уникальный номер (идентификатор) заказа в системе Клиента. Пример: 5f3f7d10-7005-7afe-b756-f73001c896b1 |
description | String | ANS..512 | Нет | Описание к заказу |
language | String | A2 | Нет | Выбранный язык локализации интерфейсов Пример: RU |
recurrentEnabled | Boolean | Да | Параметр создания платежного токена для реккурентных платежей (true или false) Пример: true | |
recurrentExpiry | String | N8 | Нет | Дата прекращения действия рекуррентных платежей (формат YYYYMMDD) Пример: 20230821 |
recurrentFrequency | Int | N..2 | Да | Период рекуррентных платежей в днях (натуральное число в пределах от 1 до 28) Для нереккурентых платежей значение 0 Пример: 20 |
redirectUri | String | ANS..512 | Да | Адрес вашего приложения, по которому необходимо вернуть пользователя после аутентификации в СберБанк Онлайн Пример: apptest:/ |
merchantLogin | String | ANS..512 | Да | Название магазина клиента Пример: Любимый магазин |
- Swift
- Objective-C
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")
SPaymentTokenRequest *requestModel = [[SPaymentTokenRequest alloc] initWithMerchantLogin:@"Test shop"
orderId:@""
redirectUri:@"sberPayExampleapp://spay"];
// или
SPaymentTokenRequest *requestModel = [[SPaymentTokenRequest alloc] initWithRedirectUri:@"sberPayExampleapp://spay"
merchantLogin:@"Test shop"
amount:*(_totalCost)
currency:@""
mobilePhone:@""
orderNumber:@""
recurrentExipiry:@""
recurrentFrequency:0];
Вызов метода getPaymentToken
После инициализации структуры запроса необходимо вызвать сам метод getPaymentToken
, передать в его параметры созданную ранее структуру и текущий UIViewController
вашего приложения.
- Swift
- Objective-C
SPay.getPaymentToken(with: self, with: request) { response in
if let error = response.error {
// Обработка ошибки
print("(error.errorDescription) - описание ошибки")
} else {
// Обработка успешно полученных данных
// response.paymentToken - Зашифрованный (Base64) платежный токен
// response.paymentTokenId - Идентификатор платежного токена. Отсутствует, если заполнен paymentToken
// response.tokenExpiration - Срок действия платежного токена в формате UNIX (POSIX) времени
}
}
[SPay getPaymentTokenWith:self with:requestModel completion:^(enum SPayTokenState state, SPaymentTokenResponseModel * _Nonnull info) {
switch(state) {
case SPayTokenStateSuccess:
NSLog(@"Успешный результат");
break;
case SPayTokenStateError:
NSLog(@"%@ - описание ошибки", info);
break;
case SPayTokenStateCancel:
NSLog(@"Отмена");
break;
}
}\];
Завершение оплаты
Если оплата производится на стороннем сервисе, для закрытия окна сдк необходимо вызвать метод completePayment
. После его вызова SDK отобразит статус оплаты и окно закроется, после чего отработает completion блок.
Параметры запроса completePayment
Объект | Тип | Формат | Обязательный | Описание | |
---|---|---|---|---|---|
paymentSuccess | SPayState | Да | Результат оплаты, полученным Клиентом от платежного шлюза. Возможные значения: SPayState |
- Swift
- Objective-C
SPay.completePayment(paymentState: .success) {
// Действия после закрытия шторки
}
[SPay completePaymentWithPaymentState: SPayStateSuccess completion:\^{
// Блок отработает после закрытия окна SDK
}];