Інтеграція Webpay на сайт: налаштування прийому платежів

Інтеграція платіжної системи Webpay на сайт

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Інтеграція Webpay на сайт: налаштування прийому платежів
Середній
від 1 дня до 3 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1418
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1286
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    983
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1243
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    983
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    998

Інтеграція платіжної системи Webpay на сайт

При інтеграції платіжного шлюзу Webpay розробники часто припускаються однієї й тієї ж помилки — невірний порядок конкатенації при формуванні підпису. В результаті платежі падають з помилкою аутентифікації, а клієнти втрачають довіру. Ми розберемо, як налаштувати прийом карток Visa, Mastercard та Білкарт без прихованих проблем, і покажемо перевірений алгоритм. Економія часу на налагодження може сягати 40%.

Webpay залишається ключовим платіжним шлюзом для білоруських проектів завдяки підтримці ЄРІП та Білкарт. Без нього ви втрачаєте до 30% аудиторії, яка не користується міжнародними картками. На відміну від Stripe або PayPal, Webpay забезпечує локальну обробку та знижує комісію на 15–20%. Ми інтегрували Webpay для 20+ проектів і накопичили досвід, що дозволяє уникнути типових пасток.

Webpay в 3 рази швидше обробляє платежі через ЄРІП порівняно з API інших провайдерів — це критично для масових розсилок та акцій.

Які проблеми вирішуємо при інтеграції?

Помилки підпису — найчастіша біль. Параметри конкатенуються в строгому порядку: seed, store_id, order_num, test_flag, currency, amount, secret_key. Якщо переставити — підпис не співпаде. Використовуйте наш шаблон.

Некоректна обробка сповіщень — notify-обробник повинен перевіряти не тільки підпис, але й код результату (wsb_result_code). Успіх — тільки код 1. Решта — відмова або скасування.

Втрата сесії при редиректі — Webpay використовує POST-редирект. Формуйте форму з автосабмітом через JavaScript, щоб уникнути кліків та помилок. Згідно з документацією Webpay, всі поля обов'язкові.

Як уникнути помилок підпису при інтеграції Webpay?

Ось приклад ініціалізації платежу на Laravel:

function buildWebpayForm(int $orderId, float $amount, string $currency = 'BYN'): string { $storeId = env('WEBPAY_STORE_ID'); $secretKey = env('WEBPAY_SECRET_KEY'); $wsb_order_num = $orderId; $wsb_total = number_format($amount, 2, '.', ''); $wsb_currency_id = $currency; $seed = time(); $wsb_test = env('WEBPAY_TEST', 1); $signature = md5( $seed . $storeId . $wsb_order_num . $wsb_test . $wsb_currency_id . $wsb_total . $secretKey ); $action = $wsb_test ? 'https://test.webpay.by' : 'https://payment.webpay.by'; return <<<HTML <form method="POST" action="{$action}" id="webpay-form"> <input type="hidden" name="*scart" value=""> <input type="hidden" name="wsb_version" value="2"> <input type="hidden" name="wsb_storeid" value="{$storeId}"> <input type="hidden" name="wsb_store" value="Магазин"> <input type="hidden" name="wsb_order_num" value="{$wsb_order_num}"> <input type="hidden" name="wsb_currency_id" value="{$wsb_currency_id}"> <input type="hidden" name="wsb_version" value="2"> <input type="hidden" name="wsb_test" value="{$wsb_test}"> <input type="hidden" name="wsb_total" value="{$wsb_total}"> <input type="hidden" name="wsb_signature" value="{$signature}"> <input type="hidden" name="wsb_seed" value="{$seed}"> <input type="hidden" name="wsb_return_url" value="https://example.com/payment/return"> <input type="hidden" name="wsb_fail_url" value="https://example.com/payment/fail"> <input type="hidden" name="wsb_notify_url" value="https://example.com/webhook/webpay"> <input type="hidden" name="wsb_lang" value="russian"> <button type="submit">Перейти до оплати</button> </form> HTML; } 

