Интеграция 1С-Битрикс с платёжной системой Webpay (Беларусь): под ключ

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Интеграция 1С-Битрикс с платёжной системой Webpay (Беларусь): под ключ
Средний
~1-2 недели
Часто задаваемые вопросы

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

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1321
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    914
  • 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 Appointment Booking Widget for a Medical Center
    663
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    810
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    709
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1042

Интеграция 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 обработает все статусы, а фискализация (если нужна) будет настроена корректно. Мы предоставляем гарантию на код и бесплатную поддержку после запуска. Свяжитесь с нами для консультации — оценим проект за один день. Закажите интеграцию под ключ с гарантией результата.