ashirchkov / yandex-logistics
PHP SDK for Yandex logistics (same day and another day) delivery api services
Installs: 1 531
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: >=8.0
- ext-json: *
- jms/serializer: 3.*
- nyholm/psr7: 1.*
- psr/http-client: 1.*
Requires (Dev)
- guzzlehttp/guzzle: 7.*
- phpunit/phpunit: *
- vlucas/phpdotenv: ^5.5
This package is auto-updated.
Last update: 2025-05-14 13:26:33 UTC
README
Полная реализация SDK для интеграции с API Yandex Logistics
Документация API
API Яндекс Доставки в другой день
API Яндекс «Экспресс-доставки»/«Доставки в течение дня»
Возможности:
API Яндекс Доставки в другой день
- Подготовка заявки
- Предварительная оценка стоимости доставки
- Получение интервалов доставки
- Точки самопривоза и ПВЗ
- Получение идентификатора населённого пункта
- Получение списка точек самопривоза и ПВЗ
- Основные запросы
- Создание заявки
- Подтверждение заявки
- Получение информации о заявке
- Получение информации о заявках во временном интервале
- Редактирование заказа
- Получение интервалов доставки для нового места получения заказа
- История статусов заявки
- Отмена заявки
- Ярлыки и акты приема-передачи
- Получение ярлыков
- Получение актов приёма-передачи для отгрузки
API Яндекс Доставки в другой день
- Методы «Доставки в течение дня»
- Интервалы «Доставки в течение дня»
- Предварительная оценка
- Первичная оценка стоимости без создания заявки
- Получение тарифов, доступных в точке
- Базовые методы
- Создание заявки
- Подтверждение заявки
- Поиск заявок
- Получение информации по заявке
- Отмена заявки и пропуск точек
- Получение признака отмены
- Отмена заявки
- Пропуск точки в заказе с мультиточками
- Информация о курьере
- Получение номера телефона курьера
- Получение местоположения курьера
- Получение ссылок для отслеживания курьера
- Коды подтверждения и акты приёма-передачи
- Получение кода подтверждения
- Получение акта приёма-передачи
- Информация по заявкам
- Получение информации по нескольким заявкам
- Журнал изменений заказов
- Получение прогноза по времени прибытия на точки
- Редактирование заявки
- Редактирование заявки до её подтверждения
- Частичное редактирование заявки после ее подтверждения
- Получить результат применения изменений
- Ровер
- Запрос на проверку возможности доставки ровером
- Запрос на открытие крышки ровера
- Подтверждение доставки
- Получение фотографий по точке
- Получение информации по заявке
Установка
$ composer require ashirchkov/yandex-logistics
Документация SDK
Инициализация API клиента
В примере использован GuzzleHttp клиент, вы можете использовать любой PSR-18 клиент.
<?php require_once 'vendor/autoload.php'; $psr18Client = new GuzzleHttp\Client(); $apiKey = '<your API-key>'; $testMode = true; // Если установлен true, запросы будут отправляться к тестовому API сервису Yandex $apiClient = new AlexeyShirchkov\Yandex\Logistics\Client($psr18Client, $apiKey, $testMode);
Далее в примерах подразумевается, что вы уже инициализировали $apiClient
API Яндекс Доставки в другой день:
Предварительная оценка стоимости доставки
$params = [ 'tariff' => 'self_pickup', 'source' => [ 'platform_station_id' => '4eb18cc4-329d-424d-a8a8-abfd8926463d', ], 'destination' => [ 'platform_station_id' => '0530d1b2-58be-4dba-8d69-3fb86fd61c9c', ], 'total_assessed_price' => 100000, 'total_weight' => 1000, ] $response = $apiClient->anotherDay()->calculate()->calculatePrice($params); if ($response->isSuccess()) { var_dump($response->getResult()); } else { var_dump($response->getErrors()); }
Получение интервалов доставки
$stationId = '4eb18cc4-329d-424d-a8a8-abfd8926463d'; $params = [ 'self_pickup_id' => '0530d1b2-58be-4dba-8d69-3fb86fd61c9c', 'send_unix' => true, ]; $response = $apiClient->anotherDay()->calculate()->calculateIntervals($stationId, $params); if ($response->isSuccess()) { var_dump($response->getResult()); } else { var_dump($response->getErrors()); }
Получение идентификатора населённого пункта
$response = $apiClient->anotherDay()->location()->getGeoIdByAddress('Москва'); if ($response->isSuccess()) { var_dump($response->getResult()); } else { var_dump($response->getErrors()); }
Получение списка точек самопривоза и ПВЗ
$params = [ 'type' => 'terminal', ]; $response = $apiClient->anotherDay()->location()->getPointList($params); if ($response->isSuccess()) { var_dump($response->getResult()); } else { var_dump($response->getErrors()); }
Создание заявки
$params = [ 'info' => [ 'operator_request_id' => '1234', ], 'recipient_info' => [ 'first_name' => 'Иван', 'phone' => '+79999999999', ], 'billing_info' => [ 'payment_method' => 'already_paid', ], 'source' => [ 'platform_station' => [ 'platform_id' => '4eb18cc4-329d-424d-a8a8-abfd8926463d', ], ], 'destination' => [ 'type' => 'platform_station', 'platform_station' => [ 'platform_id' => '0530d1b2-58be-4dba-8d69-3fb86fd61c9c', ], ], 'places' => [ [ 'barcode' => '1234567890', 'physical_dims' => [ 'predefined_volume' => 100, 'weight_gross' => 1000, ], ], ], 'items' => [ [ 'name' => 'Ручка шариковая (цвет синий)', 'count' => 5, 'article' => 'a123456', 'billing_details' => [ 'assessed_unit_price' => 10000, 'unit_price' => 10000, ], 'place_barcode' => '1234567890', ], [ 'name' => 'Ручка шариковая (цвет красный)', 'count' => 5, 'article' => 'a654321', 'billing_details' => [ 'assessed_unit_price' => 20000, 'unit_price' => 20000, ], 'place_barcode' => '1234567890', ], ], 'last_mile_policy' => 'self_pickup', ]; $response = $apiClient->anotherDay()->order()->createOrder($params); if ($response->isSuccess()) { var_dump($response->getResult()); } else { var_dump($response->getErrors()); }
Подтверждение заявки
$offerId = '<your offer_id>'; // offer_id, полученный после выполнения createOrder $response = $apiClient->anotherDay()->order()->confirmOrder($offerId); if ($response->isSuccess()) { var_dump($response->getResult()); } else { var_dump($response->getErrors()); }
Получение информации о заявке
$requestId = '<your request_id>'; // request_id, полученный после выполнения confirmOrder $response = $apiClient->anotherDay()->order()->getOrder($requestId); if ($response->isSuccess()) { var_dump($response->getResult()); } else { var_dump($response->getErrors()); }
Получение информации о заявках во временном интервале
$params = [ 'from' => (new DateTime('today'))->getTimestamp(), 'to' => (new DateTime('tomorrow'))->getTimestamp(), ]; $response = $apiClient->anotherDay()->order()->getOrders($params); if ($response->isSuccess()) { var_dump($response->getResult()); } else { var_dump($response->getErrors()); }
Редактирование заказа
$requestId = '<your request_id>'; // request_id, полученный после выполнения confirmOrder $params = [ 'recipient_info' => [ 'name' => 'Пётр' ] ]; $response = $apiClient->anotherDay()->order()->editOrder($requestId, $params); if ($response->isSuccess()) { var_dump($response->getResult()); } else { var_dump($response->getErrors()); }
Получение интервалов доставки для нового места получения заказа
$requestId = '<your request_id>'; // request_id, полученный после выполнения confirmOrder $params = [ 'destination' => [ 'type' => 'platform_station' ], ]; $response = $apiClient->anotherDay()->order()->redeliveryOrder($requestId, $params); if ($response->isSuccess()) { var_dump($response->getResult()); } else { var_dump($response->getErrors()); }
История статусов заявки
$requestId = '<your request_id>'; // request_id, полученный после выполнения confirmOrder $response = $apiClient->anotherDay()->order()->orderStatusHistory($requestId); if ($response->isSuccess()) { var_dump($response->getResult()); } else { var_dump($response->getErrors()); }
Отмена заявки
$requestId = '<your request_id>'; // request_id, полученный после выполнения confirmOrder $response = $apiClient->anotherDay()->order()->cancelOrder($requestId); if ($response->isSuccess()) { var_dump($response->getResult()); } else { var_dump($response->getErrors()); }
Получение ярлыков
$requestIds = [ '<your request_id>' // список request_id, полученных после выполнения confirmOrder ]; $response = $apiClient->anotherDay()->label()->generateLabels($requestIds); if ($response->isSuccess()) { file_put_contents(__DIR__ . '/labels.pdf', $response->getResult()); } else { var_dump($response->getErrors()); }
Получение актов приёма-передачи для отгрузки
$params = [ 'request_ids' => [ '<your request_id>' // список request_id, полученных после выполнения confirmOrder ] ] $response = $apiClient->anotherDay()->label()->getHandoverAct($params); if ($response->isSuccess()) { var_dump($response->getResult()); } else { var_dump($response->getErrors()); }
API Яндекс «Экспресс-доставки»/«Доставки в течение дня»:
Coming soon...