承接 ashirchkov/yandex-logistics 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

ashirchkov/yandex-logistics

Composer 安装命令:

composer require ashirchkov/yandex-logistics

包简介

PHP SDK for Yandex logistics (same day and another day) delivery api services

README 文档

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...

ashirchkov/yandex-logistics 适用场景与选型建议

ashirchkov/yandex-logistics 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.98k 次下载、GitHub Stars 达 2, 最近一次更新时间为 2023 年 04 月 27 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 ashirchkov/yandex-logistics 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 ashirchkov/yandex-logistics 我们能提供哪些服务?
定制开发 / 二次开发

基于 ashirchkov/yandex-logistics 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 1.98k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 18
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-04-27