Интеграция кастомной службы доставки в 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

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