Интеграция 1С-Битрикс со службой доставки Казпочта (Казахстан)

Ситуация: клиент терял до 30% заказов из-за неработающей доставки в регионы Казахстана К нам обратился интернет-магазин с товарооборотом 5 млн тенге в месяц. Частные курьеры доставляли только в Алматы и Астану, в районные центры — только Казпочта. Встроенный модуль Битрикса не справлялся: расчёт
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Интеграция 1С-Битрикс со службой доставки Казпочта (Казахстан)
Средний
~1-2 недели

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1454
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1017
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    760
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    803
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1162

Ситуация: клиент терял до 30% заказов из-за неработающей доставки в регионы Казахстана

К нам обратился интернет-магазин с товарооборотом 5 млн тенге в месяц. Частные курьеры доставляли только в Алматы и Астану, в районные центры — только Казпочта. Встроенный модуль Битрикса не справлялся: расчёт стоимости выдавал ошибки, трекинг отсутствовал. Ручная выписка накладных занимала 2 часа в день, а ошибки в индексах приводили к возвратам. Мы провели аудит и решили полностью переписать обработчик доставки через REST API Казпочты. Экономия на ручной обработке заказов составила 15 часов в месяц. В результате после внедрения клиент автоматизировал 90% заказов, время обработки сократилось с 30 минут до 2 минут на заказ. Кроме того, мы устранили ошибки округления стоимости, которые возникали из-за неверной конвертации валют. Теперь покупатели из любого города Казахстана могут оформить доставку онлайн, а магазин получает актуальную стоимость с учётом веса и объявленной ценности.

Как работает интеграция с Казпочтой?

Казпочта — государственный оператор с 3500+ отделений. API доступен партнёрам после договора. Базовый URL: https://api.kazpost.kz/api/v1. Авторизация через X-Api-Key. Основные методы:

  • POST /delivery/calculate — расчёт стоимости
  • POST /shipment/create — создание отправления
  • GET /shipment/{barcode}/track — трекинг
  • GET /offices — список отделений по индексу

Подробнее о REST API — архитектуре, на которой построен сервис.

Расчёт стоимости

class KazposhtaHandler extends \Bitrix\Sale\Delivery\Services\Base { protected function calculateConcrete( \Bitrix\Sale\Shipment $shipment ): \Bitrix\Sale\Delivery\CalculationResult { $result = new \Bitrix\Sale\Delivery\CalculationResult(); $toIndex = $this->getPostIndex($shipment); if (!$toIndex) { $result->addError(new \Bitrix\Main\Error('Не указан почтовый индекс получателя')); return $result; } $response = $this->apiPost('/delivery/calculate', [ 'from_index' => $this->getOption('SENDER_INDEX'), 'to_index' => $toIndex, 'weight' => max((int)$shipment->getWeight(), 100), 'declared_value' => round($shipment->getOrder()->getPrice()), 'mail_type' => 'PARCEL', 'mail_class' => 'ORDINARY', ]); if (!empty($response['total_rate'])) { $result->setDeliveryPrice((float)$response['total_rate']); $min = $response['delivery_days_min'] ?? 3; $max = $response['delivery_days_max'] ?? 14; $result->setPeriodDescription("{$min}–{$max} дней"); } return $result; } private function getPostIndex(\Bitrix\Sale\Shipment $shipment): ?string { $props = $shipment->getOrder()->getPropertyCollection(); $index = $props->getItemByOrderPropertyCode('ZIP')?->getValue(); return preg_match('/^\d{6}$/', (string)$index) ? $index : null; } } 

Почтовый индекс — обязательное поле. В форме оформления заказа делаем его обязательным и валидируем формат (6 цифр).

Как настроить обработчик доставки?

  1. Установите модуль доставки Казпочты или создайте свой класс, унаследованный от \Bitrix\Sale\Delivery\Services\Base.
  2. Зарегистрируйте обработчик в административной панели Битрикса: настройки → службы доставки → добавить.
  3. Добавьте свойства заказа: ZIP (индекс), ADDRESS, FIO, PHONE. Для трекинга — пользовательское свойство UF_KAZPOST_BARCODE.
  4. Реализуйте методы calculateConcrete и createShipment, как показано выше.
  5. Настройте агент для периодического опроса статусов.

Создание отправления

