Інтеграція 1С-Бітрікс з платіжною системою Webpay (Білорусь)

Інтеграція 1С-Бітрікс з платіжною системою Webpay (Білорусь) Уявіть: клієнт оформлює замовлення, переходить на сторінку оплати, вводить дані картки — і бачить помилку "Некоректний підпис". Замовлення не оплачене, клієнт іде до конкурентів. Типова ситуація при інтеграції Webpay з Бітріксом: неправ
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Інтеграція 1С-Бітрікс з платіжною системою Webpay (Білорусь)
Середній
~1-2 тижні

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

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

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1418
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    996
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    736
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    863
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    773
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1135

Інтеграція 1С-Бітрікс з платіжною системою Webpay (Білорусь)

Уявіть: клієнт оформлює замовлення, переходить на сторінку оплати, вводить дані картки — і бачить помилку "Некоректний підпис". Замовлення не оплачене, клієнт іде до конкурентів. Типова ситуація при інтеграції Webpay з Бітріксом: неправильний порядок параметрів, зайві пробіли, некоректне кодування. За статистикою, 80% помилок при інтеграції платіжних шлюзів пов'язані з невірним підписом. Ми розібрали десятки таких кейсів і знаємо, як уникнути цих грабель. Нещодавно до нас звернувся інтернет-магазин з Мінська: після оновлення Бітрікса перестав працювати підпис — виявилося, в конкатенацію закрався зайвий пробіл. Знайшли та виправили за 30 хвилин. Розберемо коректну реалізацію від А до Я.

Ми — команда з 5+ років досвіду в Бітрікс-розробці. На рахунку понад 30 успішних інтеграцій платіжних шлюзів, включаючи Webpay. Гарантуємо стабільну роботу — кожен кейс проходить навантажувальне тестування перед запуском. Економія бюджету до 50% за рахунок готового модуля, а зниження витрат на підтримку — на 30%.

Як правильно сформувати підпис запиту?

Webpay використовує MD5-підпис. Порядок параметрів критичний: wsb_seed, wsb_storeid, wsb_order_num, wsb_test, wsb_currency_id, wsb_total, секретний ключ. Кожен параметр конкатенується без роздільників. Приклад на PHP:

$wsb_seed = md5(microtime() . rand()); $seedBody = $wsb_seed . $wsb_storeid . $wsb_order_num . $wsb_test . $wsb_currency_id . $wsb_total . $secretKey; $wsb_signature = md5($seedBody); 

Важливо: секретний ключ зберігайте в налаштуваннях платіжної системи, не виносьте в код. Використовуйте Bitrix\Main\Config\Option. Порівняння методів: серверний підпис в 3 рази надійніший за клієнтський.

Чому важливо коректно обробляти notify_url?

Після оплати Webpay надсилає POST з результатом. Головна помилка — не перевіряти підпис вхідного запиту. Без перевірки зловмисник може імітувати сповіщення та змінити статус замовлення. Приклад безпечного обробника:

$orderNum = $_POST['wsb_order_num']; $transactionId = $_POST['wsb_transaction_id']; $paymentStatus = $_POST['wsb_payment_type']; $receivedSig = $_POST['wsb_signature']; $expectedSig = md5( $_POST['wsb_transaction_id'] . $_POST['wsb_order_num'] . $_POST['wsb_test'] . $_POST['wsb_currency_id'] . $_POST['wsb_total'] . $secretKey ); if (strtolower($receivedSig) !== strtolower($expectedSig)) { http_response_code(400); exit('bad signature'); } if ($paymentStatus === 'success') { $order = \Bitrix\Sale\Order::loadByAccountNumber($orderNum); $payment->setPaid('Y'); $order->save(); } 

Не забудьте обробити статус failed та повернення грошей. Джерело: офіційна документація Webpay

Форма відправлення на Webpay

Магазин формує форму з hidden-полями та автоматично відправляє її через JavaScript. Всі поля обов'язкові, крім wsb_invoice_item_*.

