Начало работы
Минимальная версия 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.zone | 1.8.0 - 1.9.0 | - |
Dagger2 | 2.24 - 2.44 | Внедрение зависимостей |
OkHttp | 4.10.0 | Http клиент |
Dynatrace | 8.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 ->
...
}