https://github.com/cdek-it/sdk2.0
PHP SDK для API v2.0 от сервиса интеграции компании СДЭК
https://github.com/cdek-it/sdk2.0
cdek cdek-api integration
Last synced: 4 months ago
JSON representation
PHP SDK для API v2.0 от сервиса интеграции компании СДЭК
- Host: GitHub
- URL: https://github.com/cdek-it/sdk2.0
- Owner: cdek-it
- License: mit
- Created: 2019-11-12T04:10:58.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2025-10-29T07:11:25.000Z (8 months ago)
- Last Synced: 2025-10-29T09:11:22.838Z (8 months ago)
- Topics: cdek, cdek-api, integration
- Language: PHP
- Homepage:
- Size: 178 KB
- Stars: 37
- Watchers: 6
- Forks: 72
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Обновлённый SDK2.0 для сервиса интеграции СДЭК
[](https://scrutinizer-ci.com/g/cdek-it/sdk2.0/build-status/master)
[](https://scrutinizer-ci.com/g/cdek-it/sdk2.0/?branch=master)
[](https://scrutinizer-ci.com/g/cdek-it/sdk2.0/?branch=master)

Список обновлений в библиотеке от [TTATPuOT](https://github.com/TTATPuOT):
- Добавлена поддержка PHP 8.0+
- Исправлены мелкие PHPDoc неточности для более грамотных подсказок IDE
- Улучшены и добавлены новые юнит-тесты
- Добавлен метод `Client::calculator()` для расчёта стоимости доставки [по доступным тарифам](https://api-docs.cdek.ru/63345519.html) и [по коду тарифа](https://api-docs.cdek.ru/63345430.html)
- Улучшена [документация](https://github.com/cdek-it/sdk2.0/wiki)
- Исправлены тикеты оригинальной библиотеки:
- [Новые значения фильтра в экшене офисов #20](https://github.com/cdek-it/sdk2.0/issues/20)
- [При ошибках в запросе создания заказа не заполняется массив errorы у класса ApiReponse #11](https://github.com/cdek-it/sdk2.0/issues/11)
---
Реализация API v2.0 для [интеграции со службой доставки СДЭК](https://www.cdek.ru/clients/integrator.html).
Данная SDK поможет быстрее внедрить в свой проект взаимодействие со службой доставки СДЭК.
Возможности SDK:
- создание заказа
- информация о заказе
- удаление заказа
- подписка на вебхуки (статусы заказов и статусы печатных форм)
- информация о подписке на вебхуки
- удаление подписки на вебхуки
- получение списка ПВЗ
- создание заявки на вызов курьера
- информация о заявке на вызов курьера
- удаление заявки на вызов курьера
- создание запроса на формирование печатной формы накладной
- создание запроса на формирование печатной формы ШК-места
- получение cписка городов
- получение cписка регионов
Работа со всеми методами API возможна только при наличии доступов к сервису интеграции, которые выдаются только при наличии договора с компанией СДЭК.
***
### Требования
Требования — минимальны. Нужен PHP 7.1/8.0 или выше.
Данный SDK использует спецификацию [PSR-18 (HTTP-client)](https://www.php-fig.org/psr/psr-18/).
Это значит в качестве HTTP-клиента можно использовать любой - клиент, поддерживающий данную спецификацию.
Если у вашего клиента нет поддержки этой спецификации, можно посмотреть [имеющиеся адаптеры для большинства популярных HTTP-клиентов](http://docs.php-http.org/en/latest/clients.html)
***
### Установка
Установка осуществляется с помощью менеджера пакетов Composer
```bash
composer require cdek-it/sdk2.0
```
***
### Документация
[Полная документация располагается тут](https://github.com/cdek-it/sdk2.0/wiki)
***
### Примеры использования
```php
$client = new Psr18Client();
$cdek = new \CdekSDK2\Client($client);
$cdek->setAccount('account');
$cdek->setSecure('secure');
// создание заказа
$order = \CdekSDK2\BaseTypes\Order::create([...]);
$res = $cdek->orders()->add($order);
if ($res->hasErrors()) {
// Обрабатываем ошибки
// Если этого не сделать, в будущем будет ошибка RequestException
foreach ($res->getErrors() as $error) {
//считываем ошибки
}
}
if ($res->isOk()) {
$cdek_order = $cdek->formatResponse($res, \CdekSDK2\BaseTypes\Order::class);
// $cdek_order->entity->uuid;
// Если попытаться обработать ответ без проверки $res->isOk()
// и при этом в ответе будут ошибки, то здесь выбросится исключение RequestException
}
// получение информации о заказе
$res = $cdek->orders()->get($cdek_order->entity->uuid);
if ($res->isOk()) {
$cdek_order = $cdek->formatResponse($res, \CdekSDK2\Dto\OrderInfo::class);
}
//получить список офисов
$res = $cdek->offices()->getFiltered(['country_code' => 'kz']);
if ($res->isOk()) {
$pvzlist = $cdek->formatResponseList($res, \CdekSDK2\Dto\PickupPointList::class);
// $pvzlist->items;
}
```
### Тесты
Запуск тестов:
``` bash
$ composer test
```
### Лицензия
Данный проект распространяется [под лицензией MIT](LICENSE).