Ознакомьтесь с обновлениями продуктов, которые мы анонсировали! Смотрите, что нового.

/

Пакетная обработка трек номеров "Почта России"

Режим Пакетного доступа позволяет отслеживать сразу несколько отправлений в одном запросе. Запрос может содержать до 3000 почтовых идентификаторов отправлений.

Работа с API Сервиса отслеживания в режиме Пакетного доступа осуществляется в два этапа:

  1. запрос билета на подготовку информации, содержащий список идентификаторов отправлений (вызов метода getTicket);

  2. получение готового ответа по билету (вызов метода getResponseByTicket).

Запрос билета на подготовку информации

Содержит список идентификаторов отправлений (вызов метода getTicket);

Запрос билета осуществляется по адресу local/php_interface/cron/get_ticket_and_data.php каждый час с 8:00 утра до 20:00 вечера

Код вызова

Вызов функции getTicket класса TicketResponse осуществляется по адресу local/modules/citfact.sitecore/lib/delivery/ticketresponse.php

Листинг

Описание

Первым делом находим все заказы находящиеся в статусе "Отправлен" и "Доставлен" у которых поле трек номер имеет не пустое значение, и у которых id службы доставки относятся к почте России.

Так же ограничиваем выборку трек номеров до 3000, об этом сказано в документации.

Количество идентификаторов отправлений в одном запросе не должно превышать 3000.

Далее полученные данные скармливаем для формирования билета и записываем данные в файл по пути /ticket_and_data/data.txt

На этом первый этап получения билета завершен. Переходим ко второму этапу.

Получение готового ответа по билету (вызов метода getResponseByTicket).

Получение ответа по билету осуществляется по адресу local/php_interface/cron/pochta_delivery_package.php

Вызов осуществляется по cron раз в 20 минут с 8:00 до 20:00

Код вызова

В данном файле проверяем есть ли у нас билет по адресу /ticket_and_data/data.txt

Далее если файл существует, проверяем прошло ли 15 минут с момента получения билета.

Это необходимо сделать согласно документации.

Рекомендуется выполнять первое обращение за ответом по билету не ранее, чем через 15 минут от момента выдачи билета. В случае неготовности результата повторные обращения по тому же билету следует выполнять не чаще, чем 1 раз в 15 минут.

Если прошло более 15 минут с момента запроса билета, то вызываем функцию changeOrderStatusesByServiceResponseNew класса DeliveryPochtaNew по пути local/modules/citfact.sitecore/lib/delivery/deliverypochtanew.php

Листинг

Описание

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

Далее в переменную $getTicket заносим результат запроса:

$data["ticket"] - Билет

DELIVERY_POCHTA_LOGIN - Логин авторизации от почты России

DELIVERY_POCHTA_PASS - Пароль авторизации от почты России

Данные констант хранятся по пути /local/php_interface/constants.php