Интеграция инвентаря

Шаг 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. Настройка бейджа

  1. Выберите подходящий тип отображения бейджа:
Тип бейджа Описание Внешний вид
Ultimate Сконфигурирует универсальный бейдж с персонализированными предложениями Pay Badge Ultimate
Ultimate Bnpl Сконфигурирует универсальный бейдж с персонализированными предложениями Сплита Pay Badge Ultimate Bnpl
Cashback Сконфигурирует бейдж с отображением кешбэка Pay Badge Cashback
Bnpl Сконфигурирует бейдж с отображением Сплита Pay Badge Split
  1. Установите визуальные параметры бейджа, соответствующие выбранному типу отображения, с помощью метода 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 При отсутствии данных бейдж будет невидим (контейнер бейджа продолжит занимать место на экране)
  1. Передайте данные, необходимые для отрисовки бейджа и персонализации предложений. Для всех типов бейджей обязательным параметром является сумма:
// Установка суммы
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. Проверьте работу приложения

Запустите приложение и проверьте правильность отображения бейджей. Если контейнер бейджа не помещается, уменьшите его размер.

Предыдущая
Следующая