Интеграция 1С-Битрикс: Как тестировать вебхуки от служб доставки локально
Разработка для 1С-Битрикс часто ведется на локальной копии сайта, развернутой с помощью BitrixVM или другого окружения. Это удобно, но создает проблему при интеграции с внешними сервисами, которые общаются с сайтом через вебхуки (callback URL).
Классический пример — интеграция со службой доставки (например, СДЭК) или платежной системой. После изменения статуса заказа (e.g., “доставлен” или “оплачен”) их сервер отправляет POST-запрос на ваш сайт. Но как ему найти вашу локальную копию?
Задача: Принять вебхук на локальном сайте Битрикс
Предположим, вы написали кастомный обработчик в файле /api/delivery_status.php
. Служба доставки должна отправлять запросы на URL https://vash-magazin.ru/api/delivery_status.php
. Но ваш сайт работает на http://localhost
.
Шаг 1: Запускаем локальный сайт
Убедитесь, что ваша локальная копия сайта на Битриксе запущена и доступна в браузере по адресу http://localhost
(или другому, например http://bx-site.local
). Для простоты будем считать, что он работает на 80 порту.
Шаг 2: Создаем публичный адрес с TunnelHunt
В терминале вашей BitrixVM или на хост-машине (в зависимости от настроек сети) выполните команду:
# Пробрасываем 80 порт нашего локального веб-сервера
ssh -R 80:localhost:80 -p 2222 nokey@tunnelhunt.ru
Если ваш сайт работает на другом порту, например 8888, команда будет ssh -R 80:localhost:8888 ...
Вы получите публичный URL, например https://random-url-123.tunnelhunt.ru
.
Шаг 3: Настраиваем сервис доставки
В личном кабинете службы доставки укажите URL для вебхуков, используя адрес от TunnelHunt:
https://random-url-123.tunnelhunt.ru/api/delivery_status.php
Шаг 4: Отладка
Теперь, когда служба доставки отправит обновление, ее запрос пройдет через TunnelHunt и попадет в ваш скрипт delivery_status.php
на локальной машине. Вы можете:
- Добавить логирование в файл с помощью
file_put_contents()
. - Использовать инструменты отладки вроде Xdebug, чтобы ставить точки останова и пошагово выполнять код.
- Мгновенно видеть ошибки и вносить исправления.
Этот подход экономит часы, которые раньше уходили бы на выгрузку изменений на тестовый сервер. Вы можете полностью отладить логику интеграции, не покидая своей локальной среды разработки.