Оплата вне SDK Android
Обновлено 24 октября 2023
Схема взаимодействия
Сценарий оплаты вне Android SDK
Данный механизм используется при проведении оплаты вне Android SDK для показа «шторки» результата оплаты.
Получение токена оплаты
Для получения PaymentToken необходимо использовать метод getPaymentToken
и передать в параметры перечисленные ниже:
Параметры метода
Объект | Тип | Формат | Обязательный | Описание |
---|---|---|---|---|
apiKey | String | ANS..512 | Да | Ключ Клиента для работы с сервисами платежного шлюза через SDK Пример: eyJhbGciOiJFUzI1NiJ9.eyJjc24iOiI3MjNiM2U3OWI4NjU2MzU2NTg2YTE5MDBhMzA3Y2JiNDJmZDEwZDc2Iiwic3ViIjoiQ049V2ViVGVzdCIsImlzcyI6IkNOPVdlYlRlc3QiLCJpYXQiOjE1ODgxNTA3ODgsImp0aSI6InVyQmdGMEl0NXI3UFhrUkFQeDFIOVEiLCJleHAiOjE2MTU0MjIxMDYwfQ.HdIG_ch3gXhNiX03oskOVBYACUa5iZCcuZVYQaesB_adc95MjbQdy5bm7gNYpBuVCDc_7XUCdKlLeP52H2_oVA |
merchantLogin | String | ANS..512 | Да | Название магазина Клиента Пример: Любимый магазин |
amount | Int | N..12 | Да | Сумма операции в минорных единицах Пример: 145566 |
currency | String | N..3 | Да | Цифровой код валюты операции согласно ISO 4217 Пример: 643 |
mobilePhone | String | N..11 | Нет | Номер мобильного телефона Плательщика Пример: 79261112233 |
orderNumber | String | ANS..36 | Да | Уникальный номер (идентификатор) заказа в системе Клиента Пример: 5f3f7d10-7005-7afe-b756-f73001c896b1 |
orderDescription | String | ANS..512 | Нет | Описание заказа Пример: Любимый товар |
recurrentEnabled | Boolean | Да | Параметр создания платежного токена для реккурентных платежей Пример: true | |
recurrentExpiry | String | N..8 | Да, если recurrentEnabled = true | Дата прекращения действия рекуррентных платежей (формат YYYYMMDD) Пример: 20230821 |
recurrentFrequency | Int | N..2 | Да, если recurrentEnabled = true | Период рекуррентных платежей в днях (натуральное число в пределах от 1 до 28) Для нереккурентых платежей значение 0 Пример: 20 |
language | String | A..2 | Нет | Язык локализации интерфейсов Пример: RU |
appPackage | String | ANS..512 | Да | Package приложения Клиента, по которому необходимо вернуть Плательщика после аутентификации в СберБанк Онлайн Пример: merchant.favorite.shop |
Получение PaymentToken
Метод getPaymentToken
является входной точкой в SDK и должен быть вызван только по клику на кнопку "Оплатить"
, которая идет в комплекте с SDK.
- Kotlin
- Java
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)
}
}
}
SPaySdkApp.getInstance().getPaymentToken(
context,
"eyJhbGciOiJFUzI1NiJ9.eyJjc24iOiI3MjNiM2U3OWI4NjU2MzU2NTg2YTE5MDBhMzA3Y2JiNDJmZDEwZDc2Iiwic3ViIjoiQ049V2ViVGVzdCIsImlzcyI6IkNOPVdlYlRlc3QiLCJpYXQiOjE1ODgxNTA3ODgsI",
"Your_best_shop",
999,
"643",
"7934567890",
"5f3f7d10-7005-7afe-b756-f77001c896b1",
"Your description",
true,
"221212",
"20",
"com.example.javaTestSdkConnection",
"RU",
paymentTokenResult -> {
if (paymentTokenResult instanceof PaymentTokenResult.Success) {
((PaymentTokenResult.Success) paymentTokenResult).getPaymentToken();
} else if (paymentTokenResult instanceof PaymentTokenResult.Error){
((PaymentTokenResult.Error) paymentTokenResult).getMerchantErrors();
}
return null;
}
);
Завершение работы при оплате вне SDK
Если оплата производится на стороннем сервисе, для закрытия окна SDK необходимо вызвать метод completePayment
и передать в него статус оплаты. После его вызова SDK отобразит необходимый экран статуса оплаты и работа SDK будет завершена
Параметры запроса completePayment
Объект | Тип | Обязательный | Описание |
---|---|---|---|
PayResult | object | Да | Результат оплаты, полученным Клиентом от платежного шлюза. Возможные значения: PaymentResult.Success, PaymentResult.Error, PaymentResult.Processing |
Вызов метода completePayment()
SPaySdkApp.getInstance().completePayment(
context = context,
paymentResult = PaymentResult
)