Получение данных плательщика

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

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

Запрос почты плательщика

В PaymentData объект нужно добавить блок requiredFields.billingContact с указанием необходимых данных.

const paymentData = {
    // ... прочие параметры
    requiredFields: {
        billingContact: {
            email: true,  // вернуть Email, по умолчанию false
            name: true,  // вернуть Имя, по умолчанию false
        },
    },
}

Пример

let activeSession;

function onYaPayLoad(requestEmail, requestName) {
    const YaPay = window.YaPay;

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

    // Данные платежа
    const paymentData = {
        env: YaPay.PaymentEnv.Sandbox,
        version: 2,
        countryCode: YaPay.CountryCode.Ru,
        currencyCode: YaPay.CurrencyCode.Rub,
        merchant: {
            id: '<YOUR_MERCHANT_ID>',
            name: 'test-merchant-name',
            url: 'https://test-merchant-url.ru',
        },
        order: {
            id: 'order-id',
            total: { amount: '43980.00' },
            items: [
                { label: 'Яндекс.Станция Макс, черный', amount: '26990.00' },
                { label: 'Яндекс.Станция 2, антрацит', amount: '16990.00' },
            ],
        },
        paymentMethods: [
            {
                type: YaPay.PaymentMethodType.Card,
                gateway: 'test-gateway',
                gatewayMerchantId: 'test-gateway-merchant-id',
                allowedAuthMethods: [YaPay.AllowedAuthMethod.PanOnly],
                allowedCardNetworks: [
                    YaPay.AllowedCardNetwork.Visa,
                    YaPay.AllowedCardNetwork.Mastercard,
                    YaPay.AllowedCardNetwork.Mir,
                    YaPay.AllowedCardNetwork.Maestro,
                    YaPay.AllowedCardNetwork.VisaElectron,
                ],
            },
        ],
        // Сообщаем что нужно получить E-mail плательщика
        requiredFields: {
            billingContact: {
                email: requestEmail,
                name: requestName,
            },
        },
    };

    // Обработчик на получение платежного токена
    function onPaymentProcess(event) {
        // Email и Имя плательщика
        console.log(`Email — ${event.billingContact.email}\nName — ${event.billingContact.name}`);
    }

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

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

    // Создаем платежную сессию
    YaPay.createSession(paymentData, {
        onProcess: onPaymentProcess,
        onAbort: onPaymentAbort,
        onError: onPaymentError,
    })
        .then(function (paymentSession) {
            activeSession = paymentSession;

            paymentSession.mountButton(document.querySelector('#button_container'), {
                type: YaPay.ButtonType.Pay,
                theme: YaPay.ButtonTheme.Black,
                width: YaPay.ButtonWidth.Auto,
            });
        })
        .catch(function (err) {
            // Не получилось создать платежную сессию.
        });
}