public function createShipment(\Bitrix\Sale\Shipment $shipment): string { $order = $shipment->getOrder(); $props = $order->getPropertyCollection(); $response = $this->apiPost('/shipment/create', [ 'sender' => [ 'index' => $this->getOption('SENDER_INDEX'), 'address' => $this->getOption('SENDER_ADDRESS'), 'name' => $this->getOption('SENDER_NAME'), 'phone' => $this->getOption('SENDER_PHONE'), ], 'recipient' => [ 'index' => $props->getItemByOrderPropertyCode('ZIP')?->getValue(), 'address' => $props->getItemByOrderPropertyCode('ADDRESS')?->getValue(), 'name' => $props->getItemByOrderPropertyCode('FIO')?->getValue(), 'phone' => $props->getItemByOrderPropertyCode('PHONE')?->getValue(), ], 'parcel' => [ 'weight' => max((int)$shipment->getWeight(), 100), 'declared_value' => round($order->getPrice()), 'mail_type' => 'PARCEL', 'description' => 'Товар', ], 'payment_type' => 'PREPAID', ]); return $response['barcode'] ?? ''; } 

Штрих-код отправления сохраняем в UF_KAZPOST_BARCODE.

Почему агент обязателен для трекинга?

API Казпочты не отправляет вебхуки — статусы нужно опрашивать. Заводим агент Битрикс, запускаемый раз в 6 часов. Он проверяет штрих-коды заказов в статусе "P" (оплачен) и при статусе "DELIVERED" переводит заказ в "F" (доставлен). Важно предусмотреть timeout для API запросов (рекомендуем 10–15 сек) и логирование ошибок, чтобы при сбое Казпочты агент не зависал. Механизм повторов при ошибке 500–503 помогает избежать потери статусов.

function checkKazposhtaStatus(): string { $orders = \Bitrix\Sale\Order::getList([ 'filter' => ['=PROPERTY_VAL.UF_KAZPOST_BARCODE' => true, '=STATUS_ID' => 'P'], 'select' => ['ID'] ]); foreach ($orders as $order) { $barcode = $order->getPropertyCollection()->getItemByOrderPropertyCode('UF_KAZPOST_BARCODE')->getValue(); $track = new KazposhtaHandler()->track($barcode); if ($track['status'] === 'DELIVERED') { $order->setField('STATUS_ID', 'F'); $order->save(); } } return 'checkKazposhtaStatus();'; } 

При ошибках API (например, 400 с телом {"error": "Invalid index"}) обработчик выводит сообщение: "Почтовый индекс получателя указан неверно". Все запросы логируются в /bitrix/logs/kazpost.log для отладки.

Типичные ошибки при интеграции

  • Неверный формат индекса — должен быть 6 цифр. Валидируйте на клиента через маску ввода и на сервере через preg_match('/^\d{6}$/'). При ошибке выводите сообщение "Проверьте почтовый индекс получателя".
  • Отсутствие обязательных свойств заказа (ZIP, ADDRESS, FIO, PHONE) — предотвратите пустые данные обязательными полями в форме оформления. Перед запросом к API выполняйте проверку через isset() и !empty().
  • Не настроен агент для трекинга — статусы не обновляются. Убедитесь, что агент зарегистрирован в админке и запускается по расписанию (cron). Проверьте логи в /bitrix/logs/ при отсутствии обновлений.
  • Некорректный API-ключ — возвращает 401. Проверьте наличие ключа в переменных окружения и срок его действия у партнёра Казпочты (ключи требуют периодического обновления контракта).

Особенности доставки Казпочтой

  • Адресная доставка до двери — только в крупных городах (Алматы, Астана, Шымкент), в остальных — до отделения.
  • EMS — быстрее и надёжнее для срочных отправлений в крупные города.
  • API Казпочты поддерживает наложенный платёж (COD), комиссия ~2% от суммы.
  • Тариф рассчитывается в тенге — проверьте настройку валюты магазина.

Сроки и этапы работ

Этап Срок
Разработка обработчика расчёта и создания отправления 4–5 дней
Подключение трекинга и уведомлений +2 дня
Реализация наложенного платежа (COD) +1 день
Тестирование на реальных заказах 1–2 дня
Итого 7–10 дней
Тип отправления mail_type mail_class Описание
Посылка обычная PARCEL ORDINARY Стандартная посылка
EMS EMS EMS Ускоренная доставка
Ценная посылка PARCEL VALUABLE С объявленной ценностью

Что входит в работу

  • Разработка класса-обработчика доставки (на базе \Bitrix\Sale\Delivery\Services\Base).
  • Настройка свойств заказа: индекс, адрес, штрих-код.
  • Создание агента для трекинга.
  • Интеграция с фискализацией (54-ФЗ) — обсуждается отдельно.
  • Тестирование на тестовом и боевом контурах.
  • Передача документации и доступов.

Стоимость интеграции рассчитывается индивидуально и обычно составляет от 80 000 до 150 000 тенге. Мы гарантируем стабильную работу. Опыт — 5+ лет, более 20 проектов по интеграции 1С-Битрикс с почтовыми службами. По запросу предоставляем сертификаты партнёра 1С-Битрикс.

Получите консультацию по интеграции — свяжитесь с нами. Оценим ваш проект за 1 день и подготовим предложение. Закажите расчёт по почте или через форму обратной связи.