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

Начало работы

Обновлено 26 ноября 2024

Минимальная версия Android-платформы для подключения SDK — 24.

Версии SDK которые работают с Android API >=24 - поддерживается всеми версиями Версии SDK которые работают с Android API <24 - до 2.0.x включительно

Демо-приложение

Демо-приложение с примером интеграции SDK находится по ссылке. Код приложения можно использовать как референс при интеграции.

Подключение SDK к проекту

Для получения зависимости из maven репозитория необходимо добавить его в settings.gradle файл вашего приложения.

    dependencyResolutionManagement {
...
repositories {
google()
mavenCentral()
...
⁣ maven {
⁣name = "GitHubPackages"
url = uri("*URL из договора*")
credentials {
⁣ username = "*username для репозитория*"
⁣ password = "*password для репозитория*"
}
}
}
}

Далее нужно перейти в build.gradle вашего модуля и добавить зависимости внутрь блока dependencies { ... }.

    dependencies {
...
implementation '*название зависимости из договора*:x.y.z'
...
}

Инициализация SDK

Для старта работы с SPaySDK необходимо его проинициализировать внутри вашего Application-класса, с помощью метода initialize(…) класса SPaySdkApp.

В метод initialize необходимо передать структуру SPayInitSdkConfig.

Параметры структуры SPayInitSdkConfig

ПараметрТипОбязательныйОписание
applicationApplicationДаApplicationContext
enableBnplBoolНетЕсли параметр не передан, дефолтное значение false. Параметр отвечает за функционал оплаты частями. Значение true не гарантирует, что оплата частями будет доступна, но значение false гарантирует, что оплата частями будет не доступна.
helperConfigSPayHelperConfigДаФункционал helpers.
isHelperEnabledBoolНетНастройки функционала helpers.
disabledHelpersList<SPayHelpers>ДаСписок выключенных helpers. Если все helpers должны быть оставлены в Sdk, то передается emptyList().
stageSPayStageДаСтенд на котором будет работать SDK.
initializationResultinitializationResultДаКоллбек инициализации SDK.
resultViewNeededBooltrueОтображение экранов со статусом.
enableLoggingBooltrueВыведение логов в консоль в режиме песочницы.
initializationResult(InitializationResult) -> UnitнетБлок, отрабатыващий после инициализации SDK

Если вы подключили сервис Плати частями и пользователь выбрал этот способ для оплаты заказа, то выполняя через back расширенный запрос состояния заказа getOderStatusExtended.do, в ответе вы получите значение параметра paymentWay равное BNPL.
Подключить параметр paymentWay в callback-уведомлениях возможно в личном кабинете партнера интернет-эквайринга. Это можно сделать в настройках->основные настройки->callback-уведомления. При заполнении доп. параметров выйдет список всех возможных. Для того, чтобы передавался способ оплаты заказа необходимо выбрать paymentWay.

Оплаченные частями заказы в личном кабинете партнера интернет-эквайринга будут отмечаться признаком BNPL в поле «Платежное средство».

При этом денежные средства по заказам, оплаченным частями, поступят от ООО «ЦНФС» («Центр новых финансовых сервисов»), предоставляющей сервис.

Helpers - функционал, позволяющий клиенту с недостаточным количеством средств быстро пополнить счет или выпустить новые продукты для оплаты.

Настройки SBHelperConfig

ПараметрТипДефолтное значениеОписание
sbpBooltrueРазрешить пополнение карты через СБП
creditCardBooltrueРазрешить выпуск кредитной карты
debitCardBooltrueРазрешить выпуск дебетовой карты
import spay.sdk.SPaySdkApp
import spay.sdk.api.SPayStage

class YourApplication : Application() {
override fun onCreate() {
super.onCreate()

val config = SPayInitSdkConfig(
application = requireActivity().application,
enableBnpl = true,
stage = stage,
resultViewNeeded = true,
enableLogging = true,
helperConfig = SPayHelperConfig(isHelperEnabled = true, listOfHelpers) initializationResult = { initializationResult ->
}

SPaySdkApp.getInstance().initialize(config)
}
}

При вызове данного метода подгружается конфиг, который содержит строковые ресурсы и картинки. Если метод был вызван не при старте приложения, то есть шанс, что SDK не успеет получить конфиг, в результате чего кнопка SDK может быть отрисована некорректно или не отрисована вовсе.

Добавление кнопки

Для вызова метода оплаты можно использовать готовый класс кнопки spay.sdk.view.SPayButton или отрисовать кнопку самостоятельно в соответсвии с гайдланами.

Для добавления готовой кнопки используйте в своей вью разметке spay.sdk.view.SPayButton.

Инициализация кнопки оплаты в .xml

    <spay.sdk.view.SPayButton
android:id="@+id/s_pay_button"
android:layout_width="match_parent"
android:layout_height="wrap_content">

Инициализация кнопки оплаты в Composable

@Composable
private fun SPButton() {
val context = LocalContext.current
val customView = SberPayButton(context = context, attributeSet = null)

AndroidView(
modifier = Modifier.fillMaxSize(),
factory = { customView })
}

Проверка готовности к оплате

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

Кнопка должна быть отрисована только в том случае, если метод isReadyForSPaySdk вернет true.

Проверка установлен ли СБОЛ на устройстве


/**
*
* @return true - СБОЛ есть на устройстве, false - СБОЛ на устройстве не установлен (кнопка не должна быть отрисована)
*
*/
SPaySdkApp.getInstance().isReadyForSPaySdk(context: Context)

Запрос разрешений

Для работы SDK также запрашивает определенные разрешения, которые не являются обязательными но повышают шанс успешной оплаты.

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

Вызов диалогового окна на запрос разрешений от пользователя реализован по нажатию на кнопку SPayButton, при условии, что как минимум одно разрешение не было выдано пользователем.

Независимо от результата запроса разрешений от пользователя сценарий оплаты будет продолжен.

Если необходимо получать разрешения раньше, например при старте приложения, то можно использовать статический метод SPayButton - requestPermissions ( SPayButton.requestPermissions), в который необходимо передать Context и который вернет в коллбэк константу:

  • PermissionsActivity.ACTION_PERMISSIONS_GRANTED — если все разрешения были получены;
  • PermissionsActivity.ACTION_PERMISSIONS_DENIED — если как минимум одно из разрешений было отклонено.

Запрос на получение разрешений от пользователя

    /**
*
* @return PermissionsActivity.ACTION_PERMISSIONS_DENIED или PermissionsActivity.ACTION_PERMISSIONS_GRANTED
*
*/
SPaySdkApp.getInstance().requestPermissions(context: Context) { permissionsResult ->

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