Интеграция инвентаря
Шаг 1. Подключение SDK
Откройте gradle-файл вашего проекта, найдите раздел dependencies и добавьте туда зависимость com.yandex.pay:inventory (прямая ссылка). Рекомендуется использовать наиболее актуальную версию библиотеки.
Обратите внимание: все флоу Yandex Pay Kit должны подключаться с единой версией во избежание ошибок.
dependencies {
// Другие зависимости
implementation("com.yandex.pay:inventory:<LATEST_VERSION>")
// Другие флоу, например:
// implementation("com.yandex.pay:assistant:<LATEST_VERSION>")
}
Шаг 2. Инициализация SDK
Инициализируйте YPay SDK в Application и зарегистрируйте Inventory Flow:
YPay.init(
context = context,
flows = listOf(
inventoryFlow(merchantId = "<YOUR_MERCHANT_ID>"),
// Другие флоу
)
) {
environment = YPayEnvironment.PRODUCTION
theme = YPayTheme.SYSTEM
locale = YPayLocale.SYSTEM
}
Важно
Параметр merchantId является обязательным. Параметры environment, theme и locale могут быть пропущены, тогда будут использованы стандартные значения YPayEnvironment.PRODUCTION, YPayTheme.SYSTEM и YPayLocale.SYSTEM.
Шаг 3. Добавление бейджа
Бейджи — небольшие элементы интерфейса, которые содержат информацию о скидках, кешбэке баллами Плюса или платежах Яндекс Сплит.
Разместите бейдж YPayBadgeView в вашей разметке:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Ваша разметка -->
<com.yandex.pay.inventory.api.badge.YPayBadgeView
android:id="@+id/ypayBadgeView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:ypay_badge_type="bnpl|cashback|ultimate|ultimate_bnpl"
app:ypay_badge_theme="system|light|dark"
app:ypay_badge_align="left|center|right"
app:ypay_badge_hiding_policy="gone|invisible" />
<!-- Другие параметры... (см. шаг 4) -->
<!-- Все параметры также можно указать программно -->
</LinearLayout>
Разместите виджет YPayBadgeView в вашей разметке с помощью composable-функции AndroidView:
@Composable
fun YPayBadgeViewExample(
modifier: Modifier = Modifier
) {
// Подготовка данных
val sum = BigDecimal("100.00")
val renderData = BadgeRenderData.CashbackBadgeRenderData(
theme = BadgeTheme.SYSTEM,
align = BadgeAlign.LEFT,
color = CashbackBadgeColor.PRIMARY,
variant = CashbackBadgeVariant.DETAILED
)
// Отображение виджета
AndroidView(
modifier = modifier,
factory = { context ->
// Инициализация виджета
YPayBadgeView(context).apply {
// Настройка виджета
setSum(sum = sum)
setRenderData(renderData = renderData)
// Другие параметры (см. шаг 4)
}
}
)
}
Шаг 4. Настройка бейджа
- Выберите подходящий тип отображения бейджа:
| Тип бейджа | Описание | Внешний вид |
|---|---|---|
Ultimate |
Сконфигурирует универсальный бейдж с персонализированными предложениями | ![]() |
Ultimate Bnpl |
Сконфигурирует универсальный бейдж с персонализированными предложениями Сплита | ![]() |
Cashback |
Сконфигурирует бейдж с отображением кешбэка | ![]() |
Bnpl |
Сконфигурирует бейдж с отображением Сплита | ![]() |
- Установите визуальные параметры бейджа, соответствующие выбранному типу отображения, с помощью метода
setRenderData:
// Настройка визуальных параметров бейджа
ypayBadgeView.setRenderData(
renderData = BadgeRenderData.Ultimate(
// Выравнивание бейджа относительно контейнера
align = BadgeAlign.LEFT,
// Тема бейджа
theme = BadgeTheme.SYSTEM,
// Вариант отображения бейджа
variant = UltimateBadgeVariant.DEFAULT,
// Контент бейджа
mode = UltimateBadgeMode.AUTO,
)
)
// Настройка политики скрытия бейджа
ypayBadgeView.setHidingPolicy(hidingPolicy = HidingPolicy.GONE)
Доступные параметры:
Параметр align
Выравнивание бейджа относительно контейнера
| Значение | Описание |
|---|---|
BadgeAlign.LEFT |
Содержимое бейджа будет выровнено по левому краю |
BadgeAlign.CENTER |
Содержимое бейджа будет выровнено по центру |
BadgeAlign.RIGHT |
Содержимое бейджа будет выровнено по правому краю |
Параметр theme
Тема бейджа
| Значение | Описание |
|---|---|
BadgeTheme.LIGHT |
Бейдж будет отрисован в светлой теме |
BadgeTheme.DARK |
Бейдж будет отрисован в темной теме |
BadgeTheme.SYSTEM |
Бейдж будет отрисован в теме, установленной на устройстве |
Параметр variant
Вариант отображения бейджа
| Значение | Описание |
|---|---|
UltimateBadgeVariant.DEFAULT |
Стандартный вариант отображения бейджа. Бейдж будет показывать сумму скидки или кэшбека вместе с подписью |
UltimateBadgeVariant.COMPACT |
Компактный вариант отображения бейджа. Бейдж будет показывать только сумму скидки или кэшбека |
Параметр mode
Контент бейджа
| Значение | Описание |
|---|---|
UltimateBadgeMode.AUTO |
Бейдж будет показывать наиболее релевантный контент |
UltimateBadgeMode.DISCOUNT_ONLY |
Бейдж будет показывать только персональную скидку |
UltimateBadgeMode.CASHBACK_ONLY |
Бейдж будет показывать только кешбэк |
UltimateBadgeMode.ALL |
Бейдж будет показывать и персональную скидку, и кэшбек |
Параметр hidingPolicy
Политика скрытия бейджа
| Значение | Описание |
|---|---|
HidingPolicy.GONE |
При отсутствии данных бейдж скрыт (контейнер бейджа не будет занимать место на экране) |
HidingPolicy.INVISIBLE |
При отсутствии данных бейдж будет невидим (контейнер бейджа продолжит занимать место на экране) |
// Настройка визуальных параметров бейджа
ypayBadgeView.setRenderData(
renderData = BadgeRenderData.UltimateBnpl(
// Выравнивание бейджа относительно контейнера
align = BadgeAlign.LEFT,
// Тема бейджа
theme = BadgeTheme.SYSTEM,
// Вариант отображения бейджа
variant = UltimateBnplBadgeVariant.DEFAULT,
// Контент бейджа
mode = UltimateBnplBadgeMode.AUTO,
)
)
// Настройка политики скрытия бейджа
ypayBadgeView.setHidingPolicy(hidingPolicy = HidingPolicy.GONE)
Доступные параметры:
Параметр align
Выравнивание бейджа относительно контейнера
| Значение | Описание |
|---|---|
BadgeAlign.LEFT |
Содержимое бейджа будет выровнено по левому краю |
BadgeAlign.CENTER |
Содержимое бейджа будет выровнено по центру |
BadgeAlign.RIGHT |
Содержимое бейджа будет выровнено по правому краю |
Параметр theme
Тема бейджа
| Значение | Описание |
|---|---|
BadgeTheme.LIGHT |
Бейдж будет отрисован в светлой теме |
BadgeTheme.DARK |
Бейдж будет отрисован в темной теме |
BadgeTheme.SYSTEM |
Бейдж будет отрисован в теме, установленной на устройстве |
Параметр variant
Вариант отображения бейджа
| Значение | Описание |
|---|---|
UltimateBnplBadgeVariant.DEFAULT |
Стандартный вариант отображения бейджа. Бейдж будет показывать сумму скидки или кэшбека вместе с подписью |
UltimateBnplBadgeVariant.COMPACT |
Компактный вариант отображения бейджа. Бейдж будет показывать только сумму скидки или кэшбека |
Параметр mode
Контент бейджа
| Значение | Описание |
|---|---|
UltimateBnplBadgeMode.AUTO |
Бейдж будет показывать наиболее релевантный контент |
UltimateBnplBadgeMode.DISCOUNT_ONLY |
Бейдж будет показывать только персональную скидку |
UltimateBnplBadgeMode.PROMO_PLAN_ONLY |
Бейдж будет показывать только промо-план 0-0-N |
UltimateBnplBadgeMode.ALL |
Бейдж будет показывать и персональную скидку, и промо-план |
Параметр hidingPolicy
Политика скрытия бейджа
| Значение | Описание |
|---|---|
HidingPolicy.GONE |
При отсутствии данных бейдж скрыт (контейнер бейджа не будет занимать место на экране) |
HidingPolicy.INVISIBLE |
При отсутствии данных бейдж будет невидим (контейнер бейджа продолжит занимать место на экране) |
// Настройка визуальных параметров бейджа
ypayBadgeView.setRenderData(
renderData = BadgeRenderData.Cashback(
// Выравнивание бейджа относительно контейнера
align = BadgeAlign.LEFT,
// Цвет бейджа
color = CashbackBadgeColor.PRIMARY,
// Тема бейджа
theme = BadgeTheme.SYSTEM,
// Вариант отображения бейджа
variant = CashbackBadgeVariant.DETAILED
)
)
// Настройка политики скрытия бейджа
ypayBadgeView.setHidingPolicy(hidingPolicy = HidingPolicy.GONE)
Доступные параметры:
Параметр align
Выравнивание бейджа относительно контейнера
| Значение | Описание |
|---|---|
BadgeAlign.LEFT |
Содержимое бейджа будет выровнено по левому краю |
BadgeAlign.CENTER |
Содержимое бейджа будет выровнено по центру |
BadgeAlign.RIGHT |
Содержимое бейджа будет выровнено по правому краю |
Параметр color
Цвет бейджа
| Значение | Описание |
|---|---|
CashbackBadgeColor.PRIMARY |
|
CashbackBadgeColor.GREY |
|
CashbackBadgeColor.TRANSPARENT |
Параметр theme
Тема бейджа
| Значение | Описание |
|---|---|
BadgeTheme.LIGHT |
Бейдж будет отрисован в светлой теме |
BadgeTheme.DARK |
Бейдж будет отрисован в темной теме |
BadgeTheme.SYSTEM |
Бейдж будет отрисован в теме, установленной на устройстве |
Параметр variant
Вариант отображения бейджа
| Значение | Описание |
|---|---|
CashbackBadgeVariant.DETAILED |
Стандартный вариант отображения бейджа. Бейдж будет показывать сумму скидки или кэшбека вместе с подписью |
CashbackBadgeVariant.SIMPLE |
Компактный вариант отображения бейджа. Бейдж будет показывать только сумму скидки или кэшбека |
Параметр hidingPolicy
Политика скрытия бейджа
| Значение | Описание |
|---|---|
HidingPolicy.GONE |
При отсутствии данных бейдж скрыт (контейнер бейджа не будет занимать место на экране) |
HidingPolicy.INVISIBLE |
При отсутствии данных бейдж будет невидим (контейнер бейджа продолжит занимать место на экране) |
// Настройка визуальных параметров бейджа
ypayBadgeView.setRenderData(
renderData = BadgeRenderData.Bnpl(
// Выравнивание бейджа относительно контейнера
align = BadgeAlign.LEFT,
// Цвет бейджа
color = BnplBadgeColor.PRIMARY,
// Тема бейджа
theme = BadgeTheme.SYSTEM,
// Вариант отображения бейджа
variant = BnplBadgeVariant.DETAILED
)
)
// Настройка политики скрытия бейджа
ypayBadgeView.setHidingPolicy(hidingPolicy = HidingPolicy.GONE)
Доступные параметры:
Параметр align
Выравнивание бейджа относительно контейнера
| Значение | Описание |
|---|---|
BadgeAlign.LEFT |
Содержимое бейджа будет выровнено по левому краю |
BadgeAlign.CENTER |
Содержимое бейджа будет выровнено по центру |
BadgeAlign.RIGHT |
Содержимое бейджа будет выровнено по правому краю |
Параметр color
Цвет бейджа
| Значение | Описание |
|---|---|
BnplBadgeColor.PRIMARY |
|
BnplBadgeColor.GREEN |
|
BnplBadgeColor.GREY |
|
BnplBadgeColor.TRANSPARENT |
Параметр theme
Тема бейджа
| Значение | Описание |
|---|---|
BadgeTheme.LIGHT |
Бейдж будет отрисован в светлой теме |
BadgeTheme.DARK |
Бейдж будет отрисован в темной теме |
BadgeTheme.SYSTEM |
Бейдж будет отрисован в теме, установленной на устройстве |
Параметр variant
Вариант отображения бейджа
| Значение | Описание |
|---|---|
BnplBadgeVariant.DETAILED |
Стандартный вариант отображения бейджа. Бейдж будет показывать сумму скидки или кэшбека вместе с подписью |
BnplBadgeVariant.SIMPLE |
Компактный вариант отображения бейджа. Бейдж будет показывать только сумму скидки или кэшбека |
Параметр hidingPolicy
Политика скрытия бейджа
| Значение | Описание |
|---|---|
HidingPolicy.GONE |
При отсутствии данных бейдж скрыт (контейнер бейджа не будет занимать место на экране) |
HidingPolicy.INVISIBLE |
При отсутствии данных бейдж будет невидим (контейнер бейджа продолжит занимать место на экране) |
Или с помощью атрибутов XML:
<com.yandex.pay.inventory.api.badge.YPayBadgeView
android:id="@+id/ypayBadgeView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:ypay_badge_type="ultimate"
app:ypay_badge_theme="system"
app:ypay_badge_align="left"
app:ypay_badge_ultimate_variant="default"
app:ypay_badge_ultimate_mode="auto"
app:ypay_badge_hiding_policy="gone" />
Доступные параметры:
Параметр app:ypay_badge_align
Выравнивание бейджа относительно контейнера
| Значение | Описание |
|---|---|
left |
Содержимое бейджа будет выровнено по левому краю |
center |
Содержимое бейджа будет выровнено по центру |
right |
Содержимое бейджа будет выровнено по правому краю |
Параметр app:ypay_badge_theme
Тема бейджа
| Значение | Описание |
|---|---|
light |
Бейдж будет отрисован в светлой теме |
dark |
Бейдж будет отрисован в темной теме |
system |
Бейдж будет отрисован в теме, установленной на устройстве |
Параметр app:ypay_badge_ultimate_variant
Вариант отображения бейджа
| Значение | Описание |
|---|---|
default |
Стандартный вариант отображения бейджа. Бейдж будет показывать сумму скидки или кэшбека вместе с подписью |
compact |
Компактный вариант отображения бейджа. Бейдж будет показывать только сумму скидки или кэшбека |
Параметр app:ypay_badge_ultimate_mode
Контент бейджа
| Значение | Описание |
|---|---|
auto |
Бейдж будет показывать наиболее релевантный контент |
discount_only |
Бейдж будет показывать только персональную скидку |
cashback_only |
Бейдж будет показывать только кешбэк |
all |
Бейдж будет показывать и персональную скидку, и кэшбек |
Параметр app:ypay_hiding_policy
Политика скрытия бейджа
| Значение | Описание |
|---|---|
gone |
При отсутствии данных бейдж скрыт (контейнер бейджа не будет занимать место на экране) |
invisible |
При отсутствии данных бейдж будет невидим (контейнер бейджа продолжит занимать место на экране) |
<com.yandex.pay.inventory.api.badge.YPayBadgeView
android:id="@+id/ypayBadgeView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:ypay_badge_type="ultimate_bnpl"
app:ypay_badge_theme="system"
app:ypay_badge_align="left"
app:ypay_badge_ultimate_bnpl_variant="default"
app:ypay_badge_ultimate_bnpl_mode="auto"
app:ypay_badge_hiding_policy="gone" />
Доступные параметры:
Параметр app:ypay_badge_align
Выравнивание бейджа относительно контейнера
| Значение | Описание |
|---|---|
left |
Содержимое бейджа будет выровнено по левому краю |
center |
Содержимое бейджа будет выровнено по центру |
right |
Содержимое бейджа будет выровнено по правому краю |
Параметр app:ypay_badge_theme
Тема бейджа
| Значение | Описание |
|---|---|
light |
Бейдж будет отрисован в светлой теме |
dark |
Бейдж будет отрисован в темной теме |
system |
Бейдж будет отрисован в теме, установленной на устройстве |
Параметр app:ypay_badge_ultimate_bnpl_variant
Вариант отображения бейджа
| Значение | Описание |
|---|---|
default |
Стандартный вариант отображения бейджа. Бейдж будет показывать сумму скидки или кэшбека вместе с подписью |
compact |
Компактный вариант отображения бейджа. Бейдж будет показывать только сумму скидки или кэшбека |
Параметр app:ypay_badge_ultimate_bnpl_mode
Контент бейджа
| Значение | Описание |
|---|---|
auto |
Бейдж будет показывать наиболее релевантный контент |
discount_only |
Бейдж будет показывать только персональную скидку |
promo_plan_only |
Бейдж будет показывать только промо-план 0-0-N |
all |
Бейдж будет показывать и персональную скидку, и промо-план |
Параметр app:ypay_hiding_policy
Политика скрытия бейджа
| Значение | Описание |
|---|---|
gone |
При отсутствии данных бейдж скрыт (контейнер бейджа не будет занимать место на экране) |
invisible |
При отсутствии данных бейдж будет невидим (контейнер бейджа продолжит занимать место на экране) |
<com.yandex.pay.inventory.api.badge.YPayBadgeView
android:id="@+id/ypayBadgeView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:ypay_badge_type="cashback"
app:ypay_badge_theme="system"
app:ypay_badge_align="left"
app:ypay_badge_cashback_color="primary"
app:ypay_badge_cashback_variant="detailed"
app:ypay_badge_hiding_policy="gone" />
Доступные параметры:
Параметр app:ypay_badge_align
Выравнивание бейджа относительно контейнера
| Значение | Описание |
|---|---|
left |
Содержимое бейджа будет выровнено по левому краю |
center |
Содержимое бейджа будет выровнено по центру |
right |
Содержимое бейджа будет выровнено по правому краю |
Параметр app:ypay_badge_cashback_color
Цвет бейджа
| Значение | Описание |
|---|---|
primary |
|
grey |
|
transparent |
Параметр app:ypay_badge_theme
Тема бейджа
| Значение | Описание |
|---|---|
light |
Бейдж будет отрисован в светлой теме |
dark |
Бейдж будет отрисован в темной теме |
system |
Бейдж будет отрисован в теме, установленной на устройстве |
Параметр app:ypay_badge_cashback_variant
Вариант отображения бейджа
| Значение | Описание |
|---|---|
detailed |
Стандартный вариант отображения бейджа. Бейдж будет показывать сумму скидки или кэшбека вместе с подписью |
simple |
Компактный вариант отображения бейджа. Бейдж будет показывать только сумму скидки или кэшбека |
Параметр app:ypay_hiding_policy
Политика скрытия бейджа
| Значение | Описание |
|---|---|
gone |
При отсутствии данных бейдж скрыт (контейнер бейджа не будет занимать место на экране) |
invisible |
При отсутствии данных бейдж будет невидим (контейнер бейджа продолжит занимать место на экране) |
<com.yandex.pay.inventory.api.badge.YPayBadgeView
android:id="@+id/ypayBadgeView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:ypay_badge_type="bnpl"
app:ypay_badge_theme="system"
app:ypay_badge_align="left"
app:ypay_badge_bnpl_color="primary"
app:ypay_badge_bnpl_variant="detailed"
app:ypay_badge_hiding_policy="gone" />
Доступные параметры:
Параметр app:ypay_badge_align
Выравнивание бейджа относительно контейнера
| Значение | Описание |
|---|---|
left |
Содержимое бейджа будет выровнено по левому краю |
center |
Содержимое бейджа будет выровнено по центру |
right |
Содержимое бейджа будет выровнено по правому краю |
Параметр app:ypay_badge_bnpl_color
Цвет бейджа
| Значение | Описание |
|---|---|
primary |
|
green |
|
grey |
|
transparent |
Параметр app:ypay_badge_theme
Тема бейджа
| Значение | Описание |
|---|---|
light |
Бейдж будет отрисован в светлой теме |
dark |
Бейдж будет отрисован в темной теме |
system |
Бейдж будет отрисован в теме, установленной на устройстве |
Параметр app:ypay_badge_bnpl_variant
Вариант отображения бейджа
| Значение | Описание |
|---|---|
detailed |
Стандартный вариант отображения бейджа. Бейдж будет показывать сумму скидки или кэшбека вместе с подписью |
simple |
Компактный вариант отображения бейджа. Бейдж будет показывать только сумму скидки или кэшбека |
Параметр app:ypay_hiding_policy
Политика скрытия бейджа
| Значение | Описание |
|---|---|
gone |
При отсутствии данных бейдж скрыт (контейнер бейджа не будет занимать место на экране) |
invisible |
При отсутствии данных бейдж будет невидим (контейнер бейджа продолжит занимать место на экране) |
- Передайте данные, необходимые для отрисовки бейджа и персонализации предложений. Для всех типов бейджей обязательным параметром является сумма:
// Установка суммы
ypayBadgeView.setSum(sum = BigDecimal(10000))
Для бейджа типа Ultimate и Ultimate Bnpl также требуется указать место размещения бейджа и уникальный ID товара:
// Установка источника размещения бейджа
ypayBadgeView.setSource(source = "item") // "main", "listing", "item", "cart", "checkout", "other"
// Установка уникального ID товара для персонализации
ypayBadgeView.setSkuId(skuId = "unique_product_id")
Примечание
Чтобы изменить параметры бейджа, повторно вызовите методы setSum(), setRenderData(), setSource() или setSkuID() с новыми параметрами. После обновления будет вызван метод requestLayout(), и внешний вид бейджа изменится.
Шаг 5. Проверьте работу приложения
Запустите приложение и проверьте правильность отображения бейджей. Если контейнер бейджа не помещается, уменьшите его размер.

