Начало работы
Минимальная версия 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" />
Вызов диалогового окна на запрос разрешений от пользователя реализован при обращении к методу запуска сценария оплаты, при условии, что как минимум одно разрешение не было выдано пользователем.
Независимо от результата запроса разрешений от пользователя сценарий оплаты будет продолжен.