Начало работы
Минимальная версия 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-VERSION.aar и bms-sdk-fingerprint_VERSION_release.aar, которые необходимо разместить в вашем проекте (например в директории libs в корне проекта).
Далее нужно перейти в build.gradle вашего модуля и добавить зависимости от .aar-файлов внутрь блока dependencies { ... }.
ВАЖНО! Также здесь необходимо явно добавить транзитивные зависимости библиотек.
// SPaySdk
implementation(files("../libs/SPaySDK-version.aar"))
// Bi.Zone
implementation(files("../libs/bms-sdk-fingerprint-version.aar"))
// Activity
implementation("androidx.activity:activity-ktx:1.6.1")
// Coroutines
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1")
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1")
// OkHttp
implementation("com.squareup.okhttp3:okhttp:4.10.0")
implementation("com.squareup.okhttp3:logging-interceptor:4.10.0")
// Retrofit
implementation("com.squareup.retrofit2:retrofit:2.9.0")
implementation("com.squareup.retrofit2:converter-gson:2.3.0")
// Jsoup
implementation("org.jsoup:jsoup:1.13.1")
// Dagger2
implementation("com.google.dagger:dagger:2.44")
annotationProcessor("com.google.dagger:dagger-compiler:2.44")
// Play services
implementation("com.google.android.gms:play-services-auth-api-phone:18.0.1")
// Timber
implementation("com.jakewharton.timber:timber:5.0.1")
// Three Ten BP
implementation("com.jakewharton.threetenabp:threetenabp:1.2.1")
testImplementation("org.threeten:threetenbp:1.2.1") {
exclude("com.jakewharton.threetenabp:threetenabp:1.2.0")
}
// Coil
implementation("io.coil-kt:coil-base:2.4.0")
implementation("io.coil-kt:coil-svg:2.4.0")
// Shimmer
implementation("com.facebook.shimmer:shimmer:0.5.0")
// Firebase Database
implementation("com.google.firebase:firebase-database-ktx:20.2.0")
// Biometric
implementation("androidx.biometric:biometric:1.1.0")
// Encrypted Shared Preferences
implementation("androidx.security:security-crypto:1.1.0-alpha06")
// Lottie
implementation("com.airbnb.android:lottie:6.2.0")
// Serialization Json
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1")
В приведенном выше примере указан путь до aar-файлов, находящихся в директории libs проекта. Если вы разместили их в другом месте, то нужно будет указать ваш путь до файлов. Подробнее смотрите в Документации для Android .
Инициализация SDK
Для инициализации SDK необходимо вызвать метод initialize и передать в него SPaySdkInitConfig
Параметры структуры SPaySdkInitConfig
| Параметр | Тип | Дефолтное значение | Обязательный | Описание |
|---|---|---|---|---|
| enableBnpl | Boolean | false | Нет | Если параметр не передан, дефолтное значение false. Параметр отвечает за функционал оплаты ч астями. Значение true не гарантирует, что оплата частями будет доступна, но значение false гарантирует, что оплата частями будет не доступна |
| stage | SPayStage | - | Да | Стенд с которым будет взаимодействовать SDK. Структура SPayStage |
| helperConfig | SPayHelperConfig | - | Да | Функционал “Помогашек”. Структура SPayHelperConfig |
| spasiboBonuses | Boolean | true | Нет | Флаг активации функционала бонусов “Спасибо” |
| resultViewNeeded | Boolean | true | Нет | Отображение экранов статусов завершения работы SDK |
| enableLogging | Boolean | false | Нет | Отображение логов SDK в консоль |
| enableOutsideTouchCancelling | Boolean | true | Нет | Включить завершение работы SDK по тапу вне шторки |
| initializationResult | Callback | - | Да | Блок результата инициализации SDK |
Если вы подключили сервис Плати частями и пользователь выбрал этот способ для оплаты заказа, то выполняя через back расши ренный запрос состояния заказа getOderStatusExtended.do, в ответе вы получите значение параметра paymentWay равное BNPL.
Подключить параметр paymentWay в callback-уведомлениях возможно в личном кабинете партнера интернет-эквайринга. Это можно сделать в настройках->основные настройки->callback-уведомления. При заполнении доп. параметров выйдет список всех возможных. Для того, чтобы передавался способ оплаты заказа необходимо выбрать paymentWay.
Оплаченные частями заказы в личном кабинете партнера интернет-эквайринга будут отмечаться признаком BNPL в поле «Платежное средство».
При этом денежные средства по заказам, оплаченным частями, поступят от ООО «ЦНФС» («Центр новых финансовых сервисов»), предоставляющей сервис.
Помогашки
Helpers или помогашки - функционал, позволяющий клиенту с недостаточным количеством средств быстро пополнить счет или выпустить новые продукты для оплаты.
Настройки SBHelperConfig
| Параметр | Тип | Дефолтное значение | Описание |
|---|---|---|---|
| sbp | Boolean | true | Разрешить пополнение карты через СБП |
| creditCard | Boolean | true | Разрешить выпуск кредитной карты |
| debitCard | Boolean | true | Разрешить выпуск дебетовой карты |
class YourApplication : Application() {
override fun onCreate() {
super.onCreate()
val config = SPaySdkInitConfig(
enableBnpl = true,
stage = SPayStage.Prod,
helperConfig = SPayHelperConfig(
isHelperEnabled = true,
disabledHelpers = emptyList()
),
resultViewNeeded = true,
enableLogging = false,
spasiboBonuses = true,
enableOutsideTouchCancelling = true,
initializationResult = { initializationResult -> ... }
)
SPaySdkApp.getInstance().initialize(this, config)
}
}
При вызове данного метода подгружается конфиг, который содержит строковые ресурсы и картинки. Если метод был вызван не при старте приложения, то есть шанс, что SDK не успеет получить конфиг, в результате чего кнопка SDK может быть отрисована некорректно или не отрисована вовсе.
Добавление кнопки
Для вызова метода оплаты можно использовать готовый класс кнопки 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 является обязательным для вызова
Кнопка должна быть отрисована только в том случае, если мето д isReadyForSPaySdk вернет SdkReadyCheckResult.Ready
Состояние SDK, возвращаемое на вызов метода isReadyForSPaySdk
Проверка установлен ли СБОЛ на устройстве
/**
* Структура состояния готовности SDK к работе. Результат вызова метода isReadyForSPaySdk
*/
sealed class SdkReadyCheckResult {
/**
* Состояние SDK готово к использованию
*/
object Ready : SdkReadyCheckResult()
/**
* Состояние SDK не готово к использованию
*
* @param cause [String] Причина не готовности SDK
*/
data class NotReady(val cause: String) : SdkReadyCheckResult()
}
Запрос разрешений
Для работы 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" />
Вызов диалогового окна на запрос разрешений от пользователя реализован при обращении к методу запуска сценария оплаты, при условии, что как минимум одно разрешение не было выдано пользователем.
Независимо от результата запроса разрешений от пользователя сценарий оплаты будет продолжен.