ym88659208ym87991671
Вспомогательные структуры данных | Документация для разработчиков

Вспомогательные структуры данных

Обновлено 20 ноября 2025

Конфиг для инициализации SDK

EcomSdkSetupConfig

ПараметрТипДефолтное значениеОбязательныйОписание
contextContext-ДаContext или ApplicationContext приложения
ecomUiPreferencesEcomUiPreferences-НетНастройки для уникализации интерфейса EcomUiPreferences
stageEcomSdkStage-ДаСписок стендов для работы с EcomSdk. Структура EcomSdkStage
disabledFeaturesList<EcomSdkFeature>listOf()НетСписок выключенных features. Структура EcomSdkFeature
enableLoggingBooleanfalseНетФлаг включенного логирования для партнера
callback(Boolean) -> Unit-ДаБлок, отрабатыващий после настройки SDK. Корректное значение колбэка true
metricCallback(Pair<AnalyticalEvent, Int>) -> UnitnullНетБлок, отбрасывающий аналитические бизнес метрики при прохождении сценария SDK. Структура AnalyticalEvent

Параметры кастомизации UI EcomSdk

EcomUiPreferences


/**
* Параметры кастомизации EcomSdk
*/
data class EcomUiPreferences(
/**
* Настройки светлой темы
/*
val lightTheme: EcomUIColorPreferences? = null,
/**
* Настройки темной темы
*/
val darkTheme: EcomUIColorPreferences? = null,
/**
* Общие настройки
*/
val common: EcomUICommonPreferences? = null
)

Структура EcomUIColorPreferences Структура EcomUICommonPreferences

Параметры кастомизации цветовой схемы UI EcomSdk

EcomUIColorPreferences


/**
* Настройки цветов
*/
class EcomUIColorPreferences(
/**
* Цвет поля ввода в формате RGB (#FFFFFF)
*/
inputBG: String? = null,

/**
* Цвет основного бэкграунда в формате RGB (#FFFFFF)
*/
mainBG: String? = null,

/**
* Основной цвет текста в формате RGB (#FFFFFF)
*/
textPrimary: String? = null,

/**
* Вторичный цвет текста в формате RGB (#FFFFFF)
*/
textSecondary: String? = null,

/**
* Цвет успешного выполнения в формате RGB (#FFFFFF)
*/
accentSuccess: String? = null,

/**
* Цвет ошибки в формате RGB (#FFFFFF)
*/
accentError: String? = null,

/**
* Цвет для анимации загрузки в формате RGB (#FFFFFF)
*/
loader: String? = null,

/**
* Цвет для вторичных кнопок в формате RGB (#FFFFFF)
*/
buttonSecondary: String? = null,

/**
* Ссылка на иконка мерчанта (URL)
*/
merchantIcon: String? = null,
)

Общие параметры кастомизации UI EcomSdk

EcomUICommonPreferences


/**
* Общие настройки UI EcomSdk
*/
data class EcomUICommonPreferences(
/**
* Размер радиуса углов элементов
*/
val radiusSize: SBRadiusSize? = SBRadiusSize.M,

/**
* Размер текста
*/
val textSize: SBTextSize? = SBTextSize.M,
)

Структура SBRadiusSize Структура SBTextSize

Радиус для элементов UI EcomSdk

SBRadiusSize


/**
* Размер радиуса углов элементов
*/
enum class SBRadiusSize(val value: String) {
S("s"),
M("m"),
L("l"),
}

Размер текста для элементов UI EcomSdk

SBTextSize


/**
* Размер текста
*/
enum class SBTextSize(val value: String) {
S("s"),
M("m"),
L("l"),
}

Перечисление стендов SDK

EcomSdkStage

/**
* Enum со стендами SDK
* */
public enum class EcomSdkStage: Stage {
/** Продовый стенд */
Prod,
/** Песочница */
SandBox
}

Перечисление фичей SDK

EcomSdkFeature


/**
* Enum с фичами SDK
* */
enum class EcomSdkFeature {
/** Отображение результирующих экранов */
RESULT_VIEW,
/** Приём платежей через СБП */
PAY_BY_SBP,
/** Приём платежей через SPaySDK */
PAY_BY_SPAY,
/** Прием платежей картами */
BINDING,
/** Оплата новой картой */
NEW_CARD
}

Конфиг для запуска сценария оплаты методом pay

EcomSdkMerchantOptionsConfig


