Интеграция виджетов

Виджеты — это элементы интерфейса, которые сообщают пользователю о возможности оплатить покупку в рассрочку через Сплит или получить кешбэк.

Примечание

Виджеты поддерживаются для Android версий 7.0 (API Level - 24) и выше.

Шаг 1. Подключите библиотеку к вашему проекту

Откройте gradle-файл вашего проекта, найдите раздел dependencies и добавьте туда зависимость на библиотеку com.yandex.pay:widget-info. Рекомендуется использовать наиболее актуальную версию библиотеки.

dependencies {
    ...
    implementation "com.yandex.pay:widget-info:2.3.10"
    ...
}

Шаг 2. Разместите виджет в нужном месте вашей разметки

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- Ваша разметка -->

    <com.yandex.pay.widgets.info.api.view.YPaySimpleWidgetView
        android:id="@+id/simpleWidgetView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- Ваша разметка -->

    <com.yandex.pay.widgets.info.api.view.YPayInfoWidgetView
        android:id="@+id/infoWidgetView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- Ваша разметка -->

    <com.yandex.pay.widgets.info.api.view.YPayBnplPreviewWidgetView
        android:id="@+id/bnplPreviewWidgetView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

Важно

Чтобы информация отображалась корректно, рекомендуем предоставлять виджетам максимально доступную ширину (не менее 250 dp). В качестве высоты виджета следует указывать значение wrap_content. Следует учитывать, что высота виджета может меняться в зависимости от его содержимого.

Шаг 3. Инициализируйте инвентарь

Укажите основные параметры, необходимые для работы инвентаря и виджетов в частности:

// общие параметры инвентаря:
YPayInventory.init {
    // контекст вашего приложения:
    appContext = yourApplicationContext
    // ваш Merchant ID :
    merchantId = YPayMerchantId("")
    // вариант сетевого окружения PROD / SANDBOX:
    environment = YPayNetworkEnvironment.PROD
}
// инициализация компонентов виджетов:
.widgets { }

Важно

Параметры appContext и merchantId являются обязательными. Параметр environment, определяющий сетевое окружение, может быть пропущен. В этом случае будет использовано PROD-окружение.

Для корректного завершения работы с компонентами виджетов, используйте следующий код:

YPayInventory.clear()
    // деинициализация компонентов виджетов:
    .widgets()

Шаг 4. Установите сумму и визуальные параметры виджетов

SimpleWidget

Для настройки SimpleWidget используйте следующие методы:

// Сумма заказа
simpleWidget.setSum(BigDecimal(10000))

// Тип данных в виджете: Сплит, кешбэк или оба варианта
simpleWidget.setTypes(EnumSet.of(WidgetType.SPLIT, WidgetType.CASHBACK))

// Тема виджета: светлая (WidgetTheme.LIGHT), или темная (WidgetTheme.DARK), или системная (WidgetTheme.SYSTEM)
simpleWidget.setTheme(WidgetTheme.DARK)

// Настройки прозрачности: сплошной (WidgetStyle.SOLID) или прозрачный (WidgetStyle.TRANSPARENT)
simpleWidget.setStyle(WidgetStyle.SOLID)

Для настройки внешнего вида виджета можно также использовать атрибуты в XML:

<com.yandex.pay.widgets.info.api.view.YPaySimpleWidgetView
    android:id="@+id/simpleWidget"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:ypay_simple_widget_style="solid"
    app:ypay_simple_widget_theme="system"
    app:ypay_simple_widget_types="all" />

Параметры виджета и их значения приведены в таблице:

Параметр Значение Внешний вид
Тип данных
type WidgetType.SPLIT, WidgetType.CASHBACK Simple Widget Type All
type WidgetType.SPLIT Simple Widget Type Split
type WidgetType.CASHBACK Simple Widget Type Cashback
Тема виджета
theme WidgetTheme.LIGHT Simple Widget Theme Light
theme WidgetTheme.DARK Simple Widget Theme Dark
Прозрачность виджета
style WidgetStyle.SOLID Simple Widget Style Solid
style WidgetStyle.TRANSPARENT Simple Widget Style Transparent

Примечание

Для отображения виджета необходимо вызвать метод setSum(). Остальные параметры имеют значения по умолчанию: все доступные WidgetType, WidgetTheme.SYSTEM и WidgetStyle.SOLID.

InfoWidget

Для настройки InfoWidget используйте следующие методы:

// Сумма заказа
infoWidget.setSum(BigDecimal(10000))

// Тип данных в виджете: Сплит, кешбэк или оба варианта
infoWidget.setTypes(EnumSet.of(WidgetType.SPLIT, WidgetType.CASHBACK))

// Тема виджета: светлая (WidgetTheme.LIGHT), или темная (WidgetTheme.DARK), или системная (WidgetTheme.SYSTEM)
infoWidget.setTheme(WidgetTheme.DARK)

Для настройки внешнего вида виджета можно также использовать атрибуты в XML:

<com.yandex.pay.widgets.info.api.view.YPayInfoWidgetView
    android:id="@+id/infoWidget"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:ypay_info_widget_theme="system"
    app:ypay_info_widget_types="all" />

Параметры виджета и их значения приведены в таблице:

Параметр Значение Внешний вид
Тип данных
type WidgetType.SPLIT, WidgetType.CASHBACK Simple Widget Type All
type WidgetType.SPLIT Simple Widget Type Split
type WidgetType.CASHBACK Simple Widget Type Cashback
Тема виджета
theme WidgetTheme.LIGHT Simple Widget Theme Light
theme WidgetTheme.DARK Simple Widget Theme Dark

