Пациент: Интернет-магазин на OpenCart.
Проблема: Отсутствие проверки адреса пользователя по зоне доставки.
Задача:
- реализовать проверку адреса пользователя по зоне доставки на этапе завершения заказа;
- при отсутствии попадания в зону, выводить сообщение о невозможности доставки по указанному адресу;
- при вхождении адреса в зону доставки, продолжать оформление заказа; - добавить возможность изменения зоны доставки из административной части сайта.
Кстати, если Вы не хотите решать такие моменты самостоятельно или у Вас есть другие интересные и нетривиальные задачи – пишите! Мы работаем со всеми популярными CMS и умеем решать задачи любой сложности, не важно – на OpenCart Ваш сайт, Битрикс или «самопис».
В нашем распоряжении были следующие данные и инструменты:
- рабочая корзина;
- подключенный кабинет КЛАДР;
- координаты зоны доставки.
ПРОЦЕСС НАСТРОЙКИ ПРОВЕРКИ ЗОНЫ ДОСТАВКИ ДЛЯ OPENCART
Первое, что мы решили сделать (и это было логично), связать между собой данные формы и КЛАДР, предварительно, определив зоны доставки районами, попадающими в область по координатам.
Возможность изменения (добавления и удаления) районов вывели в отдельную форму, которая отправляла данные в файл на сервере. Именно по обращению к этому файлу, по нашей логике, и должна была осуществляться проверка на предмет вхождения в зону доставки.
Но!
На этом этапе, мы не учли. что координаты зоны доставки не ограничиваются каким-то конкретным регионом или районом. Так, например, по Москве, доставка осуществляется до 3 кольца. Ограничивая зону доставки всей Москвой, мы допустили вхождение улиц, по которым доставка не осуществляется.
После тестов, было принято решение чуть скорректировать первоначальную идею и привязаться строго к координатам:
- Вначале мы формируем карту на основе API Яндекс.
- На эту карту мы наносим координаты территории по которой мы осуществляем доставку, формируя многоугольники.
- Пользователь вводит данные своего адреса, которые через запрос уходят в YMaps.Geocoder и возвращаются к нам в виде координат.
- Координата адреса доставки, в свою очередь, добавляется на нашу карту, после чего мы отправляем запрос на проверку:
- если точка в пределах нашего многоугольника – “разрешаем” создание заказа,
- если нет – выводим сообщение о невозможности доставки.
Принцип изменения координат оставили тем же, что и на первом этапе – через форму.
Вот такое у нас получилось изящное решение задачи ☺
Будем рады, если оно кому-нибудь поможет.
JOBinNet – нешаблонные решения Ваших бизнес-задач и техническая поддержка сайта 24/7