Интеграция кастомной службы доставки в Bitrix с динамическим расчетом стоимости

Разработана кастомная служба доставки для Bitrix, которая предоставляет пользователю поле для ввода адреса с автодополнением через Яндекс Suggest API. После выбора адреса система определяет зону доставки и рассчитывает соответствующую стоимость.

Структура решения

Решение состоит из трех ключевых компонентов:

  • PHP-класс службы доставки, интегрированный в Bitrix
  • JavaScript-модуль для обработки ввода адреса и взаимодействия с API
  • Механизм определения зоны доставки и установки финальной стоимости

Реализация PHP-класса службы доставки

Создан класс AddressByZones, наследующий базовый класс доставки Bitrix:

  • Название и описание: "Доставка по зонам + поле ввода"
  • Конфигурация: Включает настройки API и определение зон доставки через JSON
  • Расчет стоимости: Метод calculateConcrete() возвращает HTML-форму для ввода адреса

Интеграция Яндекс Suggest API

В файл order_ajax.js добавлен обработчик события onAjaxSuccess:

  • Динамическая загрузка скрипта: Яндекс Suggest API загружается только при выборе конкретной службы доставки (ID: 765)
  • Поле ввода с автодополнением: При вводе от 3 символов отправляется запрос к API и отображаются подсказки
  • Обработка выбора адреса: При выборе адреса из подсказок значение сохраняется в поле ввода

Определение зоны доставки и стоимости

После выбора адреса выполняется последовательность действий:

  1. Выбранный адрес отправляется на Bitrix-обработчик AddressByZonesGetCoordinate.php
  2. Обработчик определяет зону доставки (например, возвращает "SPB_A")
  3. На основе определенной зоны должна быть установлена соответствующая стоимость доставки

Ключевой вопрос реализации

Основная задача, требующая решения: как установить рассчитанную стоимость доставки в интерфейсе оформления заказа Bitrix после получения данных о зоне.

Возможные подходы к решению:

  • Использование Bitrix API для обновления стоимости доставки
  • Отправка AJAX-запроса с расчетом стоимости и обновление интерфейса
  • Интеграция с механизмом пересчета заказа Bitrix

Текущая реализация успешно решает задачи ввода адреса и определения зоны, но требует доработки механизма установки финальной стоимости в системе оформления заказа.