Передача скидочных купонов в Yandex Pay

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

Передача скидочных купонов

В PaymentData объект нужно добавить блок cart.coupons со списком введенных купонов.
Далее этот список будет передан при вызове /order/render и в ответ вы передадите корзину вместе с соответствующими скидками.

const paymentData = {
    // ... прочие параметры
    cart: {
        // ... параметры корзины

        // примененные пользователем купоны
        coupons: [
            { value: '<COUPON_VALUE>' },
        ],
    },
}

Пример

let activeSession;

function onYaPayLoad(couponValue) {
    const YaPay = window.YaPay;

    if (activeSession) {
        activeSession.destroy();
        activeSession = null;
    }

    // Данные платежа
    const paymentData = {
        env: YaPay.PaymentEnv.Sandbox,
        version: 3,
        currencyCode: YaPay.CurrencyCode.Rub,
        merchantId: '<YOUR_MERCHANT_ID>',
        cart: {
            items: [
                {
                    productId: '1',
                    total: '16490.00',
                },
            ],

            // Информация о примененных скидочных купонах
            // Она придет к вам на backend с вызовом order/render
            coupons: [{ value: couponValue }],
        },
    };

    // Обработчик на получение платежного токена
    function onPaymentSuccess(event) {
        console.log(`OrderId — ${event.orderId}`);
    }

    // Обработчик на ошибки при оплате
    function onPaymentError(event) {
        console.log(`Payment error — ${event.reason}`);
    }

    // Обработчик на отмену оплаты
    function onPaymentAbort(event) {}

    // Создать платежную сессию.
    YaPay.createSession(paymentData, {
        onSuccess: onPaymentSuccess,
        onAbort: onPaymentAbort,
        onError: onPaymentError,
    })
        .then(function (paymentSession) {
            activeSession = paymentSession;
            paymentSession.mountButton(document.querySelector('#button_container'), {
                type: YaPay.ButtonType.Checkout,
                theme: YaPay.ButtonTheme.Black,
                width: YaPay.ButtonWidth.Auto,
            });
        })
        .catch(function (err) {
            // Не получилось создать платежную сессию.
        });
}