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

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

Примечание

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

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

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

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

Шаг 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.YPayUltimateWidgetView
        android:id="@+id/ultimateWidgetView"
        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 Android SDK: виджет Simple, тип «Сплит и кешбэк»
type WidgetType.CASHBACK Android SDK: виджет Simple, тип «Кешбэк»
type WidgetType.SPLIT Android SDK: виджет Simple, тип «Сплит»
Тема виджета
theme WidgetTheme.LIGHT Android SDK: виджет Simple, светлая тема
theme WidgetTheme.DARK Android SDK: виджет Simple, темная тема
Прозрачность виджета
style WidgetStyle.SOLID Android SDK: виджет Simple, непрозрачный фон
style WidgetStyle.TRANSPARENT Android SDK: виджет Simple, прозрачный фон

Примечание

Для отображения виджета необходимо вызвать метод 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 Android SDK: виджет Info, тип «Сплит и кешбэк»
type WidgetType.CASHBACK Android SDK: виджет Info, тип «Кешбэк»
type WidgetType.SPLIT Android SDK: виджет Info, тип «Сплит»
Тема виджета
theme WidgetTheme.LIGHT Android SDK: виджет Info, светлая тема
theme WidgetTheme.DARK Android SDK: виджет Info, темная тема

Примечание

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

UltimateWidget

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<com.yandex.pay.widgets.info.api.view.YPayUltimateWidgetView
    android:id="@+id/ultimateWidget"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:ypay_ultimate_widget_theme="dark"
    app:ypay_ultimate_widget_header="standard"
    app:ypay_ultimate_widget_background="custom"
    app:ypay_ultimate_widget_background_color="#000000"
    app:ypay_ultimate_widget_has_outline="true"
    app:ypay_ultimate_widget_radius="30dp"
    app:ypay_ultimate_widget_has_padding="true"
    app:ypay_ultimate_widget_size="small"
    app:ypay_ultimate_widget_has_checkout_button="true" />

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

Параметр Значение Внешний вид
Тема виджета
theme WidgetTheme.LIGHT Android SDK: Ultimate-виджет, светлая тема
theme WidgetTheme.DARK Android SDK: Ultimate-виджет, темная тема
theme WidgetTheme.SYSTEM (по умолчанию) Android SDK: Ultimate-виджет, системная тема
Тип шапки
header WidgetHeader.STANDARD (по умолчанию) Android SDK: Ultimate-виджет, стандартная шапка
header WidgetHeader.MINIFIED Android SDK: Ultimate-виджет, миниатюрная шапка
Фон виджета
background WidgetBackground.STANDARD (по умолчанию) Android SDK: Ultimate-виджет, стандартный фон
background WidgetBackground.TRANSPARENT Android SDK: Ultimate-виджет, прозрачный фон
background WidgetBackground.CUSTOM Android SDK: Ultimate-виджет, кастомный фон
Обводка виджета
hasOutline true Android SDK: Ultimate-виджет с обводкой
hasOutline false (по умолчанию) Android SDK: Ultimate-виджет без обводки
Радиус виджета
radius 0dp Android SDK: Ultimate-виджет, радиус 0dp
radius 20dp (по умолчанию) Android SDK: Ultimate-виджет, радиус 20dp
radius 32dp Android SDK: Ultimate-виджет, радиус 32dp
Внутренний отступ
hasPadding true (по умолчанию) Android SDK: Ultimate-виджет с отступом
hasPadding false Android SDK: Ultimate-виджет без отступа
Размер виджета
size WidgetSize.SMALL Android SDK: Ultimate-виджет, размер Small
size WidgetSize.MEDIUM (по умолчанию) Android SDK: Ultimate-виджет, размер Medium
Кнопка «Оформить»
hasCheckoutButton true Android SDK: Ultimate-виджет с кнопкой «Оформить»
hasCheckoutButton false (по умолчанию) Android SDK: Ultimate-виджет без кнопки «Оформить»

Примечание

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

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

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

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

Предыдущая