chessterrdev/ozonrocket-sdk
Composer 安装命令:
composer require chessterrdev/ozonrocket-sdk
包简介
Client for interactive with Ozon Rocket API (1.0.0)
关键字:
README 文档
README
Ozon Logistics (Ozon:Rocket)
Работа с боевым API возможна только при наличии договора с Ozon
Список возможностей и содержание SDK:
Начало работы (авторизация)
Доставка
- Получить способы доставки
- Получить способы доставки по адресу
- Получить способы доставки по viewport
- Получить способы доставки по идентификаторам
- Получить идентификаторы способов доставки
- Получить список городов с доступными способами доставки
- Рассчитать стоимости доставки
- Рассчитать объёмный вес
- Рассчитать стоимость и срок доставки по адресу
- Получить место передачи отправлений DropOff на склад
- Получить информацию о складе возврата
- Получить информацию о сроках доставки
- Получить список складов пикапа
В разработке:
- Заказы
- Отгрузка
- Трекинг
- Накладные
- Отчёты
- Акты
- Тарифы
- Этикетки
Требования
Автор старался сделать наиболее функциональный и универсальный SDK. Необходимы: PHP 7.4 и выше, расширение "ext-json", и клиент Guzzlehttp.
Установка
Установка осуществляется с помощью менеджера пакетов Composer
composer require chessterrdev/ozonrocket-sdk
Документация
Пригодится справочная информация по Ozon Rocket API (1.0.0)
Руководство к действию
Начало работы
Авторизация
Для интеграции с OzonRocket по протоколу обмена данными необходимо:
Заключить договор с OzonRocket и получить пару ключей client_id + client_secret в личном кабинете в разделе Настройки → Интеграция API. Для безопасности не рекомендуем вносить ключи в какую-либо базу данных.
Данный программный комплекс поддерживает как тестовую, так и боевую (полнофункциональную) среду.
Для того, чтобы воспользоваться Тестовой средой, нужно в первом аргументе передать 'TEST'. Все необходимые настройки SDK загрузит автоматически.
$client = (new \OzonRocketSDK\Client\Client('TEST'));
Полнофункциональная "боевая" авторизация осуществляется с использованием пары ключей client_id + client_secret для api. Опционально можно устанавливать таймаут соединения 3 аргументом $timeout (по умолчанию 5.0), как на тестовом, так и на боевом аккаунте.
$client = (new \OzonRocketSDK\Client\Client($account, $secure));
После успешной авторизации сервер выдает токен, срок действия токена по умолчанию 3600 секунд. Сохранять не обязательно, вы можете авторизироваться каждый раз заново. Сохранив в сессии или в файле этот токен, вы избавите себя от повторной авторизации на указанный срок.
Cохранение токена
Чтобы SDK сохраняла токен в сессии, нужно в файле настроек (\OzonRocketSDK\Client\Constants) у константы SAVE_SESSION установить значение true.
public const SAVE_SESSION = true;
Так же, если сессия не была открыта ранее, её нужно открыть:
if (!session_id()) session_start();
Далее, SDK будет контролировать время жизни токена и обновлять его по надобности, независимо от среды (тестовой или боевой). Например, если вы пользовались тестовой средой и после решили перейти на боевую, SDK автоматически авторизуется заново и сохранит новый токен.
Информация о доступных геттерах и сеттерах SDK
Каждый метод геттер и сеттер соответствует одноименному свойству ответа сервера Ozon в camel case (Верблюжий регистре). Если свойство сложное, например, Package, Dimensions, GeoCoordinates, то у него как правило есть объект ответа sdk Package, Dimensions, GeoCoordinates и т.п. Соответственно обратившись к этому свойству через геттер вы получите объект данного класса.
Доставка
Получить способы доставки
/v1/delivery/variants
$deliveryVariants = (new \OzonRocketSDK\Entity\Request\DeliveryVariants()) // Название города. Необязательный параметр. Cписки городов можно получить через: // $client->deliveryCities() или // $client->deliveryCitiesExtended(['ExpressCourier','Courier', 'PickPoint', 'Postamat']); ->setCityName('Москва') ->setPaginationSize(1) // Количество записей на странице. Необязательный параметр ->setPaginationToken('') // Токен следующей страницы. Необязательный параметр ->setPayloadIncludesIncludePostalCode(true) // Добавить в ответ часы работы пункта выдачи ->setPayloadIncludesIncludeWorkingHours(true); // Добавить в ответ почтовый индекс пункта выдач $result = $client->deliveryVariants($deliveryVariants);
Получить способы доставки по адресу
/v1/delivery/variants/byaddress
// Информация о грузовом месте (отправлении). $package = (new \OzonRocketSDK\Entity\Common\Package()) ->setCount(2) // Количество одинаковых коробок. ->setDimensions(new OzonRocketSDK\Entity\Common\Dimensions(1000,1000,1000,1000)) // (вес в гр / Длинна в мм / Высота в мм / Ширина в мм) ->setPrice(1500) // Общая стоимость содержимого коробки в рублях. ->setEstimatedPrice(1500) // Объявленная ценность содержимого коробки. ->setIsReturnAccompanyingDocument(true); // Установить Возвращаемый Сопроводительный Документ. Необязательный параметр $deliveryVariantsByAddress = (new \OzonRocketSDK\Entity\Request\DeliveryVariantsByAddress()) ->setDeliveryType('PickPoint') // Способ доставки: Courier / PickPoint / Postamat // Фильтр для способов доставки по признакам. // Filter(Возможность принимать платёж наличными, Возможность принимать платёж банковской картой, Возможность принимать платёж) ->setFilter(new \OzonRocketSDK\Entity\Common\Filter(true, true, true)) // Адрес доставки. Как минимум, нужно указать населённый пункт. Для областных населённых пунктов также указывается область и район. ->setAddress('Москва') ->setRadius(50) // Радиус действия в километрах. Рекомендуемое значение — 50. Минимальное значение - 1. ->setPackages([$package, $package]); // Массив с Информацией о грузовом месте (отправлении). $result = $client->deliveryVariantsByAddress($deliveryVariantsByAddress);
Получить способы доставки по viewport
/v1/delivery/variants/byviewport
Рекомендуем использовать метод для интегрирования виджета карты на сайт.
// Информация о грузовом месте (отправлении). $package1 = (new \OzonRocketSDK\Entity\Common\Package()) ->setCount(2) // Количество одинаковых коробок. ->setDimensions(new OzonRocketSDK\Entity\Common\Dimensions(1000,1000,1000,1000)) // (вес в гр / Длинна в мм / Высота в мм / Ширина в мм) ->setPrice(1500) // Общая стоимость содержимого коробки в рублях. ->setEstimatedPrice(1500) // Объявленная ценность содержимого коробки. ->setIsReturnAccompanyingDocument(true); // Установить Возвращаемый Сопроводительный Документ. Необязательный параметр // Так же можно формировать package через конструктор $package2 = new \OzonRocketSDK\Entity\Common\Package(2, new \OzonRocketSDK\Entity\Common\Dimensions(1000,1000,1000,1000), 1500, 1500, null); // Видимая пользователю область веб-страницы. $viewport = new \OzonRocketSDK\Entity\Common\ViewPort( // GeoCoordinate - указание Долготы и Широты new \OzonRocketSDK\Entity\Common\GeoCoordinates( 37.616440, 55.758924), // Широта и Долгота Правого Верхнего края new \OzonRocketSDK\Entity\Common\GeoCoordinates( 36.603577, 54.750915), // Широта и Долгота Левого Нижнего края 2 // Коэффициент масштабирования ); $deliveryVariantsByViewport = (new \OzonRocketSDK\Entity\Request\DeliveryVariantsByViewport()) ->setDeliveryTypes(['Postamat', 'PickPoint']) // Способ доставки: PickPoint / Postamat ->setViewPort($viewport) // Видимая пользователю область веб-страницы ->setPackages([$package1, $package2]) // Информация о грузовом месте (отправлении). // Фильтр для способов доставки по признакам. // Filter(Возможность принимать платёж наличными, Возможность принимать платёж банковской картой, Возможность принимать платёж) ->setFilter(new \OzonRocketSDK\Entity\Common\Filter(true, true, true)); $result = $client->deliveryVariantsByViewport($deliveryVariantsByViewport);
Получить способы доставки по идентификаторам
/v1/delivery/variants/byids
Метод для получения списка способов доставки по идентификаторам способов доставки.
// Идентификаторы способов доставки. Значения id можно получить из ответа метода $client->deliveryVariants($deliveryVariants); $ids = (new \OzonRocketSDK\Entity\Request\DeliveryVariantsByIds())->setIds( [ 19189848103000, 1011000000015892 ] ); $result = $client->deliveryVariantsByIds($ids);
Получить идентификаторы способов доставки
/v1/delivery/variants/byaddress/short
Метод для получения идентификаторов способов доставки по указанному адресу.
// Информация о грузовом месте (отправлении). $package1 = (new \OzonRocketSDK\Entity\Common\Package()) ->setCount(2) // Количество одинаковых коробок. ->setDimensions(new OzonRocketSDK\Entity\Common\Dimensions(1000,1000,1000,1000)) // Информация о габаритах. (вес в гр / Длинна в мм / Высота в мм / Ширина в мм) ->setPrice(1500) // Общая стоимость содержимого коробки в рублях. ->setEstimatedPrice(1500) // Объявленная ценность содержимого коробки. ->setIsReturnAccompanyingDocument(true); // Установить Возвращаемый Сопроводительный Документ. Необязательный параметр // Так же можно формировать package через конструктор $package2 = new \OzonRocketSDK\Entity\Common\Package(2, new \OzonRocketSDK\Entity\Common\Dimensions(1000,1000,1000,1000), 1500, 1500, null); $deliveryTyp = ['Courier', 'PickPoint', 'Postamat']; // Способ доставки: Courier / PickPoint / Postamat $radius = 49; // Радиус действия в километрах. Рекомендуемое значение — 50. Минимальное значение - 1. $limit = 9; // Количество способов для возврата в ответе. Максимум — 10. $deliveryVariantsByAddressShort = (new \OzonRocketSDK\Entity\Request\DeliveryVariantsByAddressShort($deliveryTyp, $radius, $limit)) //->setDeliveryType('PickPoint') // Способ доставки: Courier / PickPoint / Postamat //->setRadius(50) // Радиус действия в километрах. Рекомендуемое значение — 50. Минимальное значение - 1. //->setLimit(10) // Количество способов для возврата в ответе. Максимум — 10. ->setAddress('Москва, Большой Власьевский переулок, 12') // Адрес доставки. Как минимум, нужно указать населённый пункт. Для областных населённых пунктов также указывается область и район. Указывать номер квартиры не нужно. ->setPackages([$package1, $package2]); // Данные о грузовом месте (отправлении). $result = $client->deliveryVariantsByAddressShort($deliveryVariantsByAddressShort);
Получить список городов с доступными способами доставки
/v1/delivery/cities/extended
// Получение списка городов, в которые есть возможность доставлять $result = $client->deliveryCities(); /** * Получение расширенного списка городов, в которых принципалу доступны способы доставки. * Способ доставки: * Courier — доставка курьером, * PickPoint — самовывоз, * Postamat — постамат. */ $result = $client->DeliveryCitiesExtended(['ExpressCourier','Courier', 'PickPoint', 'Postamat']);
Рассчитать стоимости доставки
/v1/delivery/calculate
$deliveryCalculate = new \OzonRocketSDK\Entity\Request\DeliveryCalculate( 19189848103000, // Идентификатор способа доставки. Значения id можно получить из ответа метода $client->deliveryVariants($deliveryVariants) 1500, // Вес отправления в граммах. 5056649045000, // Идентификатор места передачи отправления. Значения id можно получить из ответа метода $client->deliveryFromPlaces() 6000 // Объявленная ценность отправления. ); $result = $client->deliveryCalculate($deliveryCalculate);
Рассчитать объёмный вес
/v1/delivery/calculate/materialWeight
// Информация о грузовом месте (отправлении). $package1 = (new \OzonRocketSDK\Entity\Common\Package()) ->setCount(2) // Количество одинаковых коробок. ->setDimensions(new OzonRocketSDK\Entity\Common\Dimensions(1000,1000,1000,1000)) // Информация о габаритах. (вес в гр / Длинна в мм / Высота в мм / Ширина в мм) ->setPrice(1500) // Общая стоимость содержимого коробки в рублях. ->setEstimatedPrice(1500) // Объявленная ценность содержимого коробки. ->setIsReturnAccompanyingDocument(true); // Установить Возвращаемый Сопроводительный Документ. Необязательный параметр // Так же можно формировать package через конструктор $package2 = new \OzonRocketSDK\Entity\Common\Package(2, new \OzonRocketSDK\Entity\Common\Dimensions(1000,1000,1000,1000), 1500, 1500, null); $package3 = new \OzonRocketSDK\Entity\Common\Package(2, new \OzonRocketSDK\Entity\Common\Dimensions(1000,1000,1000,1000), 1500, 1500, null); $result = $client->deliveryCalculateMaterialWeight([$package1, $package2, $package3, $package1, $package2, $package3]);
Рассчитать стоимость и срок доставки по адресу
/v1/delivery/calculate/information
Метод для рассчёта стоимости и срока доставки по адресу с учётом объёмного веса.
// Информация о грузовом месте (отправлении). $package1 = (new \OzonRocketSDK\Entity\Common\Package()) ->setCount(2) // Количество одинаковых коробок. ->setDimensions(new OzonRocketSDK\Entity\Common\Dimensions(1000,1000,1000,1000)) // Информация о габаритах. (вес в гр / Длинна в мм / Высота в мм / Ширина в мм) ->setPrice(1500) // Общая стоимость содержимого коробки в рублях. ->setEstimatedPrice(1500) // Объявленная ценность содержимого коробки. ->setIsReturnAccompanyingDocument(true); // Установить Возвращаемый Сопроводительный Документ. Необязательный параметр // Так же можно формировать package через конструктор $package2 = new \OzonRocketSDK\Entity\Common\Package(2, new \OzonRocketSDK\Entity\Common\Dimensions(1000,1000,1000,1000), 1500, 1500, null); $package3 = new \OzonRocketSDK\Entity\Common\Package(2, new \OzonRocketSDK\Entity\Common\Dimensions(1000,1000,1000,1000), 1500, 1500, null); $result = $client->deliveryCalculateInformation( new \OzonRocketSDK\Entity\Request\DeliveryCalculateInformation( 15, // Идентификатор места отправления. Значения id можно получить из ответа метода $client->deliveryFromPlaces() "Москва", // Адрес доставки. [$package1, $package2, $package3] // Массив информации по отправлениям. ) );
Получить место передачи отправлений DropOff на склад
/v1/delivery/from_places
$result = $client->deliveryFromPlaces();
Получить информацию о складе возврата
/v1/delivery/return_places
$result = $client->deliveryReturnPlaces();
Получить информацию о сроках доставки
/v1/delivery/time
$result = $client->deliveryTime( new \OzonRocketSDK\Entity\Request\DeliveryTime( 15, // Идентификатор места передачи отправления. Значения id можно получить из ответа метода $client->deliveryFromPlaces() 19203004525000 // Идентификатор способа доставки. Значения id можно получить из ответа метода $client->deliveryVariants($deliveryVariants) ) );
Получить список складов пикапа
/v1/delivery/pickup_places
$result = $client->deliveryPickupPlaces();
chessterrdev/ozonrocket-sdk 适用场景与选型建议
chessterrdev/ozonrocket-sdk 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 4 次下载、GitHub Stars 达 0, 最近一次更新时间为 2022 年 06 月 13 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「api」 「delivery」 「logistics」 「rocket」 「ozon」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 chessterrdev/ozonrocket-sdk 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 chessterrdev/ozonrocket-sdk 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 chessterrdev/ozonrocket-sdk 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Miaoxing Logistics Plugin
PHP SDK for the Parcel Monkey UK API
A PSR-7 compatible library for making CRUD API endpoints
Unofficial PHP SDK for Poste Delivery Business Rest API services
PHP SDK for SpediamoPro Rest API services
PHP SDK for InPost Global Rest API
统计信息
- 总下载量: 4
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 7
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-06-13
