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

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

Обновлено 2 июня 2023

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

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

Используя Maven

Для получения зависимости из 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'
...
}

Подключение aar файлом

Пакет дистрибьюции состоит из двух файлов: SDK-VERSION.aar и bms-sdk-fingerprint_VERSION_release.aar, которые необходимо разместить в вашем проекте (например в директории libs в корне проекта).

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

ВАЖНО!: Также здесь необходимо явно добавить транзитивные зависимости библиотек.

    dependencies {
...
// .aar libs implementation
⁣implementation files('../libs/bms-sdk-fingerprint_VERSION_release.aar')
implementation files('../libs/SDK-VERSION.aar')

// libs transitive dependencies implementation
implementation 'com.google.android.material:material:<version>'
implementation 'io.github.sberid:SberIdSDK:<version>'
implementation 'com.google.dagger:dagger:<version>'
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:<version>'
...
}

В приведенном выше примере указан путь до aar-файлов находящихся в директории libs проекта. Если вы разместили их в другом месте, то нужно будет указан ваш путь до файлов. Подробнее смотрите в документации для Android.

Транзитивные зависимости

ЗависимостьДопустимые версииОписание
Bi.zone1.8.0 - 1.9.0-
Dagger22.24 - 2.44Внедрение зависимостей
OkHttp4.10.0Http клиент
Dynatrace8.257.1.1007Метрики
...

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

Для старта работы с SPaySDK необходимо его проинициализировать внутри вашего Application-класса. В качестве дополнительных параметров длжны быть переданы enableBnpl или environment. Параметр environment следует передавать при тестировании функционала оплаты.

    import spay.sdk.SPaySdkApp

class Application : Application() {
⁣ ⁣ ⁣ ⁣override fun onCreate() {
⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣ ⁣super.onCreate()
⁣ ⁣ ⁣SPaySdkApp.getInstance().initialize(this, enableBnpl = true)
// или
⁣ ⁣ ⁣⁣SPaySdkApp.getInstance().initialize(this, environment = SandboxWithoutBankApp)
⁣ ⁣ ⁣ ⁣}
}

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

Для добавления кнопки используйте в своей вью разметке 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 })
}

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

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

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

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

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

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

Для работы 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" />
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

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

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

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

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

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

    /**
*
* @return PermissionsActivity.ACTION_PERMISSIONS_DENIED или PermissionsActivity.ACTION_PERMISSIONS_GRANTED
*
*/
SPayButton.requestPermissions(context){ permissionsResult ->
...
}
ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей.
Вы можете запретить сохранение cookie в настройках своего браузера.