Чому notify-обробник повинен повертати HTTP 200?

При отриманні POST на wsb_notify_url перевіряємо підпис та код результату:

public function notify(Request $request): Response { $data = $request->all(); $expected = md5( $data['wsb_seed'] . env('WEBPAY_STORE_ID') . $data['wsb_order_num'] . $data['wsb_test'] . $data['wsb_currency_id'] . $data['wsb_total'] . env('WEBPAY_SECRET_KEY') ); if ($data['wsb_signature'] !== $expected) { Log::warning('Webpay: invalid signature', $data); return response('ERROR', 400); } if ((int)$data['wsb_result_code'] === 1) { $orderId = (int)$data['wsb_order_num']; Order::where('id', $orderId)->update([ 'status' => 'paid', 'transaction_id' => $data['wsb_transaction_num'] ?? null, ]); } return response('OK'); } 

wsb_result_code: 1 — успіх, 2 — відмова, 3 — скасування покупцем.

Що робити на сторінці повернення?

Не покладайтеся на параметри в returnUrl — використовуйте статус замовлення з БД, який оновлено notify-обробником:

public function return(Request $request): View { $orderId = $request->input('wsb_order_num'); $order = Order::findOrFail($orderId); return view('payment.result', ['paid' => $order->status === 'paid', 'order' => $order]); } 

Як обробляти повернення через Webpay?

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

Що робити при таймауті з'єднання?

Якщо запит до Webpay не відповідає більше 30 секунд, ініціюйте повторний запит з тим же order_num. Idempotency гарантується унікальністю order_num — повторне відправлення з тим же номером не створить дубль. Встановіть таймаут на стороні клієнта та логуйте всі таймаути для аналізу.

Порівняння тестового та бойового середовища

Параметр Тестове середовище Бойове середовище
URL test.webpay.by payment.webpay.by
wsb_test 1 0
Картки Тестові з документації Реальні картки
Активація Миттєво 1–3 робочих дні після тесту

Таблиця кодів помилок та їх обробка

Код результату Опис Дія
1 Успішний платіж Оновити статус замовлення на «оплачено»
2 Відмова банку Повідомити клієнта та запропонувати іншу картку
3 Скасування покупцем Повернути на сторінку кошика
Інше Технічна помилка Записати в лог та повернути HTTP 400

При тестуванні повернень звіряйте суми та використовуйте ті ж ключі. Всі сценарії потрібно прогнати до переходу в бойовий режим.

Процес роботи: від аналітики до деплою

  1. Аналітика — вивчаємо ваш магазин, обираємо спосіб інтеграції (готові модулі або кастом).
  2. Проектування — погоджуємо схему потоку платежів, URL сповіщень.
  3. Реалізація — впроваджуємо форму оплати, обробники, повернення.
  4. Тестування — проганяємо всі сценарії в тестовому середовищі: успіх, відмова, таймаут.
  5. Деплой — активуємо бойовий режим, моніторимо перші транзакції.

Що входить в роботу?

  • Документація з інтеграції (схема, опис методів).
  • Тестування 10+ сценаріїв платежів.
  • Навчання вашого адміністратора роботі з поверненнями та звітами Webpay.
  • Підтримка протягом 30 днів після запуску.

Строки та вартість

Інтеграція Webpay займає від 5 до 10 робочих днів залежно від складності магазину. Вартість розраховується індивідуально. Оцінимо проект безкоштовно після знайомства з вашим сайтом — зв'яжіться з нами. Замовте інтеграцію та отримайте консультацію інженера.

Чому варто довірити інтеграцію нам?

Більше 10 років досвіду у веб-розробці, 50+ успішно запущених інтеграцій з платіжними системами. Гарантуємо коректну обробку всіх типів транзакцій та відсутність помилок підпису. Наші рішення проходять аудит безпеки. Отримайте консультацію — оцінимо ваш проект за 1 день.