YPay Inventory Flutter Plugin
YPay inventory Flutter Plugin позволяет интегрировать встроенные бейджи и виджеты YandexPaySDK в ваши проекты. Инвентарь — это набор визуальных элементов с брендированными продуктами Яндекса.
Библиотека реализует все варианты нативных бейджей и виджетов, включая их настройку и кастомизацию.
Описание
Бейджи — небольшие элементы на карточке товара, которые содержат информацию о кешбэке баллами Плюса или платежах Яндекс Сплит.
Виджеты — это элементы интерфейса, которые сообщают пользователю о возможности оплатить покупку в рассрочку через Сплит или получить кешбэк.
Требования к подключению
Поддерживаемая версия: Android 7.0 и выше.
Поддерживаемая версия iOS SDK: 14.0 и выше.
Для полноценной работы инвентаря в вашем приложении желательно подключить и настроить YPay SDK. Убедитесь, что выполнили все шаги по подключению и протестировали работу бибилиотеки на обеих платформах. Подробнее можно ознакомиться на странице пакета ypay
Подключение
Добавьте это в файл pubspec.yaml вашего пакета:
dependencies:
ypay_inventory: ^1.0.3
Использование
Для ознакомления доступно example приложение с настройками проекта и всеми вариантами виджетов и бейджей, а также их кастомизация.
Добавление импорта:
import 'package:ypay_inventory/ypay_inventory.dart';
Создание экземпляра:
final ypayInventoryPlugin = YPayInventory.instance;
Инициализируйте инвентарь:
ypayInventoryPlugin.init(
configuration: const Configuration(
// ваш Merchant ID
merchantId: 'your merchant id',
// название вашего магазина
merchantName: 'Demo Merchant',
// ссылка на ваш магазин
merchantUrl: "https://example.ru/",
// [необзятально] режим отладки (по умолчанию - true)
testMode: true,
// [необзятально] режим скрытия бейджей в случае отсутствия данных (по умолчанию - YPayBadgeHidingPolicy.gone)
badgeHidingPolicy: YPayBadgeHidingPolicy.gone,
),
);
Основные виджеты
Визуально посмотреть все возможные варианты состояния виджетов можно на официальной на странице нативного SDK
К бейджам относится YPayBadge, к виджетам - YPaySimpleWidgetView, YPayInfoWidgetView и YPayBnplPreviewWidgetView.
- Названия и свойства виджетов основаны на Android SDK.
- Все бейджи и виджеты - это нативные view, которые показываются через PlatformView.
- Для каждого бейджа или виджета обязательным аргументом является сумма (стоимость товара).
- У каждого бейджа и виджета можно изменить тему: системная, светлая, темная.
- Все виджеты имеют минимальную ширину равную 280 pt.
Android
Для корректного завершения работы с компонентами бейджей, используйте следующий код:
/// деинициализация компонентов бейджей:
ypayInventoryPlugin.clear()
YPayBadge
Виджет для показа бейджей.
Есть два типа виджетов - кэшбэк и сплит. CashbackBadgeRenderData вернет бейдж с кэшбэком, SplitBadgeRenderData вернет бейдж со сплитом.
/// Бейдж кэшбэка
return YPayBadge(
sum: 1230,
width: 200,
renderData: CashbackBadgeRenderData(
// Тема виджета: светлая (YPayWidgetTheme.light), или темная (YPayWidgetTheme.dark), или системная (YPayWidgetTheme.system)
theme: YPayBadgeTheme.system,
// Выравнивание бейджа относительно контейнера: (YPayBadgeAlign.left, YPayBadgeAlign.center, YPayBadgeAlign.right)
align: YPayBadgeAlign.left,
// Цвет бейджа: (SplitBadgeColor.primary, SplitBadgeColor.green, SplitBadgeColor.grey, SplitBadgeColor.transparent)
color: CashbackBadgeColor.primary,
// Версия бейджа
variant: CashbackBadgeVariant.detailed,
),
);
/// Бейдж сплита
return YPayBadge(
sum: 1230,
width: 200,
renderData: SplitBadgeRenderData(
// Тема виджета: светлая (YPayWidgetTheme.light), или темная (YPayWidgetTheme.dark), или системная (YPayWidgetTheme.system)
theme: YPayBadgeTheme.system,
// Выравнивание бейджа относительно контейнера: (YPayBadgeAlign.left, YPayBadgeAlign.center, YPayBadgeAlign.right)
align: YPayBadgeAlign.left,
// Цвет бейджа: (SplitBadgeColor.primary, SplitBadgeColor.green, SplitBadgeColor.grey, SplitBadgeColor.transparent)
color: SplitBadgeColor.primary,
// Версия бейджа, только для типа со Сплитом
variant: SplitBadgeVariant.simple,
),
);
YPaySimpleWidgetView
По умолчанию содержит в себе два блока: Сплит и баллы Плюса. На каждый блок можно нажать и перейти на страницу соответствующего лендинга с более подробной информацией о продуктах Сплита и Плюса.
return YPaySimpleWidgetView(
// Сумма заказа
sum: 10000,
renderData: SimpleWidgetRenderData(
// Настройки прозрачности: сплошной (YPayWidgetStyle.solid) или прозрачный (YPayWidgetStyle.transparent)
style: YPayWidgetStyle.solid,
// Тема виджета: светлая (YPayWidgetTheme.light), или темная (YPayWidgetTheme.dark), или системная (YPayWidgetTheme.system)
theme: YPayWidgetTheme.system,
// Тип данных в виджете: Сплит, кешбэк или оба варианта
types: {YPayWidgetType.split, YPayWidgetType.cashback},
),
);
YPayInfoWidgetView
Отображение можно настроить так, чтобы показывался только сплит, только кэшбэк или три блока сразу. По умолчанию содержит в себе три секции: баллы Плюса, BNPL-план Сплита и информацию об оплате без первоначального взноса.
return YPayInfoWidgetView(
// Сумма заказа
sum: 1230,
renderData: InfoWidgetRenderData(
// Тема виджета: светлая (YPayWidgetTheme.light), или темная (YPayWidgetTheme.dark), или системная (YPayWidgetTheme.system)
theme: YPayWidgetTheme.system,
// Тип данных в виджете: Сплит, кешбэк или оба варианта
types: {YPayWidgetType.split, YPayWidgetType.cashback},
),
);
YPayBnplPreviewWidgetView
Кастомизируемый BNPL-виджет позволяет предварительно ознакомиться с условиями доступных некредитных планов Сплит и выбрать подходящий.
Виджет состоит из четырех частей:
- Кликабельная шапка с логотипом Сплит и краткой информацией о платежах и комиссии выбранного плана;
- Селектор планов (отображается, если пользователю доступно более одного плана Сплита);
- Информация о платежах по датам;
- Кнопка «Оформить» (по умолчанию скрыта).
Для шапки и кнопки «Оформить» можно задать свои функции на клик.
Виджет изменяет ширину, чтобы соблюдать установленные ограничения, однако для каждой его конфигурации существует минимальная ширина. Виджет динамически рассчитывает собственную высоту в зависимости от контента, поэтому мы не рекомендуем добавлять для нее дополнительные constraints.
return YPayBnplPreviewWidgetView(
// Сумма заказа
sum: 1230,
// Слушатель клика по шапке виджета (при установленном YPayWidgetHeader.standard)
onHeaderClick: () {
// Показ информации об оплате частями
},
// Слушатель клика по кнопке «Оформить» (параметр selectedPlan содержит количество месяцев выбранного плана Сплита)
onCheckoutButtonClick: (int selectedPlan) {
// Переход на экран оплаты
},
renderData: BnplPreviewWidgetRenderData(
// Тема виджета: светлая (YPayWidgetTheme.light), или темная (YPayWidgetTheme.dark), или системная (YPayWidgetTheme.system)
theme: YPayWidgetTheme.system,
// Тип отображения шапки виджета: стандартный (YPayWidgetHeader.standard) или уменьшенный (YPayWidgetHeader.minified)
header: YPayWidgetHeader.standard
// Фон виджета: стандартный (YPayWidgetBackground.standard), прозрачный (YPayWidgetBackground.transparent) или произвольный (YPayWidgetBackground.custom)
background: YPayWidgetBackground.standard,
// Наличие обводки виджета
hasOutline: true
// Радиус виджета в пикселях
radius: 30
// Наличие внутреннего отступа виджета
hasPadding: true
// Размер виджета: средний (YPayWidgetSize.medium) или маленький (YPayWidgetSize.small)
size: YPayWidgetSize.medium,
// Наличие кнопки «Оформить»
hasCheckoutButton: false,
// Цвет фона виджета (при установленном YPayWidgetBackground.custom)
backgroundColor: 0x000000,
),
);
Пример отображения
Рекомендуем запустить example для ознакомления со всеми вариантами кастомизации и отображения или посетить официальные страницы виджетов и бейджей для iOS и Android.
