Просте підключення оплати для лендінгу: приклад інтеграції Pay24

Автор: Владислав Ковальський Дата: 08.09.2026

Для лендінгу найважливіше — це конверсії. Кожен зайвий крок між кнопкою «Замовити» і підтвердженням оплати зменшує кількість заявок, за які реально отримано гроші. Для одностopінкового сайту немає ані каталогу, ані кошика, ані складної адмінки — потрібен один надійний канал прийому платежу за конкретну пропозицію.

Класичний інтернет-еквайринг цю задачу вирішує. Час підключення в українських агрегаторах становить від 1–10 робочих днів у LiqPay, WayForPay і Fondy до 4–6 тижнів при роботі напряму з банком-еквайєром. Комісія — 1,3% для Plata by mono, 1,5–2% для LiqPay та WayForPay і від 2,2% у Fondy при обороті до 500 тис. грн на місяць. Для лендінгу з рекламним бюджетом на два-три місяці кампанії ця пауза відчутно вкорочує вікно віддачі.

Що зупиняє швидку інтеграцію еквайрингу

Крім часу на підключення, у списку зобов'язань при роботі з класичним еквайрингом стоять чотири речі:

  • Пакет документів для мерчант-заявки: КВЕДи, скріни лендінгу з політикою повернення і контактами, підтвердження права на домен, статути ТОВ або витяг ФОП.
  • Дотримання PCI DSS SAQ-A при використанні готового платіжного iframe і повніший SAQ-A-EP при частковій кастомізації полів.
  • Обов'язковий редирект або iframe на сторінку 3D Secure для карткових операцій понад визначені банком ліміти.
  • Щомісячна звітність по chargeback-рівню перед еквайєром, з ризиком підняття комісії при перевищенні порогу 0,9% транзакцій.

Технічно віджети LiqPay і WayForPay реалізовані як iframe із зовнішнім JavaScript, який тягне за собою сторонні скрипти для антифрод-моніторингу. Це створює додаткові пункти під час тестування верстки, роботи з AMP і фіксації подій оплати в системах аналітики після редиректу назад на сайт.

IBAN-переказ через банківський застосунок

Другий шлях для лендінгів, де не потрібно приймати картки з-за кордону, — прямий переказ на IBAN отримувача через мобільний банк клієнта. Стандарт формування єдиного платіжного QR-коду і посилання затверджений Постановою Правління НБУ №97 від 19.08.2025, чинний з 1 листопада 2025 року. Цей формат розпізнають усі великі українські платіжні застосунки: monobank, Приват24, ПУМБ, А-Банк, MyRaif, Sense SuperApp і ще близько 25 банків.

Клієнт натискає кнопку на лендінгу, відкриває у своєму банку сторінку з попередньо заповненими реквізитами — IBAN отримувача, сума, призначення платежу, ЄДРПОУ або РНОКПП — і підтверджує переказ. Кошти йдуть напряму на розрахунковий рахунок бізнесу через СЕП НБУ, яка з квітня 2023 року працює цілодобово у форматі 24/7 на стандарті ISO 20022. За офіційною статистикою НБУ, 99,4% успішних платежів через СЕП обробляються за час до 5 хвилин, миттєві кредитові перекази до 100 тис. грн — за 10 секунд.

Обмеження підходу зрозумілі: перекази йдуть у гривні, схема покриває клієнтів з українським банківським застосунком, і зарахування у нічні години в окремих банках-отримувачах може відкладатися до початку операційного дня. Для лендінгу, який продає послугу, консультацію, курс, підписку, оренду або передоплату товару, цих обмежень зазвичай достатньо, щоб схема покрила основний потік замовлень.

Як влаштовано Pay24 API

Pay24 — сервіс, який автоматизує генерацію платіжних посилань і сторінок. Сценарій для лендінгу такий: у момент натискання кнопки «Оплатити» серверна частина відправляє POST-запит на API Pay24 з сумою і призначенням платежу, отримує у відповідь URL готової платіжної сторінки і перенаправляє на неї клієнта. Уся логіка з deeplink на 30 банків, генерацією QR-коду за стандартом НБУ, автовизначенням мобільного застосунку і копіюванням реквізитів реалізована на стороні Pay24.

Доступ до REST API відкривається на тарифних планах Бізнес і Про. Ключі генеруються в особистому кабінеті. Для розробки доступне тестове sandbox-середовище, яке приймає тестові запити без реального руху коштів і повертає ті самі структури відповіді, що і продакшн. Повний опис ендпоінтів і формату webhook — на https://pay24.com.ua/docs.

Приклад інтеграції оплати на сайтах

Якщо у вас один або небагато продуктів (товарів/послуг) - можна просто створити платіжні посилання в особистому кабінеті Pay24 окремо для кожного продукту  і вставити ці посилання у ваш html код. Але якщо продуктів багато або їх вартість динамічна - потрібно зробити інтеграцію з API Pay24. Мінімальний обробник кнопки оплати займає близько 40 рядків. Створіть файл pay.php, який прийматиме з форми лендінгу email і суму замовлення, створюватиме рахунок через API Pay24 і повертатиме JSON з URL для редиректу на сторінку оплати.

<?php
const PAY24_API_URL     = 'https://api.pay24.com.ua/v1/invoices';
const PAY24_API_KEY     = 'p24_live_xxxxxxxxxxxxxxxxxxxxxx';
const PAY24_MERCHANT_ID = '12345';

header('Content-Type: application/json; charset=utf-8');

$input   = json_decode(file_get_contents('php://input'), true) ?? [];
$amount  = (float) ($input['amount'] ?? 0);
$orderId = bin2hex(random_bytes(6));

if ($amount <= 0 || $email === false) {
    http_response_code(400);
    echo json_encode(['error' => 'Некоректна сума або email']);
    exit;
}

$payload = [
    'merchant' => PAY24_MERCHANT_ID,
    'amount'   => $amount,
    'purpose'  => "Замовлення {$orderId}",
    'expires'  => (new DateTimeImmutable('+2 hours'))->format(DATE_ATOM)
];

$ch = curl_init(PAY24_API_URL);
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => json_encode($payload, JSON_UNESCAPED_UNICODE),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'Content-Type: application/json',
        'Authorization: Bearer ' . PAY24_API_KEY,
    ],
    CURLOPT_TIMEOUT        => 10,
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode !== 201) {
    http_response_code(502);
    echo json_encode(['error' => 'Не вдалося створити рахунок']);
    exit;
}

$data = json_decode($response, true);
echo json_encode([
    'invoice_id'  => $data['id'],
    'payment_url' => $data['url']
]);



Кнопка на лендінгу викликає цей обробник через fetch(), отримує payment_url і перенаправляє браузер:

<button id="pay-button">Оплата</button>

<script> document.querySelector('#pay-button').addEventListener('click', async () => { const response = await fetch('/pay.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ amount: 1400.00, }), }); const { payment_url } = await response.json(); window.location.href = payment_url; }); </script>


На мобільному пристрої платіжна сторінка Pay24 розпізнає банк і відкриває відповідний застосунок. На десктопі сторінка показує QR-код за стандартом НБУ і кнопки копіювання реквізитів для оплати з будь-якого банку через клієнт-банк.

Пов'язані статті