Платіжний шлях — це останній крок перед конверсією. Якщо він складний або незнайомий покупцю — ви втрачаєте продаж. Monobank Acquiring набирає популярність серед українських онлайн-магазинів: знайомий інтерфейс для мільйонів користувачів застосунку monobank, низька комісія та зрозуміле API роблять інтеграцію вигідним рішенням для малого та середнього бізнесу.
Що дає Monobank Acquiring
- Оплата карткою Visa/Mastercard, Apple Pay та Google Pay
- Рекурентні платежі — підписки та регулярні списання
- Webhook-сповіщення про статус транзакції в реальному часі
- Інтерфейс оплати українською — довіра покупця вища
- Комісія від 1,4% залежно від обсягу
Як працює інтеграція: базовий флоу
Monobank Acquiring використовує просте REST API. Для WordPress (WooCommerce) ми реалізуємо кастомний payment gateway, для Laravel — окремий сервіс-клас.
Крок 1 — Створення інвойсу (Laravel)
Надсилаємо POST-запит з сумою, валютою та URL для webhook і редіректу. У відповідь отримуємо pageUrl — сторінку оплати monobank.
$response = Http::withToken(config('monobank.token'))
->post('https://api.monobank.ua/api/merchant/invoice/create', [
'amount' => $order->total * 100, // у копійках
'ccy' => 980, // UAH
'merchantPaymInfo' => [
'reference' => $order->id,
'destination' => 'Оплата замовлення #' . $order->id,
],
'redirectUrl' => route('checkout.success'),
'webHookUrl' => route('monobank.webhook'),
]);
$invoiceUrl = $response->json('pageUrl');
return redirect($invoiceUrl); Крок 2 — Обробка webhook
Після оплати monobank надсилає POST-запит на webHookUrl зі статусом транзакції. Завжди верифікуйте підпис через HMAC-SHA256 — без цього фейковий webhook може підтвердити несплачене замовлення.
public function handle(Request $request): Response
{
// Верифікація підпису
$signature = hash_hmac(
'sha256',
$request->getContent(),
config('monobank.secret')
);
abort_if($signature !== $request->header('X-Sign'), 403);
$payload = $request->json()->all();
if ($payload['status'] === 'success') {
Order::where('id', $payload['reference'])
->update(['status' => 'paid']);
// тригер відправки, email-сповіщення тощо
}
return response()->noContent();
} Крок 3 — Інтеграція з WooCommerce
Для WordPress-магазинів розробляємо кастомний клас-спадкоємець WC_Payment_Gateway. Він обробляє process_payment(), handle_webhook() та відображає статус у адмін-панелі WooCommerce. Такий підхід усуває залежність від сторонніх плагінів, які можуть мати вразливості або несумісності після оновлень.
Що важливо врахувати
- Верифікуйте підпис кожного webhook — не покладайтесь лише на IP-адресу
- Зберігайте
invoiceIdтаreferenceу БД перед редіректом — захист від дублювання при повторних webhook - Реалізуйте idempotency-ключі для повторних спроб оплати
- Тестуйте в sandbox-режимі до виходу в production
Результат для бізнесу
Правильно інтегрований Monobank Acquiring скорочує тертя на останньому кроці конверсії, зменшує кількість кинутих кошиків і не потребує щомісячного обслуговування, характерного для деяких агрегаторів. Ми реалізували Monobank Acquiring на Laravel та WooCommerce для інтернет-магазинів різних вертикалей — від косметики до будівельних матеріалів.