Покупатель дошёл до оформления, выбрал доставку в пункт выдачи — и упёрся в текстовое поле «Адрес ПВЗ». Он не помнит код точки, не знает, работает ли она по субботам и влезет ли туда его заказ. В итоге вводит адрес наугад, менеджер потом перезванивает и уточняет, а часть заказов вовсе отваливается на этом шаге. Между тем современный сценарий выглядит иначе: карта с пунктами выдачи и постаматами прямо в оформлении заказа, где видно ближайшие точки, их график, ограничения и стоимость доставки до каждой.
В этой статье разберём, как в 1С-Битрикс добавить выбор ПВЗ и постаматов на карте: откуда брать точки через API служб доставки, как хранить и обновлять их в собственном справочнике, как фильтровать по габаритам корзины, считать стоимость и — главное — корректно передавать выбранную точку в заказ и дальше в службу доставки. Это выжимка из наших проектов по интеграциям 1С-Битрикс со службами доставки и внешними сервисами — без теории ради теории, с конкретикой по компонентам и свойствам заказа.
Коротко
- Точки выдачи и постаматы отдают API служб доставки (СДЭК, Boxberry, 5Post, Яндекс, Почта) — их складывают в собственный справочник.
- Справочник точек обновляют раз в сутки агентом, а карте отдают из кэша, не дёргая чужой API на каждый клик.
- Список точек фильтруют по габаритам и весу заказа: в маленький постамат крупная посылка не влезет.
- Выбранную точку сохраняют в свойствах заказа по машинному коду, а не только адресом, и передают в службу доставки.
- На одной карте можно показывать несколько служб сразу и маршрутизировать заказ по признаку выбранного пункта.
Зачем магазину выбор ПВЗ и постаматов на карте
Пункты выдачи и постаматы давно стали основным способом получения заказов в интернет-магазинах: они дешевле курьера, удобны покупателю и снижают долю невыкупов. Но ценность этого канала легко потерять на последнем шаге — в самом оформлении заказа. Если выбор точки сделан плохо, магазин собирает все минусы ПВЗ и почти ни одного плюса.
Плохой выбор точки — это текстовое поле, куда покупатель вписывает адрес, или гигантский выпадающий список из тысяч пунктов без карты и поиска. В обоих случаях человек ошибается: путает соседние пункты, выбирает уже закрытый, не замечает ограничения по габаритам. Дальше начинается ручная работа: менеджер звонит и уточняет, служба доставки отбивает заказ с ошибкой «неизвестный код ПВЗ», посылка едет не туда. Каждая такая заминка — потерянное время и часть отменённых заказов.
Хороший выбор точки решает эти проблемы на корню. Карта показывает покупателю только реально доступные пункты рядом с ним, с адресом, графиком и стоимостью доставки. Он видит ближайший постамат у дома или ПВЗ у работы, выбирает его одним кликом, а магазин получает не «текст адреса», а точный машинный код точки, который без ошибок уйдёт в службу доставки. Это прямая экономия на обработке заказов и рост конверсии оформления.
Кроме конверсии, у карты есть ещё один эффект — доверие. Когда покупатель видит настоящую точку на карте, её фотографию или хотя бы адрес и часы работы, он охотнее выбирает самовывоз из ПВЗ вместо более дорогого курьера. Магазин экономит на логистике, а клиент получает удобный и понятный способ забрать заказ. Всё это делает интеграцию выбора точек не «украшением» оформления, а инструментом, который напрямую влияет на выручку.
ПВЗ, постамат, служба доставки: разбираемся в терминах
Прежде чем проектировать интеграцию, договоримся о словах — от этого зависит структура данных. Термины кажутся очевидными, но в коде и справочниках их путать нельзя.
- ПВЗ (пункт выдачи заказов). Физическая точка с сотрудником, где посылку выдают по коду или документу. У ПВЗ есть адрес, график работы, часто примерочная и возможность частичного выкупа и оплаты картой.
- Постамат. Автоматизированный шкаф с ячейками. Покупатель открывает ячейку по коду из СМС. Постамат работает почти круглосуточно, но ограничен размером ячейки — крупная посылка в него не влезет.
- Служба доставки (перевозчик). Компания, которая владеет сетью точек и везёт посылку: СДЭК, Boxberry, PickPoint, 5Post, Почта России, Яндекс Доставка. У каждой свой API и свой формат кодов точек.
- Агрегатор доставки. Сервис-посредник (МультиОтправка, Shiptor и подобные), который отдаёт точки сразу многих служб через один API. Удобно, когда служб много, но добавляет ещё один слой между магазином и перевозчиком.
- Код точки. Уникальный идентификатор пункта в системе службы. Именно по нему заказ принимается службой; адрес — только для человека.
Ключевой вывод из терминологии: точка — это не просто адрес, а объект с координатами, кодом, принадлежностью к службе и набором ограничений. Постамат и ПВЗ ведут себя по-разному при фильтрации по габаритам. А код точки — самое ценное поле, потому что именно он связывает выбор покупателя с системой перевозчика. Всё это должно найти отражение в структуре справочника точек, к которому мы перейдём ниже.
Архитектура решения: откуда берутся точки
Чтобы карта в оформлении работала быстро и надёжно, важно правильно разложить решение на слои. Наивный подход «на каждый клик покупателя дёргаем API службы доставки» приводит к медленной карте, упирается в лимиты API перевозчика и падает, как только у службы технические работы. Правильная архитектура ставит между покупателем и внешними API собственный слой данных.
Решение удобно представить как цепочку из нескольких компонентов, каждый со своей ролью:
- API служб доставки. Первоисточник точек. Отдаёт полный список ПВЗ и постаматов с координатами и ограничениями. Обращаемся к нему по расписанию, а не в реальном времени.
- Импортёр (агент/крон). Фоновый процесс, который забирает точки из API, нормализует формат и складывает в собственное хранилище. Работает в часы низкой нагрузки.
- Справочник точек. Собственная таблица или highload-блок с точками всех подключённых служб в едином формате. Это то, откуда реально читает сайт.
- Слой отдачи на карту. Обработчик (AJAX-эндпоинт), который по городу и габаритам корзины возвращает отфильтрованный список точек фронтенду. Читает из справочника, а не из чужого API.
- Карта в оформлении. Фронтенд-компонент на шаге оформления: показывает точки, даёт выбрать одну и кладёт её код в свойства заказа.
- Передача в заказ и службу. Сохранение кода точки в свойствах заказа и последующая отправка заказа в службу доставки по этому коду.
Такое разделение даёт три главных выигрыша. Во-первых, скорость: карта читает из локального справочника за миллисекунды, без сетевых задержек чужого API. Во-вторых, устойчивость: даже если API службы недоступно, покупатель всё равно видит точки из последнего успешного импорта. В-третьих, независимость от лимитов: перевозчики ограничивают число запросов, и опрос по расписанию укладывается в лимиты, а живой трафик покупателей — нет.
Источники точек: API служб доставки
Первоисточник точек — это API самих служб доставки. У каждого перевозчика свой метод получения списка ПВЗ и постаматов, но набор данных примерно одинаковый: код точки, тип (ПВЗ или постамат), координаты, адрес, город, график работы, ограничения по весу и габаритам, а также флаги «есть оплата картой», «есть примерка», «работает на выдачу/приём».
Кратко пройдёмся по типичным источникам, с которыми чаще всего работают магазины на 1С-Битрикс:
| Служба | Что отдаёт | Особенности интеграции |
|---|---|---|
| СДЭК | ПВЗ и постаматы, тарифы, сроки | Широкая сеть, метод списка точек и калькулятор тарифов; нужна авторизация по токену |
| Boxberry | ПВЗ и постаматы, зоны | Точки с ограничениями по весу; отдаёт список пунктов и стоимость доставки |
| 5Post (X5) | Постаматы и точки в магазинах сети | Большая сеть постаматов; строгие лимиты по габаритам ячеек |
| Яндекс Доставка | ПВЗ и постаматы партнёрской сети | Единый API на несколько перевозчиков сразу, удобно для мультислужбы |
| Почта России | Отделения и постаматы | Самая широкая география; отдельный формат индексов и отделений |
| PickPoint / агрегаторы | Постаматы, ПВЗ разных служб | Один API на много сетей; добавляет слой посредника |
Практический совет: не пытайтесь сразу подключить все службы. Начните с одной-двух, которыми реально пользуются ваши покупатели, отладьте на них весь конвейер «импорт → справочник → карта → заказ», и только потом подключайте следующие. Механика у всех служб общая, различается только формат API, поэтому вторую и третью службу добавлять уже легко.
Общую механику работы с внешними API служб доставки в 1С-Битрикс мы подробно разбираем в отдельном материале про интеграцию доставки через API — там про авторизацию, обработку ошибок и повторные попытки. Здесь же сосредоточимся именно на точках выдачи и их выборе в оформлении.
Собственный справочник точек и его обновление
Сердце решения — собственный справочник точек. Это единое хранилище, куда импортёр складывает точки всех подключённых служб в одном формате. Именно из него читает карта, поэтому от структуры справочника зависит и скорость, и удобство фильтрации.
Минимальный набор полей одной точки в справочнике выглядит так:
- Код точки и служба. Машинный идентификатор в системе перевозчика плюс признак службы. Пара «служба + код» уникальна и служит ключом.
- Тип. ПВЗ или постамат — от этого зависит логика фильтрации по габаритам.
- Координаты. Широта и долгота для отображения на карте и поиска ближайших точек.
- Адрес и город. Человекочитаемый адрес, город и код населённого пункта для выборки «точки в городе N».
- График работы. Часы приёма посылок — покупателю важно знать, когда забрать.
- Ограничения. Максимальный вес и габариты (для постамата — размер ячейки). Ключевое поле для фильтрации.
- Сервисные флаги. Оплата картой, примерка, частичный выкуп — то, что помогает покупателю выбрать.
Где это хранить в 1С-Битрикс — вопрос объёма. Для сотен и первых тысяч точек подойдёт highload-блок: он даёт админку, API D7 и удобные выборки. Для десятков тысяч точек (например, полная сеть Почты России) лучше собственная таблица с продуманными индексами по городу и координатам — так выборки останутся быстрыми. В обоих случаях справочник наполняется не руками, а импортёром.
Обновление справочника — отдельная важная тема. Точки живут своей жизнью: открываются, закрываются, меняют график и лимиты. Устаревший справочник опаснее, чем кажется: покупатель выберет закрытый пункт, заказ уйдёт с неверным кодом, и на приёмке в службе будет ошибка. Поэтому справочник обновляют регулярно.
- Запуск по расписанию. Агент или крон запускает импорт раз в сутки в часы низкой нагрузки — ночью, когда покупателей почти нет.
- Загрузка из API. Импортёр забирает актуальный список точек каждой подключённой службы с обработкой ошибок и повторными попытками.
- Нормализация. Приводит разные форматы служб к единой структуре справочника: типы, координаты, ограничения.
- Обновление и деактивация. Существующие точки обновляются, новые добавляются, пропавшие помечаются неактивными (не удаляются, чтобы не терять историю заказов).
- Прогрев кэша. После импорта полезно прогреть выборки по популярным городам, чтобы первый покупатель утром не ждал холодного кэша.
Про типы обновления справочника и почему полный перезалив надёжнее точечных правок — та же логика, что и с расчётом зон доставки. Если интересно, как считать стоимость с учётом веса и габаритов по зонам, посмотрите наш разбор про расчёт доставки по весу, габаритам и зонам: там подробно про весогабаритную логику, которая пригодится и здесь.
Карта в оформлении: как выбрать точку
Теперь самое видимое покупателю — карта на шаге оформления. Её задача: показать доступные точки, дать удобно найти нужную и вернуть в заказ выбор. Хорошая карта совмещает визуальный выбор по метке и текстовый поиск, потому что кому-то удобнее ткнуть в точку у дома, а кому-то — найти по адресу.
Что должно быть на карте выбора точки, чтобы она работала на конверсию:
- Определение города. Карта центрируется на городе покупателя (из профиля, из поля адреса или по геолокации) и показывает точки этого города — не весь список страны.
- Метки точек. ПВЗ и постаматы на карте разными иконками, чтобы покупатель сразу видел тип. При клике на метку — карточка с адресом, графиком и стоимостью.
- Список рядом с картой. Слева список ближайших точек, справа карта; выбор в списке подсвечивает метку и наоборот. Это удобнее, чем только карта.
- Поиск и фильтры. Поиск по адресу и фильтры «только постаматы», «оплата картой», «работает сегодня» помогают быстро сузить выбор.
- Явный выбор. Кнопка «Выбрать этот пункт» в карточке точки, после которой выбранная точка закрепляется в оформлении и видна на шаге подтверждения.
Технически карта — это фронтенд-компонент, который при открытии и при смене города запрашивает точки у своего AJAX-эндпоинта, а не у чужого API. Эндпоинт принимает город и габариты корзины, читает из справочника, возвращает уже отфильтрованный список. Такой контур держит карту быстрой: покупатель кликает по фильтрам и меткам без сетевых задержек внешней службы.
Габариты, вес и фильтрация доступных точек
Одна из самых частых и обидных ошибок — показать покупателю точку, которая физически не примет его заказ. Крупный заказ не влезет в маленькую ячейку постамата, а у части ПВЗ есть ограничение по максимальному весу посылки. Если такую точку не отфильтровать, покупатель выберет её, оформит заказ, а на упаковке выяснится, что отправить туда нельзя — и снова ручная работа с перезвоном.
Поэтому список точек нужно фильтровать по параметрам конкретного заказа. Логика такая:
- Считаем габариты корзины. По товарам в заказе суммируем вес и определяем габариты упаковки (либо по весогабаритам товаров, либо по правилам упаковки магазина).
- Сравниваем с ограничениями точки. Для каждой точки из справочника проверяем: проходит ли посылка по максимальному весу и по габаритам (для постамата — по размеру ячейки).
- Отсекаем неподходящие. Точки, которые не могут принять эту посылку, не показываем на карте вовсе — их просто нет в выдаче.
- Помечаем тип. Оставшиеся ПВЗ и постаматы показываем с их иконками; для крупных заказов часто остаются только ПВЗ, и это нормально.
Здесь важно, что габариты корзины считаются той же логикой, что и при расчёте стоимости доставки. Вес и размеры влияют и на цену, и на список доступных точек — это единый весогабаритный расчёт. Если он у вас уже настроен для калькулятора доставки, переиспользуйте его и для фильтрации точек, чтобы не было расхождений: цена посчиталась по одним габаритам, а точки отфильтровались по другим.
Расчёт стоимости и сроков до пункта выдачи
Выбор точки на карте неотделим от денег: покупатель хочет видеть не только «где забрать», но и «сколько это стоит» и «когда приедет». Поэтому карта работает в связке с расчётом стоимости доставки. При выборе точки цена и срок должны обновляться, и именно эта сумма должна попасть в заказ.
Стоимость доставки до ПВЗ зависит от нескольких факторов:
| Фактор | Как влияет на цену и срок |
|---|---|
| Служба доставки | У каждого перевозчика свои тарифы; одна и та же точка у разных служб стоит по-разному |
| Город и зона | Расстояние и зона доставки определяют базовый тариф и срок |
| Вес и габариты | Тяжёлый и крупный заказ дороже; часть тарифов считается по объёмному весу |
| Тип точки | Постамат и ПВЗ у службы могут стоить по-разному |
| Наложенный платёж | Оплата при получении добавляет комиссию за перевод денег магазину |
Есть два подхода к расчёту стоимости. Первый — брать тариф из API службы в реальном времени (точный, но зависит от доступности API и добавляет задержку). Второй — считать по собственной таблице тарифов и зон, синхронизированной с прайсом службы (быстрый и предсказуемый, но требует поддерживать таблицу в актуальном состоянии). На практике часто комбинируют: базовый расчёт по своей таблице, а точный тариф — при подтверждении заказа.
Как бы вы ни считали, ключевое правило одно: цена, которую покупатель увидел при выборе точки, и цена в оформленном заказе должны совпадать. Расхождение здесь — прямая причина конфликтов и отмен. Поэтому расчёт стоимости и выбор точки завязывают в один шаг оформления, где смена точки пересчитывает сумму, а сумма фиксируется вместе с выбранной точкой в заказе.
Что сохранять в свойствах заказа
Когда покупатель выбрал точку, этот выбор нужно надёжно сохранить в заказе. Ошибка новичков — сохранить только адрес текстом. Адрес нужен человеку, но служба доставки принимает заказ по коду точки, поэтому в свойствах заказа должен лежать полный машинный контекст выбора.
Минимальный набор свойств заказа для выбранной точки:
- Служба доставки. Признак перевозчика — по нему заказ маршрутизируется в нужную систему при отправке.
- Код точки. Машинный идентификатор ПВЗ или постамата в системе службы. Главное поле для передачи в перевозчика.
- Тип точки. ПВЗ или постамат — для отчётности и корректного отображения покупателю.
- Адрес и координаты. Человекочитаемый адрес и координаты — чтобы показать покупателю в личном кабинете и в письме.
- Стоимость и срок. Зафиксированные на момент оформления цена доставки и срок — чтобы они не «уплыли» после оформления.
В 1С-Битрикс это реализуется через свойства заказа (в модуле «Продажи» — свойства местоположения и произвольные свойства службы доставки). Код точки удобно хранить в отдельном свойстве, привязанном к выбранной службе доставки. Тогда при отправке заказа обработчик берёт службу из заказа, код точки из свойства и формирует запрос к нужному перевозчику.
Отдельно стоит подумать про валидацию на бэкенде. Нельзя доверять только тому, что пришло с фронтенда: покупатель (или сбой) может прислать несуществующий или закрытый код точки. Перед сохранением заказа проверьте, что код точки есть в справочнике, активен и подходит по габаритам. Это защищает от заказов, которые служба доставки не сможет принять.
Передача выбранного ПВЗ в службу доставки
Последний участок пути — довести выбранную точку до службы доставки. Здесь код точки, сохранённый в заказе, наконец используется по назначению. Есть два основных сценария передачи, и часто они сочетаются.
Через API службы доставки. Магазин создаёт заказ (отправление) в системе перевозчика программно: формирует запрос с данными получателя, содержимым, габаритами и — обязательно — кодом выбранной точки в поле пункта выдачи. Служба принимает заказ и возвращает трек-номер, который сохраняется в заказе и отправляется покупателю. Это самый автоматизированный путь: заказ уходит в службу без ручных действий менеджера.
Через выгрузку / личный кабинет службы. Если API-создание отправлений не подключено, заказы выгружают пакетом (файлом или через интеграцию с 1С), и там код точки подставляется в соответствующее поле. Менее автоматизированно, но работает, когда объём заказов небольшой или служба не даёт удобного API создания отправлений.
В любом сценарии критично одно: код точки должен дойти до службы в её формате без искажений. Частая беда — когда в заказе лежит адрес точки, но нет её кода, и менеджеру приходится вручную искать код по адресу в кабинете перевозчика. Именно поэтому мы с самого начала настаиваем на хранении машинного кода: он проходит весь путь от клика покупателя до приёмки в службе без ручного вмешательства.
Отдельно про надёжность передачи. Внешний API может быть временно недоступен в момент оформления заказа — это нормально, и на этот случай отправку в службу лучше делать не синхронно в момент оплаты, а фоново с повторными попытками. Тогда сбой у перевозчика не мешает покупателю оформить заказ, а отправление создаётся, как только API снова доступно. Подробнее про устойчивую работу с внешними API — в материале про интеграцию доставки через API в 1С-Битрикс.
Несколько служб на одной карте
Зрелые магазины редко ограничиваются одной службой доставки. Одному покупателю ближе постамат 5Post у дома, другому — ПВЗ СДЭК у работы, третьему нужна Почта России, потому что в его городке больше ничего нет. Показывать точки нескольких служб на одной карте — сильный ход: покупатель выбирает удобный пункт, не думая, чья это сеть.
Что важно учесть при мультислужбе:
- Единый формат справочника. Точки всех служб лежат в одном справочнике в общем формате, различаясь только признаком службы. Это и делает возможным единую карту.
- Различение на карте. Точки разных служб помечают разными цветами меток или дают фильтр по перевозчику, чтобы покупатель понимал, кто везёт.
- Разные тарифы. Стоимость до одной и той же локации у разных служб отличается — карта должна показывать цену по каждой точке с учётом её службы.
- Маршрутизация заказа. После выбора признак службы из точки определяет, в какую систему уйдёт заказ. Один и тот же процесс оформления, но разные адресаты на бэкенде.
- Приоритеты и правила. Иногда магазину выгоднее подсвечивать конкретную службу (дешевле тариф, лучше сроки) — это настраивается правилами отображения.
Альтернатива подключению каждой службы по отдельности — агрегатор доставки, который отдаёт точки многих перевозчиков через единый API. Это ускоряет старт (одна интеграция вместо пяти), но добавляет посредника и его комиссию. Выбор между «прямыми» интеграциями и агрегатором зависит от объёма заказов и того, насколько важен прямой контроль над тарифами и данными.
Реализация в 1С-Битрикс
Соберём всё в конкретный план реализации на платформе 1С-Битрикс. Магазин работает на модуле «Интернет-магазин» с модулем «Продажи», где живут заказы, службы доставки и их свойства. Вот из каких частей складывается решение.
- Хранилище точек. Создайте highload-блок «Точки выдачи» (для больших сетей — отдельную таблицу) с полями: служба, код, тип, координаты, адрес, город, график, ограничения по весу и габаритам, сервисные флаги, признак активности.
- Импортёр точек. Напишите класс-импортёр на D7, который ходит в API каждой подключённой службы, нормализует ответ и обновляет highload-блок. Обработку ошибок и повторные попытки закладывайте сразу.
- Агент обновления. Повесьте импорт на агент или крон раз в сутки в часы низкой нагрузки. После импорта прогревайте кэш выборок по популярным городам.
- Службы доставки. В «Продажи → Службы доставки» заведите нужные службы (или профили) с типом «до пункта выдачи» и свойством для кода точки.
- AJAX-эндпоинт точек. Сделайте контроллер (компонент или ajax-роут), который принимает город и габариты корзины, читает из highload-блока, фильтрует по ограничениям и возвращает JSON со списком точек для карты.
- Компонент карты в оформлении. Встройте в шаблон
sale.order.ajax(или кастомный компонент оформления) блок карты: подключите карту, запросите точки у эндпоинта, дайте выбрать и запишите код точки в свойство заказа. - Расчёт стоимости. Свяжите выбор точки с расчётом доставки: при смене точки пересчитывайте цену и срок и фиксируйте их в заказе вместе с точкой.
- Отправка в службу. На событие смены статуса или по фоновой задаче формируйте отправление в API службы, подставляя код точки, и сохраняйте трек-номер в заказ.
Отдельно про размещение кода: бизнес-логику импорта, фильтрации и отправки правильно вынести в собственный модуль, а не разбрасывать по шаблонам компонентов. Так решение переживёт обновления платформы и смену дизайна оформления. Шаблон оформления должен только показывать карту и передавать выбор, а вся работа с API служб и справочником — в модуле.
Как это выглядит в админке и оформлении
Схематично интерфейс выбора точки на шаге оформления и связанные с ним настройки выглядят так. Слева покупатель видит список ближайших точек и карту, а в админке заказа лежит выбранный код точки, привязанный к службе доставки.
В карточке заказа в админке выбранная точка отображается как значения свойств доставки: служба, код точки, адрес. Менеджеру этого достаточно, чтобы понимать, куда едет заказ, а автоматике — чтобы сформировать отправление. Если по каким-то причинам отправка в службу не прошла (сбой API), в заказе остаётся код точки, и повторная попытка отправит его корректно, без ручного поиска пункта.
Смежная тема — как именно точки конкретных служб (Яндекс, Почта, 5Post) подключаются к оформлению и что учесть по каждой сети. Об этом у нас есть отдельный практический разбор про доставку через ПВЗ Яндекса, Почты и 5Post — если работаете именно с этими службами, посмотрите его в дополнение к этой статье.
Частые ошибки при внедрении
- Дёргают API службы доставки на каждый клик покупателя вместо собственного справочника — карта тормозит и упирается в лимиты перевозчика.
- Хранят в заказе только адрес точки текстом, без машинного кода — служба не принимает заказ автоматически, менеджер ищет код вручную.
- Не обновляют справочник точек — покупатель выбирает уже закрытый пункт, заказ отбивается с ошибкой «неизвестный код ПВЗ».
- Не фильтруют точки по габаритам — крупный заказ отправляют в маленький постамат, посылка не влезает, заказ переоформляют.
- Цена доставки на карте и в оформленном заказе расходятся — покупатель видел одну сумму, а списалась другая, отсюда конфликты и отмены.
- Показывают на карте сразу все точки страны — тысячи меток тормозят браузер и путают покупателя, вместо того чтобы показать город.
- Не валидируют выбор на бэкенде — с фронтенда приходит несуществующий или неактивный код точки, и заказ невозможно отправить.
- Отправляют заказ в службу синхронно в момент оплаты — временный сбой API перевозчика мешает покупателю оформить заказ.
Чек-лист внедрения
Сведём всё в практический список, по которому удобно принимать готовность выбора ПВЗ перед запуском:
- Справочник точек создан. Единое хранилище точек всех подключённых служб в общем формате, с кодом, типом, координатами и ограничениями.
- Импорт автоматизирован. Агент раз в сутки обновляет точки из API служб, деактивирует пропавшие, прогревает кэш.
- Карта в оформлении работает. Определяется город, показываются ближайшие точки с метками ПВЗ и постаматов, есть поиск и явный выбор.
- Фильтрация по габаритам включена. Список точек отсекает пункты, куда заказ физически не влезает; расчёт габаритов единый с калькулятором доставки.
- Стоимость связана с выбором. При смене точки пересчитываются цена и срок; итог фиксируется в заказе и совпадает с показанным.
- Свойства заказа заполнены. В заказе лежит служба, машинный код точки, тип, адрес, координаты и зафиксированная стоимость.
- Валидация на бэкенде. Перед сохранением проверяется, что код точки существует, активен и подходит по габаритам.
- Передача в службу настроена. Отправление создаётся по коду точки фоново с повторными попытками; трек-номер возвращается в заказ.
Вывод
Выбор ПВЗ и постаматов на карте в оформлении заказа — это не просто удобная карта, а цепочка из нескольких звеньев: собственный справочник точек, наполняемый импортом из API служб доставки, фильтрация по габаритам, расчёт стоимости и надёжная передача машинного кода точки в заказ и дальше в службу. Соберите эту цепочку правильно — и вы получите меньше недозвонов и отмен, более высокую конверсию оформления и корректную выгрузку заказов в перевозчиков без ручного труда. Хранить код точки, а не только адрес, обновлять справочник по расписанию и фильтровать точки по реальным габаритам заказа — три простых правила, которые отделяют работающую интеграцию от источника постоянных проблем на складе.