Передача скидочных купонов в 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) {
// Не получилось создать платежную сессию.
});
}