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

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

Обновлено 24 октября 2023

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

Схема оплаты

Реализация сценария

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

Данный механизм используется, когда сценарий оплаты может включать оплату через стороннего эквайера.

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

Для получения PaymentToken необходимо использовать метод getPaymentToken и передать в параметры перечисленные ниже:

Параметры метода

ОбъектТипФорматОбязательныйОписание
apiKeyStringANS..512ДаКлюч Клиента для работы с сервисами платежного шлюза через SDK Пример: eyJhbGciOiJFUzI1NiJ9.eyJjc24iOiI3MjNiM2U3OWI4NjU2MzU2NTg2YTE5MDBhMzA3Y2JiNDJmZDEwZDc2Iiwic3ViIjoiQ049V2ViVGVzdCIsImlzcyI6IkNOPVdlYlRlc3QiLCJpYXQiOjE1ODgxNTA3ODgsImp0aSI6InVyQmdGMEl0NXI3UFhrUkFQeDFIOVEiLCJleHAiOjE2MTU0MjIxMDYwfQ.HdIG_ch3gXhNiX03oskOVBYACUa5iZCcuZVYQaesB_adc95MjbQdy5bm7gNYpBuVCDc_7XUCdKlLeP52H2_oVA
merchantLoginStringANS..512ДаНазвание магазина Клиента Пример: Любимый магазин
amountIntN..12ДаСумма операции в минорных единицах Пример: 145566
currencyStringN..3ДаЦифровой код валюты операции согласно ISO 4217 Пример: 643
mobilePhoneStringN..11НетНомер мобильного телефона Плательщика Пример: 79261112233
orderNumberStringANS..36ДаУникальный номер (идентификатор) заказа в системе Клиента Пример: 5f3f7d10-7005-7afe-b756-f73001c896b1
orderDescriptionStringANS..512НетОписание заказа Пример: Любимый товар
recurrentEnabledBooleanДаПараметр создания платежного токена для реккурентных платежей Пример: true
recurrentExpiryStringN..8Да, если recurrentEnabled = trueДата прекращения действия рекуррентных платежей (формат YYYYMMDD) Пример: 20230821
recurrentFrequencyIntN..2Да, если recurrentEnabled = trueПериод рекуррентных платежей в днях (натуральное число в пределах от 1 до 28) Для нереккурентых платежей значение 0 Пример: 20
languageStringA..2НетЯзык локализации интерфейсов Пример: RU
appPackageStringANS..512ДаPackage приложения Клиента, по которому необходимо вернуть Плательщика после аутентификации в СберБанк Онлайн Пример: merchant.favorite.shop

Получение PaymentToken

Метод getPaymentToken является входной точкой в SDK и должен быть вызван только по клику на кнопку "Оплатить", которая идет в комплекте с SDK.

SPaySdkApp.getInstance().getPaymentToken(
context = context,
⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣apiKey = "eyJhbGciOiJFUzI1NiJ9.eyJjc24iOiI3MjNiM2U3OWI4NjU2MzU2NTg2YTE5MDBhMzA3Y2Ji",
⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣merchantLogin = "BestMerch",
⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣amount = 21323,
⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣currency = "643",
⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣mobilePhone = "79261112233",
⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣orderNumber = "5f3f7d10-7005-7afe-b756-f73001c896b1",
⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣orderDesription = "payment for household appliances",
⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣reccurentEnabled = true,
⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣reccurentExpiry = "20230821",
⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣reccurentFrequency = "20",
⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣appPackage = "merchant.favorite.shop",
⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣language = "RU"
⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣) { paymentTokenResult ->
when (paymentTokenResult) {
is PaymentTokenResult.Success -> {
doSomethingOnSuccess(paymentTokenResult.paymentToken)
}
is PaymentTokenResult.Error -> {
doSomethingOnError(paymentTokenResult.description)
}
}
}

Результат ⁣paymentTokenResult в коллбеке является объектом класса PaymentTokenResult.

Завершение оплаты в SDK

Для завершения оплаты необходимо вызвать метод pay ,передав туда ваш ApiKey, PaymentToken полученный ранее и BankInvoiceId полученный после back2back взаимодействия.

Параметры метода

ОбъектТипФорматОбязательныйОписание
apiKeyStringANS..512ДаКлюч Клиента для работы с сервисами платежного шлюза через SDK Пример: eyJhbGciOiJFUzI1NiJ9.eyJjc24iOiI3MjNiM2U3OWI4NjU2MzU2NTg2YTE5MDBhMzA3Y2JiNDJmZDEwZDc2Iiwic3ViIjoiQ049V2ViVGVzdCIsImlzcyI6IkNOPVdlYlRlc3QiLCJpYXQiOjE1ODgxNTA3ODgsImp0aSI6InVyQmdGMEl0NXI3UFhrUkFQeDFIOVEiLCJleHAiOjE2MTU0MjIxMDYwfQ.HdIG_ch3gXhNiX03oskOVBYACUa5iZCcuZVYQaesB_adc95MjbQdy5bm7gNYpBuVCDc_7XUCdKlLeP52H2_oVA
bankInvoiceIdStringANS..36ДаУникальный номер (идентификатор) заказа в Платежном шлюзе Банка. Необходимо передавать значение sbolBankInvoiceId (передается в externalParams) из ответа на Запрос регистрации заказа
paymentTokenStringANS..512ДаПлатежный токен, полученный от SDK. Пример: 6fcb2418-ba44-4af2-8b54-711efb494b54

Получение результата метода pay

Без вызова этого метода в сценарии ручной оплаты SDK не завершит свою работу.

    SPaySdkApp.getInstance().pay(
context = context,
⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣apiKey = "eyJhbGciOiJFUzI1NiJ9.eyJjc24iOiI3MjNiM2U3OWI4N",
⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ bankInvoiceId = "I4NjU2MzU2NTg2YTE5MDBhMzA3Y2JiNDJmZDEwZDc2Iiwic3ViIjoiQ049V2ViVGVzdCIsI",
⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣paymentToken = "jU2MzU2NTg2YTE5MDBhMzA3Y2JiNDJmZDEwZDc2Iiwic3ViIjoiQ049V2ViVGVzdCIsI",
orderNumber = "eyJhbGciOiJFUzI1NiJ9.eyJjc24iOiI123233",⁣ ⁣ ⁣ ⁣
merchantLogin = "test_merchant",⁣ ⁣ ⁣ ⁣ ⁣
⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣){ ⁣result -> ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣
when (result) {
is PaymentResult.Success -> {
doSomethingOnSuccess()
}
is PaymentResult.Error -> {
doSomethingOnError(result.description)
}
is PaymentResult.Processing -> {
doSomethingOnProcessing()
}
⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣}
}
ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей.
Вы можете запретить сохранение cookie в настройках своего браузера.