Перейти до вмісту

Widget (Токенізація карток)

Widget Checkout дозволяє безпечно збирати дані карток клієнтів прямо на вашому сайті через iframe.

Додайте скрипт на сторінку:

<script src="https://cdn.rozetkapay.com/widget.js" async></script>
function __onWidgetReady() {
const widget = RPayCardWidget.init({
// Обов'язкові параметри
key: 'hQ8aqcm/RG1RF7MaImmzZUsThYhAVDG6R7kazf9+r7zuoWo6',
mode: 'inline',
selector: 'widget-checkout',
onToken: function(tokenData) {
// Обробка отриманого токена
console.log('Token:', tokenData.token);
console.log('Card mask:', tokenData.card_mask);
console.log('Expires:', tokenData.expires_at);
// Відправте токен на ваш сервер для створення платежу
submitPayment(tokenData.token);
},
// Опціональні параметри
amount: 350.50,
lang: 'uk',
style: 'evo',
type: 'full_card',
customer_ip: '127.0.0.1',
customer_id: '123',
customer_email: 'customer@example.com'
});
// Відкрити віджет
widget.open();
}
ПараметрТипОбов’язковийОпис
keyStringWidget key від RozetkaPay
modeStringЗавжди inline
selectorStringID HTML елемента для віджета
onTokenFunctionCallback при отриманні токена
amountNumberСума для відображення
langStringМова: uk, en, pl
styleStringСтиль: evo
typeStringfull_card (оплата) або pan_only (виплата)
templateStringШаблон: line
customer_ipStringIP клієнта
customer_idStringID клієнта (для External tokenization)
customer_emailStringEmail клієнта (для External tokenization)
localeObjectКастомізація текстів
{
"token": "tok_abc123...", // Токен для платежу
"expires_at": "2099-12-31T00:00:00", // Термін дії токена
"card_mask": "424242******4242" // Маска картки
}
МетодОпис
widget.open()Відобразити віджет
widget.close()Закрити віджет

Eager loading (рекомендовано)

Section titled “Eager loading (рекомендовано)”

Ініціалізувати віджет при завантаженні сторінки, відкрити по кліку:

let widget;
function __onWidgetReady() {
widget = RPayCardWidget.init({
key: 'your_widget_key',
mode: 'inline',
selector: 'widget-checkout',
lang: 'uk',
onToken: function(tokenData) {
// Відправка на сервер
fetch('/api/payment', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ token: tokenData.token })
});
}
});
}
// Відкриття віджета по кліку на кнопку
document.getElementById('pay-button').addEventListener('click', function(e) {
e.preventDefault();
widget.open();
});

Ініціалізувати та відкрити віджет при кліку:

function __onWidgetReady() {
document.getElementById('pay-button').addEventListener('click', function(e) {
e.preventDefault();
RPayCardWidget.init({
key: 'your_widget_key',
mode: 'inline',
selector: 'widget-checkout',
amount: 100,
onToken: function(tokenData) {
submitPayment(tokenData);
}
}).open();
});
}

Відкрити віджет одразу при завантаженні:

function __onWidgetReady() {
RPayCardWidget.init({
key: 'your_widget_key',
mode: 'inline',
selector: 'widget-checkout',
onToken: handleToken
}).open();
}
// Віджет успішно ініціалізовано
document.addEventListener('widget-init-ready', () => {
console.log('Widget готовий');
widget.open();
});
// Помилка ініціалізації
document.addEventListener('widget-init-error', (e) => {
console.error('Widget error:', e.detail.id, e.detail.message);
});
RPayCardWidget.init({
// ... інші параметри
locale: {
uk: {
cardNumber: 'Номер карти',
expiryDate: 'Строк дії',
cvv: 'CVV',
submit: 'Сплатити',
yy: 'ГГ',
mm: 'ММ',
hints: {
cvvHint: 'Код міститься на зворотній стороні карти'
},
errors: {
cardnumber: 'Неправильний номер карти',
expiryDate: 'Строк дії карти закінчився',
cvv: 'Некорректний CVV/CVC2 код'
}
}
}
});
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.rozetkapay.com/widget.js" async></script>
</head>
<body>
<!-- Кнопка для відкриття віджета -->
<button id="pay-button">Оплатити</button>
<!-- Контейнер для віджета -->
<div id="widget-checkout"></div>
<script>
function __onWidgetReady() {
// Ваш код ініціалізації
}
</script>
</body>
</html>

Після отримання токена у onToken, відправте його на сервер для створення платежу:

Terminal window
curl -X POST https://api.rozetkapay.com/api/payments/v1/new \
-u "login:password" \
-H "Content-Type: application/json" \
-d '{
"amount": 100,
"currency": "UAH",
"external_id": "order_12345",
"mode": "direct",
"customer": {
"payment_method": {
"type": "token",
"token": "tok_abc123..."
}
}
}'