СДЭК Доставка — ПВЗ
WooCommerce + CDEK API v2.0: courier pickup from warehouse to PVZ delivery. Tariff calculation, PVZ map, order creation, label printing, status tracking.
by Al Nemirov · github.com/al-nemirov/cdek-shipping-woocommerce · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/al-nemirov/cdek-shipping-woocommerce/archive/refs/heads/master.zipСДЭК Доставка — ПВЗ для WooCommerce
WordPress-плагин для интеграции WooCommerce с СДЭК через официальный API v2.0.
Схема: курьер СДЭК забирает посылки с вашего склада → доставляет в ПВЗ клиента.
Возможности
🛒 Расчёт стоимости
- Динамический расчёт через CDEK API v2.0
- Настраиваемый тариф (рекомендуем 481 — Экспресс дверь-склад)
- Наценка фиксированная (₽) + процентная (%)
- Бесплатная доставка от заданной суммы
- Срок доставки в названии метода (N–M дн.)
🗺 Выбор ПВЗ на карте
- Яндекс.Карты с кластеризацией маркеров
- Список ПВЗ с адресами, графиком, иконками (💵💳👔)
- Поиск по адресу / названию
- Сброс ПВЗ при смене города
- Валидация: обязательный выбор ПВЗ перед оформлением
📦 Создание накладных
- Кнопка «Отправить в СДЭК» в карточке заказа
- Авто-расчёт веса и габаритов из товаров заказа
- Трек-номер + ссылка для отслеживания
- Печать этикетки PDF
- Кнопка «Пересоздать заявку»
🚚 Вызов курьера (один забор в день)
WooCommerce → СДЭК Курьер:
- Чеклист СДЭК-заказов, ожидающих отправки (сегодняшние — авто-отмечены)
- Старые заказы, ещё не переданные
- Выбор даты и интервала (вкл. ночной 22:00–06:00)
- Авто-подсчёт суммарного веса
- Создание / отмена заявки через API (
POST /intakes)
📋 Страница «Заказы — Отправка»
WooCommerce → 📦 Заказы отправки — чистый список без лишнего:
- Фильтры: Все / Сегодня / СДЭК / Яндекс / Ждут СДЭК / Отправлено СДЭК
- Сводка: сегодня / ждут СДЭК / в СДЭК / ждут МС
- Статус СДЭК и МойСклад в одной строке
- Быстрые кнопки: «СДЭК →», «↻ СДЭК», «МС →», «✏️»
- Поиск по номеру или имени
📊 Трекинг
- Крон-синхронизация статусов каждые 2 часа
- Ручная кнопка «Обновить статус»
- Авто-завершение заказа при DELIVERED
- Колонка «СДЭК» в стандартном списке заказов
Установка
- Скопируйте папку в
wp-content/plugins/ - Активируйте плагин
- WooCommerce → СДЭК — введите API-ключи и данные склада
- WooCommerce → Доставка → Зона → Добавить метод → «СДЭК — ПВЗ»
Настройка
API-ключи
Получить в ЛК СДЭК → Настройки → Интеграция → API.
Account (Client ID): ваш_client_id
Secure (Client Secret): ваш_client_secret
Тестовый режим: выкл (боевой api.cdek.ru)
Данные склада-отправителя
| Поле | Пример |
|---|---|
| Компания | ООО Ваша Компания |
| Контактное лицо | Иванова Анна |
| Телефон склада | +79001234567 |
| Код города СДЭК | 44 (Москва), 137 (СПб) |
| Адрес склада | г. Москва, ул. Примерная, д. 1 |
| Описание груза | Книги |
Тариф
| Сценарий отправки | Тариф | Код |
|---|---|---|
| Привозите в ПВЗ СДЭК сами | Экспресс склад-склад | 483 |
| Курьер СДЭК забирает у вас | Экспресс дверь-склад | 481 |
⚠️ Важно: тарифы «Посылка» (136), «Эконом» (234/368) могут быть заблокированы вашим договором СДЭК. Если API возвращает
ve_tariff_is_not_available_for_payment_type— потребуйте у менеджера включить эти тарифы: они значительно дешевле.
Схема работы
Клиент выбирает СДЭК → ПВЗ на карте → оплачивает онлайн
↓
Менеджер: WooCommerce → Заказы отправки
→ «СДЭК →»: регистрирует накладную, скачивает этикетку
↓
Менеджер: WooCommerce → СДЭК Курьер
→ отмечает заказы, дату/время → «Сформировать заявку»
→ курьер СДЭК приезжает на склад, забирает все посылки
↓
СДЭК: курьер → сортировочный центр → ПВЗ клиента
→ клиент получает СМС автоматически
Технические детали API
Тип заказа
Плагин использует "type": 2 (доставка), а не type: 1 (интернет-магазин).
Это критично — type: 1 требует отдельного типа договора и даст ошибку err_currency_empty.
Пример payload накладной
{
"type": 2,
"tariff_code": 481,
"from_location": { "code": 44, "address": "г. Москва, ул. ...", "postal_code": "107023" },
"delivery_point": "SPB335",
"sender": { "company": "Ваша Компания", "name": "Иванова Анна", "phones": [{ "number": "+79001234567" }] },
"recipient": { "name": "Иван Иванов", "phones": [{ "number": "+79001234568" }], "email": "client@mail.ru" },
"packages": [{ "number": "PKG-12345", "comment": "Книги", "weight": 500, "length": 25, "width": 20, "height": 5 }]
}
Доступные тарифы (тип договора «Экспресс»)
| Код | Тариф | Назначение |
|---|---|---|
| 483 | Экспресс склад-склад | ПВЗ → ПВЗ, самопривоз |
| 481 | Экспресс дверь-склад | ПВЗ, курьер забирает у вас |
| 485 | Экспресс дверь-постамат | Постамат, курьер забирает |
| 62 | Магистральный склад-склад | Межрегион, самопривоз |
| 123 | Магистральный дверь-склад | Межрегион + курьер |
Требования
- WordPress 6.0+
- WooCommerce 8.0+
- PHP 8.0+
- Договор СДЭК + API-ключи
Changelog
1.3.0
- NEW: Страница «📦 Заказы отправки» — чистый список с фильтрами, сводкой, быстрыми действиями
- NEW: Страница «СДЭК Курьер» — вызов курьера с чеклистом заказов, выбором даты и интервала
- FIX:
type: 1→type: 2в payload (совместимость с договорами «доставка») - NEW: Поля склада-отправителя в настройках (компания, телефон, адрес)
- NEW: API:
create_intake,get_intake,delete_intake - FIX:
from_location.addressдля тарифов «дверь» (курьер забирает по адресу) - FIX:
packages[].comment— обязательное поле дляtype: 2
1.2.1
- FIX: кнопка «Выбрать ПВЗ» не открывала карту при клике мышью
- FIX: совместимость с checkout v4.0 (hidden billing_city, Dadata)
- FIX: CDEK_Shipping_Method загружался до инициализации WooCommerce
1.2.0
- FIX: дублирование хука woocommerce_process_shop_order_meta
- FIX: нерабочий get_barcode_pdf() — переписан
- FIX: XSS в тесте API
- FIX: раздельный кеш OAuth-токена test/prod
1.1.0
- Создание заказов СДЭК через API (кнопка в карточке заказа)
- Трекинг, статус, этикетки, история в метабоксе
- Крон-синхронизация статусов
1.0.0
- Расчёт стоимости через CDEK API v2.0
- Выбор ПВЗ на Яндекс.Карте
- Sandbox / Production режим
Лицензия
MIT — свободное использование и модификация.