Позвоните мне

Проверка адреса доставки для OpenCart

Проверка адреса доставки для OpenCart

Сегодня будет мало букв, но много сути.

Пациент: Интернет-магазин на OpenCart.
Проблема: Отсутствие проверки адреса пользователя по зоне доставки.
Задача:

  1. реализовать проверку адреса пользователя по зоне доставки на этапе завершения заказа;
    - при отсутствии попадания в зону, выводить сообщение о невозможности доставки по указанному адресу;
    - при вхождении адреса в зону доставки, продолжать оформление заказа;
  2. добавить возможность изменения зоны доставки из административной части сайта.

Кстати, если Вы не хотите решать такие моменты самостоятельно или у Вас есть другие интересные и нетривиальные задачи – пишите! Мы работаем со всеми популярными CMS и умеем решать задачи любой сложности, не важно – на OpenCart Ваш сайт, Битрикс или «самопис».

В нашем распоряжении были следующие данные и инструменты:

  1. рабочая корзина;
  2. подключенный кабинет КЛАДР;
  3. координаты зоны доставки.

Процесс настройки проверки зоны доставки для OpenCart

Первое, что мы решили сделать (и это было логично), связать между собой данные формы и КЛАДР, предварительно, определив зоны доставки районами, попадающими в область по координатам.

Возможность изменения (добавления и удаления) районов вывели в отдельную форму, которая отправляла данные в файл на сервере. Именно по обращению к этому файлу, по нашей логике, и должна была осуществляться проверка на предмет вхождения в зону доставки.

Но!

На этом этапе, мы не учли. что координаты зоны доставки не ограничиваются каким-то конкретным регионом или районом. Так, например, по Москве, доставка осуществляется до 3 кольца. Ограничивая зону доставки всей Москвой, мы допустили вхождение улиц, по которым доставка не осуществляется.

После тестов, было принято решение чуть скорректировать первоначальную идею и привязаться строго к координатам:

  • Вначале мы формируем карту на основе API Яндекс.
  • На эту карту мы наносим координаты территории по которой мы осуществляем доставку, формируя многоугольники.
  • Пользователь вводит данные своего адреса, которые через запрос уходят в YMaps.Geocoder и возвращаются к нам в виде координат.
  • Координата адреса доставки, в свою очередь, добавляется на нашу карту, после чего мы отправляем запрос на проверку:
    - если точка в пределах нашего многоугольника – “разрешаем” создание заказа,
    - если нет – выводим сообщение о невозможности доставки.

Принцип изменения координат оставили тем же, что и на первом этапе – через форму.

Проверка адреса доставки на вхождение в определенную зону на карте для OpenCart

 

Вот такое у нас получилось изящное решение задачи ☺
Будем рады, если оно кому-нибудь поможет.

JOBinNet – нешаблонные решения Ваших бизнес-задач и техническая поддержка сайта 24/7