chessterrdev / ozonrocket-sdk
与Ozon Rocket API(1.0.0)交互的客户端
Requires
- php: >=7.4
- ext-json: *
- guzzlehttp/guzzle: >=7.0
Requires (Dev)
- phpunit/phpunit: >=9.5.0
This package is auto-updated.
Last update: 2024-09-21 13:39:22 UTC
README
Ozon Logistics (Ozon:Rocket)
仅在与Ozon签订合同的情况下,方可使用战斗API
SDK功能列表和内容
入门(授权)
配送
- 获取配送方式
- 按地址获取配送方式
- 按viewport获取配送方式
- 按标识符获取配送方式
- 获取配送方式标识符
- 获取支持配送方式的城市列表
- 计算配送费用
- 计算体积重量
- 按地址计算配送费用和期限
- 获取DropOff快递点仓库的交货点
- 获取退货仓库信息
- 获取配送期限信息
- 获取快递点仓库列表
开发中
- 订单
- 发货
- 跟踪
- 运单
- 报告
- 凭证
- 费率
- 标签
要求
作者尽量使SDK功能最全面和通用。需要PHP 7.4及以上版本,"ext-json"扩展,以及Guzzlehttp客户端。
安装
使用Composer包管理器进行安装
composer require chessterrdev/ozonrocket-sdk
文档
以下信息有助于了解Ozon Rocket API(1.0.0)
操作指南
入门
授权
为了通过数据交换协议与OzonRocket集成,需要
与OzonRocket签订合同,并在个人账户的设置 → API集成部分获取client_id + client_secret密钥对。出于安全考虑,不建议将密钥存入任何数据库中。
该软件套件支持测试和战斗(全功能)环境。
要使用测试环境,需要在第一个参数前传入'TEST'。SDK将自动加载所有必要的设置。
$client = (new \OzonRocketSDK\Client\Client('TEST'));
全功能的“战斗”授权使用api的client_id + client_secret密钥对进行。可选地,可以设置连接超时为第三个参数$timeout(默认为5.0),无论是测试还是战斗账户。
$client = (new \OzonRocketSDK\Client\Client($account, $secure));
成功授权后,服务器会返回一个token,默认有效期为3600秒。无需保存,您可以选择每次重新授权。将token保存在会话或文件中,将使您在指定时间内无需再次授权。
token存储
要使SDK在会话中保存token,需要在配置文件(\OzonRocketSDK\Client\Constants)中将SAVE_SESSION常量的值设置为true。
public const SAVE_SESSION = true;
同样,如果会话之前未打开,则需要打开它
if (!session_id()) session_start();
之后,SDK将控制token的有效期,并在必要时更新它,无论在测试或战斗环境中。例如,如果您使用了测试环境,之后决定切换到战斗环境,SDK将自动重新授权并保存新的token。
SDK可用获取器和设置器信息
每个getter和setter方法都对应于Ozon服务器响应的同名属性,采用驼峰式命名法。如果属性复杂,例如Package、Dimensions、GeoCoordinates等,通常会有对应的响应对象,如sdk中的Package、Dimensions、GeoCoordinates等。因此,通过getter访问这些属性时,您将获得该类的对象。
配送
获取配送方式
/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获取运输方式列表。
// Идентификаторы способов доставки. Значения id можно получить из ответа метода $client->deliveryVariants($deliveryVariants); $ids = (new \OzonRocketSDK\Entity\Request\DeliveryVariantsByIds())->setIds( [ 19189848103000, 1011000000015892 ] ); $result = $client->deliveryVariantsByIds($ids);
获取配送方式标识符
/v1/delivery/variants/byaddress/short
此方法用于根据指定地址获取运输方式ID。
// Информация о грузовом месте (отправлении). $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();
