Виджет Плюса и Сплита

Примечание

В текущем разделе представлена информация о Web SDK. Если вы работаете с мобильными устройствами, перейдите в раздел Mobile SDK.

Интерактивное демо

Посмотрите, какие виджеты имеются в арсенале Яндекс Пэй, и как внешний вид зависит от параметров.

Параметры виджета

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

Параметр Значение Внешний вид
Тема виджета
theme WidgetTheme.Light Виджет, светлая тема
theme WidgetTheme.Dark Виджет, темная тема
Тип шапки
hideWidgetHeader false (по умолчанию) Виджет со стандартной шапкой
hideWidgetHeader true Виджет со скрытой шапкой
Фон виджета
background WidgetBackground.Default (по умолчанию) Виджет со стандартным фоном
background WidgetBackground.Saturated Виджет с насыщенным фоном
background WidgetBackground.Transparent Виджет с прозрачным фоном
Обводка виджета
withOutline true Виджет с обводкой
withOutline false (по умолчанию) Виджет без обводки
Радиус виджета
borderRadius 0px Виджет, скругление 0px
borderRadius 20px (по умолчанию) Виджет, скругление 20px
borderRadius 32px Виджет, скругление 32px
Внутренний отступ
hasPadding true (по умолчанию) Виджет с внутренним отступом
hasPadding false Виджет без внутреннего отступа
Размер виджета
size ultimate-widgetize.SMALL Виджет, размер Small
size ultimate-widgetize.Medium (по умолчанию) Виджет, размер Medium
Кнопка «Оформить»
hasCheckoutButton true Виджет с кнопкой «Оформить»
hasCheckoutButton false (по умолчанию) Виджет без кнопки «Оформить»

Модальные окна виджета

Модальное окно Плюса

Модальное окно Сплита

Работа с виджетом

Важно

Перед началом работы подключите SDK.

Передача корзины

Начиная с версии 4 платежной сессии можно передавать состав корзины для расчета предложений Ultimate Widget. Версия сессии задается полем version в данных платежа при вызове YaPay.createSession(). Укажите общую сумму заказа в totalAmount, а товары — в cart.items:

const paymentData = {
    env: YaPay.PaymentEnv.Sandbox,
    version: 4,
    currencyCode: YaPay.CurrencyCode.Rub,
    merchantId: '<MERCHANT_ID>',
    totalAmount: '15980.00',
    cart: {
        items: [
            {
                productId: '<PRODUCT_ID>',
                total: '15980.00',
            },
        ],
    },
};

const paymentSession = await YaPay.createSession(paymentData);

В поле productId передайте уникальный идентификатор товара у продавца, а в total — стоимость позиции с учетом количества. totalAmount остается итоговой суммой заказа для расчетов виджета.

Примечание

Параметр cart необязателен. Не передавайте пустой массив cart.items. Требования к данным корзины приведены в описании параметров платежа.

Если состав корзины изменился, передайте актуальные cart и totalAmount через paymentSession.update():

paymentSession.update(() => ({
    totalAmount: '7990.00',
    cart: {
        items: [
            {
                productId: '<PRODUCT_ID>',
                total: '7990.00',
            },
        ],
    },
}));

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

Размещение виджета

Подключение в DOM

paymentSession.mountWidget(document.querySelector("<selector>"), {
    widgetType: YaPay.WidgetType.Ultimate,
    onInitializationError: (error) => {
        console.error(error);
    },
});

Удаление из DOM

paymentSession.unmountWidget(document.querySelector("<selector>"));

Ошибка запуска виджета

Чтобы обработать ошибку запуска Ultimate Widget, передайте onInitializationError в параметры mountWidget().

Если Web SDK не загрузился, вызвать onInitializationError невозможно. Обрабатывайте этот случай через событие error у тега script.

Размеры виджета

Виджет принимает размеры контейнера, в который он встраивается. Но с помощью CSS стилей можно указать ширину контейнера виджета.

Совет

В зависимости от наличия сопроводительных продуктов (оплата в рассрочку и т.д.), виджет может менять свою высоту. По высоте виджет может занимать от 76px до 364px, учитывайте эту особенности при его установке.

<style>
    .ya-pay-widget {
        width: 360px !important;
    }
</style>

Виджет оплаты только через Сплит

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

Совет

Скрытие виджета стоит учитывать при построении дизайна и верстки приложения.

Чтобы включить режим оплаты только через Сплит, добавьте в PaymentData объект строку availablePaymentMethods со списком из одного метода оплаты 'SPLIT':

const paymentData = {
    // ... прочие параметры
    availablePaymentMethods: ["SPLIT"],
};

Логика отображения виджета

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

Пример расчета

Для клиента с лимитом Сплита 20 000 рублей стоимость покупки составила 28 600 рублей. При расчете Сплита на четыре платежа в рамках лимита сумма каждого платежа составит 5 000 рублей.

А так как превышающая лимит сумма составляет 28600 − 20000 = 8600 рублей, то, согласно логике отображения виджета, она будет добавлена к первому платежу. Таким образом, сумма, которую клиент должен будет оплатить в момент покупки в Сплит, составит 8600 + 5000 = 13600 рублей, как показано на рисунке.

Виджет Сплита при превышении лимита

Примечание

Размер лимита Сплита может варьироваться в зависимости от результатов скоринга — оценки надежности клиента на основе его активности в сервисах Яндекса и других условий.

Как мигрировать на новый виджет

При создании нового виджета мы старались сохранить названия и параметры для полей, которые использовались в других виджетах, чтобы миграция требовала минимальных затрат. Ниже можно посмотреть, какие изменения необходимо сделать для перехода на новый виджет.

Миграция с BnplPreview

Замените widgetType с YaPay.WidgetType.BnplPreview на YaPay.WidgetType.Ultimate. Стартовая позиция должна выглядеть следующим образом:

paymentSession.mountWidget(document.querySelector("<selector>"), {
    widgetType: YaPay.WidgetType.Ultimate,
});

Больше информации о кастомизации можно увидеть в интерактивном демо

Миграция с виджета BnplPreview

Миграция с Simple

Замените widgetType с YaPay.WidgetType.Simple на YaPay.WidgetType.Ultimate. Стартовая позиция должна выглядеть следующим образом:

paymentSession.mountWidget(document.querySelector("<selector>"), {
    widgetType: YaPay.WidgetType.Ultimate,
});

Больше информации о кастомизации можно увидеть в интерактивном демо.

Миграция с виджета Simple

Миграция с Info

Замените widgetType с YaPay.WidgetType.Info на YaPay.WidgetType.Ultimate. Стартовая позиция должна выглядеть следующим образом:

paymentSession.mountWidget(document.querySelector("<selector>"), {
    widgetType: YaPay.WidgetType.Ultimate,
});

Больше информации о кастомизации можно увидеть в интерактивном демо.

Миграция с виджета Info

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