О проекте
skinetika.shop — интернет-магазин бренда натуральной косметики на WordPress и WooCommerce. Я разрабатывал этот сайт с нуля, включая автоматизацию производства. К сентябрю 2026 года на сайте уже работали онлайн-оплата через Т-Банк и доставка другой службой с собственными пунктами выдачи.
Задача звучала просто: добавить Ozon к уже работающей доставке и ничего не сломать — ни корзину, ни оформление заказа, ни оплату, ни существующую службу доставки. На живом сайте любая ошибка сразу видна покупателям, а отдельной тестовой копии сайта владелец решил не делать: разработка и тесты шли на живом сайте в тестовом режиме плагина, где Ozon видели только администраторы и тестовые номера сотрудников.
Решения владельца
До начала разработки мы с владельцем бренда зафиксировали, как должна работать доставка. Эти решения потом легли в настройки плагина.
| Вопрос | Решение |
|---|---|
| Кабинет Ozon | Кабинет доставки объединён с кабинетом продавца — общий баланс |
| Отгрузка | Самостоятельно, в пункт выдачи Ozon рядом со складом |
| Посылки | Одно отправление на заказ |
| Объявленная стоимость | Стоимость товаров после скидок |
| Цена для покупателя | Расчёт Ozon плюс страховка, округление вверх до 10 ₽ |
| «Бесплатно от N ₽» | Опция в настройках, по умолчанию выключена |
| Курьер Ozon | Не подключаем — только пункты выдачи и постаматы |
| После получения | Заказ на сайте автоматически становится «Выполнен» |
| Проверка телефона | Без SMS-кода — вместо него предупреждение о номере на оформлении |
От SMS-подтверждения отказались сознательно: лишний шаг на оформлении снижает конверсию. Вместо него покупатель видит, на какой номер оформится заказ в Ozon, и предупреждение, что получить заказ можно только в приложении Ozon на этот номер, а изменить номер после оформления нельзя. Тот же пункт есть в оферте магазина.
С какими трудностями Ozon API пришлось справиться
Ozon Delivery API молодой, и подключить его «за вечер» не получилось. Вот что пришлось решить, прежде чем доставка заработала на живом сайте.
1. Нет карты, а список пунктов — без адресов
Готовой карты или виджета у Ozon нет, а метод списка пунктов отдаёт только номера — без адресов, координат и фильтра по городу. Пунктов при этом 88 337. Решение — свой справочник в базе сайта с инкрементальной синхронизацией: полный проход по списку, а подробности — только для новых пунктов и тех, что не проверялись больше 7 дней. Пункты, пропавшие из списка, удаляются только после завершённого прохода, а состояние сохраняется после каждой страницы, чтобы сбой посередине ничего не испортил. Первая загрузка с сервера заняла около 14 минут, ежедневное обновление — 5–8 минут ночью. Поиск ближайших пунктов по таблице — 3–4 миллисекунды.
2. Адреса в десятке форматов
«Обл. Томская», «Вологодская» без слова «область», адреса с индексом и без, «дер.», «городской посёлок». Чтобы показывать примерную цену для города покупателя, город нужно надёжно выделить из адреса. Разбор адресов проверен на 600 реальных адресах пунктов Ozon. График работы Ozon отдаёт датами примерно на три недели вперёд, где отсутствующая дата — выходной; его сжали в понятную недельную строку вместо хранения сырых данных.
3. API иногда «молчит»
Обычный ответ Ozon приходит за 50–250 миллисекунд. Но примерно один запрос из 10–20 принимает соединение и не отдаёт ни байта до таймаута, а повтор сразу проходит. Решение — короткие таймауты (несколько секунд для фоновых задач и админки, ещё меньше — на оформлении заказа) и быстрые повторы. Если Ozon не ответил на оформлении, способ Ozon временно скрывается, а покупатель спокойно оформляет заказ другим способом.
4. Защита от ботов и токен, который живёт не так, как написано
На первый же запрос API отвечает перенаправлением 307 — это защита Ozon от DDoS. Обычный HTTP-клиент WordPress при перенаправлении превращает POST-запрос в GET и теряет тело запроса. Плагин повторяет тот же запрос с тем же телом и полученной cookie. А срок жизни токена в ответе Ozon оказался не количеством секунд, как сказано в документации, а временем истечения — плагин распознаёт оба варианта и обновляет токен заранее, чтобы доставка не «отваливалась» раз в час.
5. Нет уведомлений о статусах
Ozon не сообщает магазину, что посылка в пути или получена. Сайт сам опрашивает статусы каждые 30 минут, хранит историю в заказе и пишет покупателю от имени магазина.
6. Без телефона нет цены
Ozon не считает доставку без номера телефона, а заказ получит только владелец номера в приложении Ozon. Сначала способ Ozon появлялся только после ввода телефона. По просьбе владельца его сделали видимым сразу: без номера под способом — просьба указать телефон и кнопка перехода к полю, а смена номера сразу пересчитывает цену. Проверка номера в Ozon кэшируется и ограничена по сессии и IP, чтобы сайт нельзя было использовать для массовой проверки чужих номеров.
Совместная работа с другой службой доставки
Ozon встал на оформлении рядом с уже работающей службой доставки, и тут нашлись свои тонкости:
- Яндекс.Карты уже грузились другим плагином доставки на всех страницах. Загружать вторую копию карт нельзя: они конфликтуют и тратят лимиты. Плагин Ozon переиспользует уже загруженные карты, а свою копию, если нужно, грузит лениво и в отдельном пространстве имён.
- Соседний плагин сбрасывал кэш расчёта доставки при каждом обновлении страницы оформления. Без защиты это означало бы запрос в Ozon при каждом изменении поля. Поэтому ответы Ozon кэшируются в сессии покупателя по параметрам посылки.
- Данные в заказе — минимальные. В заказ сохраняются только номер и адрес выбранного пункта, а не список всех пунктов города: база данных не должна разрастаться из-за доставки.
- Форма оформления была на двух страницах — и в корзине, и на странице оформления. Проверять пришлось обе.
Т-Банк и фиксированная сумма доставки
Т-Банк сверяет сумму оплаты с суммой заказа. Отсюда жёсткое правило: стоимость доставки после создания заказа не меняется — ни при создании заказа в Ozon, ни при пересоздании отправления. Заказ в Ozon создаётся только после оплаты, с защитой от дублей: если ответ Ozon потерялся, плагин сначала ищет уже созданное отправление.
Ещё одна особенность: при оплате Т-Банк иногда оставлял заказ в статусе «На удержании», хотя деньги прошли. Плагин опирается на событие оплаты, а не только на статус, поэтому такие заказы тоже уходят в Ozon. И мелочь, которая важна для чеков: доставка пробивается отдельной позицией с названием способа, поэтому название сделано коротким, а адрес пункта хранится в заказе отдельно.
Результат
- 17 сентября 2026 года доставка Ozon открыта для всех покупателей сайта, после тестового заказа с полной цепочкой: выбор пункта, цена, оплата, передача в Ozon, отмена.
- Ozon работает рядом с другой службой доставки — покупатель выбирает сам.
- Менеджерам остаётся три действия: собрать посылку, нажать «Собрано», отвезти её в пункт отгрузки. Для них написана инструкция со всеми кнопками, статусами и ответами на частые вопросы.
- Добавились функции по ходу работы: пересоздание отправления, если покупатель ошибся в номере или сменил пункт, и письмо-напоминание, если оплаченный заказ больше суток ждёт сборки.
В октябре 2026 года на основе этого кода вышла версия 1.0.0 плагина для других магазинов: свои ключи Яндекс.Карт и DaData, ленивая загрузка карты, тексты для покупателя в настройках. Затем — поддержка блочного оформления заказа и лицензия с пробным периодом. Подробнее — в истории версий.
Что из этого кейса пригодится вашему магазину
- Заполните вес и размеры товаров. В кейсе их не было у 27 % товаров — без них цена доставки для покупателя считается по значениям по умолчанию.
- Проверьте все страницы с оформлением заказа, включая корзину, если форма оформления есть и там.
- Проверьте письмо «Примечание к заказу». Через него уходят письма о статусах доставки; в кейсе в теме и заголовке этого письма оставался посторонний текст, его пришлось заменить.
- Тестируйте в тестовом режиме на номере сотрудника и отменяйте тестовый заказ до сдачи посылки — песочницы у Ozon нет.
- Обновите оферту и политику конфиденциальности: получение только через приложение Ozon, передача ФИО и телефона в Ozon, проверка при получении, возвраты через магазин.
Плюсы и минусы — в отзыве. Кейс рассказывает, как внедряли доставку. Что в самом сервисе Ozon удобно, что мешает и кому он подойдёт, — в отдельном отзыве об Ozon Доставке для бизнеса, а из чего складывается цена посылки для магазина — в статье Тарифы Ozon Доставки для бизнеса.
Хотите так же на своём сайте? Скачайте плагин — первые 50 заказов бесплатно, или закажите подключение под ключ.
Читайте дальше
- Отзыв: плюсы и минусы сервисаОпыт Ozon Доставки для бизнеса на реальных заказах: что удобно, что мешает и кому подойдёт.
- Выбор пункта выдачи в WooCommerceСправочник 88 тысяч пунктов, карта и список, поиск адреса, проверка доступности пункта.
- Оплата заказов с доставкой OzonПочему только онлайн-оплата и почему сумма доставки не меняется после заказа.
- Тарифы Ozon Доставки для бизнесаЧто магазин платит Ozon за посылку: обработка, логистика, выдача, страховка и пример расчёта.
- Ozon Доставка для бизнеса: что этоКак работает доставка Ozon для своего сайта, на каких условиях и чем она отличается от маркетплейса.
- Об автореЕвгений Герасимов: опыт, проекты, реквизиты и контакты.