Download the PHP package antistress-store/cdek-sdk-v2 without Composer
On this page you can find all versions of the php package antistress-store/cdek-sdk-v2. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download antistress-store/cdek-sdk-v2
More information about antistress-store/cdek-sdk-v2
Files in antistress-store/cdek-sdk-v2
Package cdek-sdk-v2
Short Description PHP SDK для API v2.0 от сервиса интеграции компании СДЭК
License MIT
Homepage https://antistress.store
Rated 5.00 based on 1 reviews
Informations about the package cdek-sdk-v2
antistress-store/cdek-sdk-v2 |
SDK для интеграции с API 2.0 CDEK от Antistress.Store®
Перед вами полное SDK для API v2.0 для интеграции со службой доставки СДЭК.
Вопросы по интеграции вашим php \ Laravel вебсайтом, crm написать руководителю.
Список возможностей и содержание SDK:
- SDK для интеграции с API 2.0 CDEK от Antistress.Store®
- Перечень доступных методов класса
CdekClientV2
- Требования
- Установка
- Документация
- Руководство к действию
- Авторизация
- Cохранение токена
- Информация о доступных геттерах и сеттерах SDK
- Расчёт стоимости доступных тарифов
- Расчёт стоимости тарифа
- Список методов для получения ответа сущности класса TariffResponse
- Получение списка ПВЗ
- Список методов для установки сущности класса DeliveryPoints
- Получение списка регионов
- Получение списка городов
- Регистрация заказа
- Информация о заказе по id заказа в ИМ
- Информация о заказе по cdek_number (номеру накладной)
- Информация о заказе по uuid
- Список методов для получения ответа сущности класса OrderResponse
- Список методов для установки сущности класса Order
- Печать квитанции
- Список методов для установки сущности класса Invoice
- Список методов для получения данных сущности класса PrintResponse
- Удаление заказа
- Отмена заказа
- Регистрация договоренностей о доставке
- Получение информации договоренности о доставке
- Список методов для получения данных сущности класса AgreementResponse
- Регистрация заявки на вызов курьера
- Получение заявки на вызов курьера
- Удаление заявки на вызов курьера
- Получение информации о переводе наложенного платежа
- Получение информации о чеках
- Подписка на вебхуки (Webhooks)
- Известные проблемы
- Лицензия
- Перечень доступных методов класса
В разработке:
- Регистрация преалерта
- Информация о преалерте
- Информация о паспортных данных
Перечень доступных методов класса CdekClientV2
Задача | Метод | Аргументы | Ответ |
---|---|---|---|
Cохранение токена | setMemory |
memory , fu |
CdekClientV2 |
Получение списка ПВЗ | getDeliveryPoints |
filter |
DeliveryPointsResponse[] |
Получение списка регионов | getRegions |
filter |
RegionsResponse[] |
Получение списка городов | getCities |
filter |
CitiesResponse[] |
Расчёт стоимости тарифа | calculateTariff |
tariff |
TariffResponse |
Расчёт стоимости списка тарифов | calculateTariffList |
tariff |
TariffListResponse[] |
Регистрация заказа | createOrder |
order |
EntityResponse |
Удаление заказа | deleteOrder |
uuid |
false |
Отмена заказа | deleteOrder |
uuid |
EntityResponse |
Изменение заказа | updateOrder |
order |
EntityResponse |
Информация о заказе по трек-номеру | getOrderInfoByCdekNumber |
cdek_number |
OrderResponse |
Информация о заказе по ID заказа ИМ | getOrderInfoByImNumber |
im_number |
OrderResponse |
Информация о заказе по uuid | getOrderInfoByUuid |
uuid |
OrderResponse |
Формирование ШК-места к заказу | setBarcode |
barcode |
EntityResponse |
Получение сущности накладной к заказу | getBarcode |
uuid |
PrintResponse |
Печать pdf файла ШК-места к заказу | getBarcodePdf |
uuid |
StreamInterface |
Формирование квитанции к заказу | setInvoice |
invoice |
EntityResponse |
Получение сущности накладной к заказу | getInvoice |
uuid |
PrintResponse |
Печать pdf файла накладной(квитанции) к заказу | getInvoicePdf |
uuid |
StreamInterface |
Регистрация договоренности о доставке | createAgreement |
agreement |
EntityResponse |
Получение договоренности о доставке | getAgreement |
uuid |
AgreementResponse |
Регистрация заявки на вызов курьера | createIntakes |
intakes |
EntityResponse |
Получение информации о заявке на вызов курьера | getIntakes |
uuid |
IntakesResponse |
Удаление заявки на вызов курьера | deleteIntakes |
uuid |
false |
Получение информации о наложенных платежах | getPayments |
date |
PaymentResponse |
Получение информации о чеках | getChecks |
check |
CheckResponse |
Подписка на вебхуки (Webhooks) | setWebhooks |
webhooks |
EntityResponse |
История
- v1.2.2 В CdekClientV2 добавлены строгие типы возврата значений (будьте внимательны). Исправлен метод getWebhooks (спасибо Ilya Brilev). Добавлены класс и его тесты WebhookListResponce
- v1.2 Добавлены первые тесты DeliveryPoints и Tariff, исправлены тестовые логин и пароль (обновились у сдэк)
- v1.1.1 Обновили ссылку на документацию. Спасибо Nikolay Lapay
- v1.1
- Добавлена возможность изменять таймаут соединения.
- Добавлены новые методы для работы с вебхуками Спасибо lor08
- Добавлены Позиции товаров в упаковке, параметр page при запросе городов Спасибо Vladimir Noskov
-
Добавлены address_full в LocationResponse Спасибо vaii
- v1.0.6 - Добавили delivery_recipient_cost теперь может быть нулевое значение. Спасибо AndreyArtamonov
- v1.0.5 - Добавили новые свойства в Response по Пунктам выдачи. Спасибо Mexaanik
- v1.0.4 - Исправлена совместимость с php 7. За исправление спасибо Anton Yadokhin
- v1.0.3 - Добавлен утвержденный со СДЭК ключ разработчика.
- v1.0.2 - Добавлена процедура проверки синтаксиса. За исправление спасибо sanmai Alexey Kopytko
- v1.0.1 - Добавлен Метод получения чеков
Требования
Автор старался сделать наиболее функциональный и универсальный SDK. Необходимы: PHP 7.2 и выше, расширение "ext-json", и клиент Guzzlehttp. Тесты проводились на guzzlehttp 7.3.
Установка
Установка осуществляется с помощью менеджера пакетов Composer
Документация
Пригодится справочная информация по Протоколу обмену данными (v2.0)
Руководство к действию
Авторизация
Для интеграции с ИС СДЭК по протоколу обмена данными (v2.0) необходимо:
Заключить договор со СДЭК. Получить логин и пароль для доступа к API или создать ключ для доступа к боевой учетной записи. Для этого нужно в личном кабинете в разделе "Интеграция" нажать кнопку "Создать ключ", затем в этом разделе появится идентификатор аккаунта и пароль.
Данный программный комплекс поддерживает как тестовую, так и боевую (полнофункциональную) среду.
Для того, чтобы воспользоваться Тестовой средой, нужно в первом аргументе передать 'TEST'. Все необходимые настройки SDK загрузит автоматически.
Полнофункциональная "боевая" авторизация осуществляется с использованием логина и пароля для api. Опционально можно устанавливать таймаут соединения 3 аргументом $timeout (по умолчанию 5.0), как на тестовом, так и на боевом аккаунте.
После успешной авторизации сервер выдает токен, срок действия токена по умолчанию 3600 секунд. Сохранять не обязательно, вы можете авторизироваться каждый раз заново. Сохранив в сессии или в файле этот токен, вы избавите себя от повторной авторизации на указанный срок.
Cохранение токена
В этом вам поможет сеттер setMemory класса клиента. Аргументами сеттера являются - массив данных, в котором должен быть ключ 'cdekAuth' и ваша функция колл бэк. Ваша функция колл бэк должна принимать массив, передавать его на сохранение в нужное место. Пример реализации для Laravel
Передаваемый вами массив должен иметь вид:
Готовый массив и функцию колл бэк передаем в сеттер:
Все проверки на время действия токэна, который вы передали в массиве, на соответствие его используемой в данный момент среде (тестовой или боевой) проходят "под капотом". Вам не нужно об этом беспокоиться. Например, если вы пользовались тестовой средой и после решили перейти на боевую, SDK автоматически авторизуется заново и сохранит новый токен.
Информация о доступных геттерах и сеттерах SDK
Каждый метод геттер и сеттер соответствует одноименному свойству ответа сервера СДЭК в camel case (Верблюжий регистре). Если свойство сложное, например, Seller, Location, то у него как правило есть объект ответа sdk SellerResponse, Location и т.п. Соответственно обратившись к этому свойству через геттер вы получите объект данного класса. Список c названиями получаемых параметров можно посмотреть здесь
Расчёт стоимости доступных тарифов
Большинство сеттеров сущностей sdk возвращают $this, поэтому вы можете использовать их последовательно, один за другим.
$tariffList это массив TariffListResponse[] со списком тарифов, которые являются объектами класса TariffListResponse. Пример получения данных со всеми доступными методами:
Расчёт стоимости тарифа
Разница с предыдущим методом состоит лишь в том, что объекту тариф нужно задать конкретный код тарифа для расчета. Этот параметр обязателен, без него sdk вернет ошибку.
Ответ объект класса TariffResponse
Список методов для получения ответа сущности класса TariffResponse
Расчет стоимости тарифа + Страховка
Получение списка ПВЗ
Устанавливаем нужные параметры. Отдаем объект в метод клиента. Метод при успешном запросе возвращает объект класса DeliveryPointsResponse, ниже представлен пример со всеми доступными методами.
Список методов для установки сущности класса DeliveryPoints
Поддерживается установка следующих параметров запроса:
Получение списка регионов
Поддерживается установка следующих параметров запроса:
Пример запроса:
Ответом будет массив RegionsResponse[], итерируясь по которому можно запрашивать нужные вам параметры от экземпляра объекта RegionsResponse. Список получаемых параметров можно посмотреть здесь. Для каждого из них, есть геттер, например, чтобы получить kladr_region_code - воспользуйтесь методом ->getKladrRegionCode.
Получение списка городов
Поддерживается установка следующих параметров запроса:
Пример запроса:
Ответом будет массив CitiesResponse[], итерируясь по которому можно запрашивать нужные вам параметры от экземпляра объекта CitiesResponse. Список получаемых параметров можно посмотреть здесь. Для каждого из них, есть геттер, например, чтобы получить kladr_region_code - воспользуйтесь методом ->getKladrRegionCode.
При использовании тестового аккаунта возможны ошибочные ответы\пустые от сервера СДЭК по независящим от SDK причинам. На боевом аккаунте (с вашими паролем и логином такого быть не должно) |
---|
Регистрация заказа
Пример установки заказа, с описанием:
Исправлено в версии 1.2.3, следующие функции принимают mixed для обратной совместимости
Можно передавать как раньше один экземпляр класса Package или Services в этом случае добавитcя единичная упаковка или сервис, можно передавать целым массивом, тогда массив элементов добавиться к существующим.
Важно помнить, что массив должен содержать подготовленные классы Package [Package,Package,...]
или Services [Services,Services,...]
, пример для $packages:
Для добавления сервисов есть более удобная экспресс функция ->addServices(['INSURANCE' => 1000])
в которую передается массив ключ - значение, а функция сама подготовит правильный класс.
Ответом будет сущность класса AntistressStore\CdekSDK2\Entity\Responses\EntityResponse Получить uuid созданного заказа нужно методом:
Информация о заказе по id заказа в ИМ
Информация о заказе по cdek_number (номеру накладной)
Информация о заказе по uuid
Ответом будет сущность класса AntistressStore\CdekSDK2\Entity\Responses\OrderResponse
все необходимые данные можно получить используя методы геттеры этой сущности
Список методов для получения ответа сущности класса OrderResponse
Список методов для установки сущности класса Order
Печать квитанции
Существует два способа получить квитанцию к заказу. Первый. Если (как в примере выше) вы запросили ее вместе с созданием заказа. Используя ->setPrint('waybill'). В этом случае информация о заказе будет содержать свойство related_entities - связанные с заказом сущности.
Это массив, содержаший такие параметры как:
- return_order - возвратный заказ (возвращается для прямого, если заказ не вручен и по нему уже был сформирован возвратный заказ)
- direct_order - прямой заказ (возвращается для возвратного и реверсного заказа)
- waybill - квитанция к заказу (возвращается для заказа, по которому есть сформированная квитанция)
- barcode - ШК места к заказу (возвращается для заказа, по которому есть сформированный ШК места)
- reverse_order - реверсный заказ (возвращается для прямого заказа, если подключен реверс)
- delivery - актуальная договоренность о доставке
Если ни одна из этих сущностей не привязана к заказу (не запрашивалась квитанция, заказ не возвратный и т.д.) массив будет пустой.
Получить данные о связанных с заказом сущностей можно:
Получить данные о самой новой, последней созданной накладной к заказу можно используя удобный экспресс-метод:
Аргументом функции является строка с названием типа сущности (см. выше). Поскольку мы передали 'waybill' getLastRelated метод получает uuid квитанции, который нужно направить в метод getInvoicePdf. Получить pdf файл с квитанцией можно:
Второй способ. Это направить запрос на создание квитанции и получить ее uuid отдельным методом:
ВАЖНО! Файл квитанции не всегда будет готов сразу. Как правило необходимо некоторое время для подготовки квитанции. Если направить запрос на получение квитанции сразу после ее создания вы можете получить ошибку или пустой ответ.
Список методов для установки сущности класса Invoice
Список методов для получения данных сущности класса PrintResponse
Удаление заказа
Заказы удаляются только по наличию ранее полученного uuid
Если все "ок" метод вернет false. Если какие-то сложности - возвратит ошибку.
Отмена заказа
Заказы отменяются только до получения статуса "Вручен" или "Не вручен", и только по наличию ранее полученного uuid
Регистрация договоренностей о доставке
Кроме представленных в примере доступно также: ->setUuid() для установки uuid заказа
Ответом будет сущность класса AntistressStore\CdekSDK2\Entity\Responses\EntityResponse Получить uuid созданной договоренности нужно методом:
Получение информации договоренности о доставке
Список методов для получения данных сущности класса AgreementResponse
Регистрация заявки на вызов курьера
Получение заявки на вызов курьера
Удаление заявки на вызов курьера
Получение информации о переводе наложенного платежа
Получение информации о чеках
Подписка на вебхуки (Webhooks)
'ORDER_STATUS' - событие по статусам 'PRINT_FORM' - готовность печатной формы
Известные проблемы
- При использовании тестового сервера может приходить ошибка определения города получателя или отправителя. В данном случае ошибка возникает из-за отсутствия ПВЗ с кодом на тестовой среде. Данные на тестовой и боевой среде могут отличаться, так как тестовая среда обновляется гораздо реже боевой. В связи с этим для корректного тестирования информацию по населенным пунктам и ПВЗ необходимо запрашивать и использовать в рамках одной среды.
- На тестовом сервере иногда приходят внутренние ошибки Internal Error не связанные с правильностью работы sdk.
- Если запрос на тестовый сервер выполнился с ошибкой, но заказ при этом создался, может произойти ситуация дублирования (неуникальности) uuid или некорректно сформированного заказа, как правило, удалить такой заказ не представляется возможным.
Лицензия
Автор antistress-store/cdek-sdk-v2 Сергей Гусев. Данный проект распространяется под лицензией MIT.