Пакетная обработка трек номеров "Почта России"
Режим Пакетного доступа позволяет отслеживать сразу несколько отправлений в одном запросе. Запрос может содержать до 3000 почтовых идентификаторов отправлений.
Работа с API Сервиса отслеживания в режиме Пакетного доступа осуществляется в два этапа:
запрос билета на подготовку информации, содержащий список идентификаторов отправлений (вызов метода getTicket);
получение готового ответа по билету (вызов метода 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