chessterrdev/ozonrocket-sdk

与Ozon Rocket API(1.0.0)交互的客户端

v0.0.1-beta.1 2022-06-14 14:53 UTC

This package is auto-updated.

Last update: 2024-09-21 13:39:22 UTC


README

ozon

Ozon Logistics (Ozon:Rocket)

Latest Stable Version Total Downloads License

仅在与Ozon签订合同的情况下,方可使用战斗API

SDK功能列表和内容

入门(授权)

配送

开发中

  • 订单
  • 发货
  • 跟踪
  • 运单
  • 报告
  • 凭证
  • 费率
  • 标签

要求

作者尽量使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();

Ozon Rocket API 文档(1.0.0)