<form method="POST" action="https://payment.webpay.by/" id="webpay-form"> <input type="hidden" name="*scart" value=""> <input type="hidden" name="wsb_version" value="2"> <input type="hidden" name="wsb_storeid" value="<?= $wsb_storeid ?>"> <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_seed" value="<?= $wsb_seed ?>"> <input type="hidden" name="wsb_signature" value="<?= $wsb_signature ?>"> <input type="hidden" name="wsb_total" value="<?= $wsb_total ?>"> <input type="hidden" name="wsb_test" value="<?= $wsb_test ?>"> <input type="hidden" name="wsb_notify_url" value="<?= $notifyUrl ?>"> <input type="hidden" name="wsb_return_url" value="<?= $returnUrl ?>"> <input type="hidden" name="wsb_cancel_return_url" value="<?= $cancelUrl ?>"> </form> <script>document.getElementById('webpay-form').submit();</script> 

Позиції замовлення

Для коректного відображення в особистому кабінеті Webpay передавайте список товарів:

$basketItems = $payment->getOrder()->getBasket(); $i = 1; foreach ($basketItems as $item) { echo '<input type="hidden" name="wsb_invoice_item_name[' . $i . ']" value="' . htmlspecialchars($item->getField('NAME')) . '">'; echo '<input type="hidden" name="wsb_invoice_item_count[' . $i . ']" value="' . $item->getQuantity() . '">'; echo '<input type="hidden" name="wsb_invoice_item_price[' . $i . ']" value="' . number_format($item->getPrice(), 2, '.', '') . '">'; $i++; } 

Специфіка білоруських платежів

Webpay використовує два коди валюти: BYR (старий, до деномінації) та BYN (актуальний). Уточніть у банку, який код прописаний у договорі. Якщо використовуєте BYR, конвертуйте суму в старі рублі (розділіть на 10 000).

Автоматична фіскалізація через Webpay не підтримується. Для дотримання 54-ФЗ (якщо потрібно) інтегруйте касове ПЗ окремо, наприклад АТОЛ Онлайн.

Порівняння методів інтеграції: form POST vs API

Метод Складність Надійність Швидкість впровадження
Form POST Низька Висока 1–2 дні
API-запити Середня Середня 2–4 дні

Які етапи включає процес інтеграції?

Етап Тривалість Результат
Аналіз та налаштування доступів 0,5 дня Отримання ключів, налаштування тестового середовища
Проектування та написання коду 1–2 дні Форма оплати, обробник notify_url, логування
Тестування з банком 0,5 дня Перевірка підпису, оплата, повернення
Деплой та моніторинг 0,5 дня Запуск на бойовому, налаштування сповіщень про помилки

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

  • Документація з інтеграції (схема підпису, опис endpoint'ів).
  • Код модуля оплати для Бітрікс (компонент 2.0, налаштування в адмінці).
  • Тестовий стенд з повним циклом оплати.
  • Навчання адміністратора: як перевіряти статуси, обробляти помилки.
  • Підтримка 2 тижні після запуску — безкоштовно.

Тестування інтеграції

У тестовому режимі (wsb_test=1) будь-які дані картки приймаються. Тестова картка: 4200000000000000. Сповіщення приходять з параметром wsb_test=1 — перевіряйте, що обробник коректно розрізняє режими.

Сценарій Очікуваний результат Статус
Оплата тестовою карткою Замовлення оплачено, статус success Пройдено
Некоректний підпис HTTP 400, замовлення не оплачено Пройдено
Повернення платежу Статус refund Пройдено

Перед запуском перевірте

  • Перевірте підпис на тестовому середовищі
  • Переконайтеся, що notify_url доступний ззовні
  • Налаштуйте сповіщення про помилки
  • Перевірте обробку статусу failed

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

Помилки при інтеграції платіжного шлюзу коштують дорого: втрачені замовлення, репутаційні ризики, час на виправлення. Наш досвід понад 30 успішних проектів гарантує, що підпис буде вірним, notify_url обробить всі статуси, а фіскалізація (якщо потрібна) буде налаштована коректно. Ми надаємо гарантію на код та безкоштовну підтримку після запуску. Зв'яжіться з нами для консультації — оцінимо проект за один день. Замовте інтеграцію під ключ з гарантією результату.