/**
* Конгфиг, который передает партнер
*
* @property context [Context]
* @property bankInvoiceId id заказа для оплаты
* @property apiKey ключ мерчанта
* @property merchantLogin логин мерчанта
* @property orderNumber номер заказа мерчанта
* @property appPackageName package приложения ммерчанта
* @property preferredSPayMethod предпочитаемый метод для оплаты через SPaySdk (необязательный)
* @property callback результат оплаты [EcomSdkResult]
*/
data class EcomSdkMerchantOptionsConfig(
val context: Context,
val bankInvoiceId: String,
val apiKey: String,
val merchantLogin: String,
val orderNumber: String,
val appPackageName: String,
val preferredSPayMethod: EcomSPayMethod,
val callback: ((EcomSdkResult) -> Unit),
)

Доступные способы оплаты через SPaySdk

EcomSPayMethod


sealed interface EcomSPayMethod : Parcelable {
/**
* Оплата с использованием 6-ти частей и обычной оплатой (без paymentToken и paymentOrder)
*/
object Default : EcomSPayMethod

/**
* Оплата с параметрами для проведения оплаты (с paymentToken и paymentOrder)
*/
object WithBankInvoiceId : EcomSPayMethod

/**
* Оплата со списанием бонусов Спасибо
*/
object WithBonuses : EcomSPayMethod

/**
* Оплата без рефреша с использованием 6-ти частей и обычной оплатой (без paymentToken и paymentOrder)
*/
object WithoutRefresh : EcomSPayMethod

/**
* Оплата с использованием платежного счета
*/
object WithPaymentAccount: EcomSPayMethod

/**
* Оплата с использованием платежа на 6 частей
*/
object WithPartPay: EcomSPayMethod

/**
* Оплата по связке
*
* @param bindingId Уникальный идентификатор связки
*/
data class WithBinding(val bindingId: String): EcomSPayMethod

/**
* Оплата с авторизацией только по номеру телефона
*
* @param phoneNumber Номер телефона
*/
data class WithPhoneNumber(val phoneNumber: String): EcomSPayMethod
}

Результат метода pay()

EcomSdkResult


/**
* Возможные результаты проведения оплаты
*
* @property Success оплата произведена успешно
* @property Waiting статус оплаты неизвестен
* @property Cancel оплата отменена пользователем
* @property Error оплата не была выполнена из-за ошибки
*
* @param localSessionId уникальный номер сессии оплаты через SDK
*/
sealed class EcomSdkResult(open var localSessionId: String? = null) {
data class Success(override var localSessionId: String? = null) : EcomSdkResult(localSessionId)

/**
* Класс неизвестного статуса оплаты при работе с EcomSdk
*
* @param httpCode код ответа http
* @param errorCode внутренний код ответа от севера
* @param description описание ошибки
* @param bankInvoiceId уникальный номер заказа в системе банка
* @param localSessionId уникальный номер сессии оплаты через SDK
*/
data class Waiting(
val httpCode: String? = null,
val errorCode: String? = null,
val description: String? = null,
val bankInvoiceId: String? = null,
override var localSessionId: String? = null,
) : EcomSdkResult(localSessionId)

data class Cancel(override var localSessionId: String? = null) : EcomSdkResult(localSessionId)

/**
* Класс ошибки при работе с EcomSdk
*
* @param httpCode код ответа http
* @param errorCode внутренний код ответа от севера
* @param description описание ошибки
* @param bankInvoiceId уникальный номер заказа в системе банка
* @param localSessionId уникальный номер сессии оплаты через SDK
*/
data class Error(
val httpCode: String? = null,
val errorCode: String? = null,
val description: String? = null,
val bankInvoiceId: String? = null,
override var localSessionId: String? = null,
) : EcomSdkResult(localSessionId)
}

Структура бизнес метрик для партнера

AnalyticalEvent


/**
* Класс данных, описывающий отправляемые события в аналитику, для партнера
*
* @param action аналитическое событие
* @param httpCode код запроса https
* @param errorCode внутренний код ошибки
* @param description описание ошибки
*/
data class AnalyticalEvent(
val action: String,
val httpCode: Int? = null,
val errorCode: String? = null,
val description: String? = null,
)

Платежные инструменты для работы в режиме песочницы

Тип тестированияНомер картыСрок действия картыCVVSMS-кодПароль
Без 3ds427938062037892906/26353нетнет
С 3ds220220802020768505/27133111111нет
С 3ds220138200000004705/27133нет1qwezxc

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней

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