Примечание

Для отображения виджета необходимо вызвать метод setSum(). Остальные параметры имеют значения по умолчанию: все доступные WidgetType и WidgetTheme.SYSTEM.

BnplPreviewWidget

Для настройки BnplPreviewWidget используйте следующие методы:

// Сумма заказа
bnplPreviewWidget.setSum(BigDecimal(10000))

// Тема виджета: светлая (WidgetTheme.LIGHT), темная (WidgetTheme.DARK) или системная (WidgetTheme.SYSTEM)
bnplPreviewWidget.setTheme(WidgetTheme.DARK)

// Тип отображения шапки виджета: стандартный (WidgetHeader.STANDARD) или уменьшенный (WidgetHeader.MINIFIED)
bnplPreviewWidget.setHeader(WidgetHeader.STANDARD)

// Фон виджета: стандартный (WidgetBackground.STANDARD), прозрачный (WidgetBackground.TRANSPARENT) или произвольный (WidgetBackground.CUSTOM)
bnplPreviewWidget.setBackground(WidgetBackground.CUSTOM)

// Цвет фона виджета (при установленном WidgetBackground.CUSTOM)
bnplPreviewWidget.setBackgroundColor(0x000000)

// Наличие обводки виджета
bnplPreviewWidget.setHasOutline(true)

// Радиус виджета в пикселях
bnplPreviewWidget.setRadius(90f)

// Наличие внутреннего отступа виджета
bnplPreviewWidget.setHasPadding(true)

// Размер виджета: средний (WidgetSize.MEDIUM) или маленький (WidgetSize.SMALL)
bnplPreviewWidget.setSize(WidgetSize.SMALL)

// Наличие кнопки «Оформить»
bnplPreviewWidget.setHasCheckoutButton(true)

// Слушатель клика по кнопке «Оформить» (параметр selectedPlan содержит количество месяцев выбранного плана Сплита)
bnplPreviewWidget.setCheckoutButtonClickListener { selectedPlan: Int ->
    // Переход на экран оплаты
}

// Слушатель клика по шапке виджета (при установленном WidgetHeader.STANDARD)
bnplPreviewWidget.setHeaderClickListener {
    // Показ информации об оплате частями
}

Для настройки внешнего вида виджета можно также использовать атрибуты в XML:

<com.yandex.pay.widgets.info.api.view.YPayBnplPreviewWidgetView
    android:id="@+id/bnplPreviewWidget"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:ypay_bnpl_preview_widget_theme="dark"
    app:ypay_bnpl_preview_widget_header="standard"
    app:ypay_bnpl_preview_widget_background="custom"
    app:ypay_bnpl_preview_widget_background_color="#000000"
    app:ypay_bnpl_preview_widget_has_outline="true"
    app:ypay_bnpl_preview_widget_radius="30dp"
    app:ypay_bnpl_preview_widget_has_padding="true"
    app:ypay_bnpl_preview_widget_size="small"
    app:ypay_bnpl_preview_widget_has_checkout_button="true" />

Параметры виджета и их значения приведены в таблице:

Параметр Значение Внешний вид
Тема виджета
theme WidgetTheme.LIGHT BnplPreview Widget Theme Light
theme WidgetTheme.DARK BnplPreview Widget Theme Dark
theme WidgetTheme.SYSTEM (по умолчанию) BnplPreview Widget Theme Dark
Тип шапки
header WidgetHeader.STANDARD (по умолчанию) BnplPreview Widget Header Standard
header WidgetHeader.MINIFIED BnplPreview Widget Header Minified
Фон виджета
background WidgetBackground.STANDARD (по умолчанию) BnplPreview Widget Background Standard
background WidgetBackground.TRANSPARENT BnplPreview Widget Background Transparent
background WidgetBackground.CUSTOM BnplPreview Widget Background Custom
Обводка виджета
hasOutline true BnplPreview Widget HasOutline True
hasOutline false (по умолчанию) BnplPreview Widget HasOutline False
Радиус виджета
radius 0dp BnplPreview Widget Radius 0dp
radius 20dp (по умолчанию) BnplPreview Widget Radius 20dp
radius 32dp BnplPreview Widget Radius 32dp
Внутренний отступ
hasPadding true (по умолчанию) BnplPreview Widget HasPadding True
hasPadding false BnplPreview Widget HasPadding False
Размер виджета
size WidgetSize.SMALL BnplPreview Widget WidgetSize Small
size WidgetSize.MEDIUM (по умолчанию) BnplPreview Widget WidgetSize Medium
Кнопка «Оформить»
hasCheckoutButton true BnplPreview Widget HasCheckoutButton True
hasCheckoutButton false (по умолчанию) BnplPreview Widget HasCheckoutButton False

Примечание

Для отображения виджета необходимо вызвать метод setSum(). Остальные параметры имеют значения по умолчанию:

  • тема — WidgetTheme.SYSTEM;
  • тип шапки — WidgetHeader.STANDARD;
  • фон — WidgetBackground.STANDARD;
  • обводка — выключена;
  • радиус виджета — 20dp;
  • внутренний отступ — включен;
  • размер — WidgetSize.MEDIUM;
  • кнопка «Оформить» — скрыта.

Клик по шапке виджета (при установленном WidgetHeader.STANDARD) по умолчанию открывает всплывающее окно с подробными условиями Сплита.

Шаг 5. Запустите приложение и проверьте правильность отображения виджетов