Описание API
На этой странице описаны способы использования функций личного кабинета клиента «ПЭК» сторонними сайтами или приложениями. Информация предназначена для разработчиков. Все возникающие вопросы по работе с API личного кабинета можно направлять по адресу: admin-extintegration@pecom.ru
Аутентификация
- Для начала работы с API вам необходимо присвоить Ключ доступа. Данное действие вы можете осуществить на странице «Регистрационные данные» в разделе «Ключи API». Полученный ключ будет являться вашим паролем для доступа к API.
- Для разных приложений (например, веб-сайт и 1С:Предприятие) рекомендуется использовать разные ключи (для сбора статистики, простоты отзыва ключа в случае его компроментации)
- Аутентификация осуществляется c помощью Basic-аутентификации, в качестве логина необходимо использовать имя пользователя личного кабинета клиента «ПЭК», в качестве пароля — любой из активных ключей доступа.
Авторизация
- Доступ к API обеспечивается для двух групп пользователей (анонимный доступ не поддерживается):
- «Зарегистрированные пользователи» — все пользователи личного кабинета клиента «ПЭК» (для регистрации посетите соответствующую страницу)
- «Сторонние неперсонифицированные приложения»
- В документации на каждый метод указано, каким группам пользователей доступен вызов того или иного метода
План по критическим и рекомендуемым изменениям протокола API
В разделе описываются ожидаемые изменения, двух категорий:
- Критические - изменится формат взаимодействия таким образом, что некоторые или все из ранее работающих запросов изменят свое поведение или перестанут работать до внесения изменений на стороне клиента
- Рекомендуемые - из протокола исключены/заменены некоторые реквизиты, и мы рекомендуем перейти на обновленный формат
За всеми подробностями обращайтесь по адресу: admin-extintegration@pecom.ru
Ожидается
В этом списке запросы появляются минимум за неделю до релиза
История изменений
- 29.12.2025
-
- С 01.01.2026 г. будет добавлена возможность указать по API ставку НДС 22% при подаче заявок с Наложенным платежом. В связи с изменениями в законодательстве, ставка НДС в чеке на момент оплаты будет указана в соответствии с действующей в законодательстве. Т.е. товары, переданные по техническим причинам со ставкой НДС 20%, будут оформляться по ставке НДС 22%.
- 15.12.2025
-
- В методе подачи заявок
/preregistration/submit/реализована проверка переданной даты авизацииavisationDateTimeс учётом ориентировочного срока прибытия груза. Возможность доставки в конкретный день и наличие льготного тарифа проверяйте методом/calculator/checkdeliverydate/.
- В методе подачи заявок
- 01.12.2025
-
- Добавлен метод
/cargos/currentstatus/— запрос текущего статуса грузов с детализацией
- Добавлен метод
- 26.08.2025
-
- Реализована возможность получения печатных форм счетов на оплату. В структуру запроса методов
/cargosdocuments/order/и/cargosdocuments/getcontent/добавлены параметры"counterpartGuid"и"docFormat". - Добавлен метод
/cargosdocuments/cargoinvoicebyperiod/— получение идентификаторов грузов за период, по которым есть задолженность по запрашиваемому плательщику
- Реализована возможность получения печатных форм счетов на оплату. В структуру запроса методов
- 20.08.2025
-
- Реализована возможность подачи заявки методом
/preregistration/submit/с услугой забора (orderType=3) по тарифу "Express Автоперевозка" (type=5) - Добавлен метод
/branches/departmentslimit/— проверка ограничений весо-габаритных характеристик груза для тарифа/ продукта «Express Автоперевозка»
- Реализована возможность подачи заявки методом
- 30.06.2025
-
- В структуру запроса метода
/preregistration/submit/добавлена возможность передачи номера карты клиента"common"."counterpartClientCard" - В структуру запроса метода
/calculator/calculateprice/добавлена возможность указать карту клиента для расчета с учетом спецусловий"counterpart"."counterpartClientCard"
- В структуру запроса метода
- 31.05.2025
-
- Реализована возможность подавать заявки по API с продуктом/тарифом "Доставка в торговые сети Автоперевозка (паллеты)" (7). Для работы с этим продуктом требуется заключение дополнительного соглашения.
- 01.05.2025
-
- Добавлена возможность указать ставки НДС 5% и НДС 7% при подаче заявок с Наложенным платежом.
- 16.04.2025
-
- В методе подачи заявок
/preregistration/submit/добавлена возможность указать требования к транспорту и спец.оборудование при заборе груза, параметрыisSpecialEquipment, isOpenCar, isSideLoad, isUncovered - В методе подачи заявок
/preregistration/submit/добавлена возможность указания адреса забора документов на получение груза по другому адресу, параметрaddressForDocumentsи комментарий к адресу забора документов, параметрaddressForDocumentsComment
- В методе подачи заявок
- 06.02.2025
-
- Добавлен метод
/cargos/statustables/— список доступных статусов по грузам. Метод /cargos/statustable/ выведен из актуального протокола
- Добавлен метод
- 01.10.2024
-
- В методах подачи заявок актуализированы типы документов, удостоверяющих личность (sender.identityCard.type и receiver.identityCard.type). Возможные значения: 1 - Паспорт (прочие страны), 2 - Разрешение на временное проживание, 3 - Водительское удостоверение, 4 - Вид на жительство, 6 - Удостоверение беженца, 10 - Паспорт гражданина РФ". В актуальной версии протокола не используются типы: 5, 7, 8, 9, 11 и 12
- 01.10.2024
-
- Реализована подача сетевых заявок на забор груза методом
/preregistration/submit/значение параметра orderType = 14. - Метод подачи сетевых заявок
/cargopickupnetwork/submit/выведен из актуального протокола API. Ранее осуществленные интеграции с данным методом поддерживаются в рабочем состоянии. Планов прекращать работу метода нет. При этом новых функций и любых доработок в методе/cargopickupnetwork/submit/не будет.
- Реализована подача сетевых заявок на забор груза методом
- 19.08.2024
-
- В структуру ответа метода
/cargos/deliverystatus/добавлены реквизитыdeliveryAddress, isLoading, deliveryHypermarket - В структуру ответа методов
/cargos/status/и/cargos/statusbypositionbarcodes/добавлены реквизитыtype, maxSize
- В структуру ответа метода
- 07.08.2024
-
- Метод получения справочника типов штрих-кодов /cargopickupnetwork/availabletypebarcode/ перенесен в группу
/preregistration/availabletypebarcode/
- Метод получения справочника типов штрих-кодов /cargopickupnetwork/availabletypebarcode/ перенесен в группу
- 05.08.2024
-
- Исправлена ошибка при выводе грузов методом
/cargos/listallorderbylogin/со значением входного параметра: selectBy = 0 (отобрать принятые грузы). До релиза выводились и принятые и не принятые грузы, для не принятых грузов отбирались по дате заявки. После релиза: в выборку будут попадать только принятые на склад ПЭК грузы, отобранные по дате приемки на склад ПЭК.
- Исправлена ошибка при выводе грузов методом
- 10.07.2024
-
- В структуру запроса метода
/preregistration/submit/добавлена возможность передачи электронной почты отправителя (добавлен реквизит: "sender"/ "email").
- В структуру запроса метода
- 01.07.2024
-
- В структуру ответа метода
/branches/findzonebyaddress/добавлен реквизит "precision" - критерий точности распознавания координат адреса. - Добавлен метод
/branches/countrytypeidentitydocument/— возвращает допустимые документы, удостоверяющие личность, для страны отправления / получения - В структуры
sender, receiverзапроса метода/preregistration/submit/добавлен реквизитindividual— данные физического лица. Рекомендуем его передавать для контрагентов отправителей/получателей - физических лиц вместо title. -
В структуры
sender.identityCard, receiver.identityCardзапроса метода/preregistration/submit/добавлен реквизитtypeGuid— идентификатор типа документа удостоверяющего личность.
sender.identityCard.typeиreceiver.identityCard.typeв актуальной версии протокола не используются. - В структуры
sender.identityCard, receiver.identityCardзапроса метода/preregistration/submit/добавлен реквизитtaxpayerID— налоговый номер отправителя ПИН (Киргизстан), ИИН (Казахстан), УПН (Беларусь) и т.п. - В структуры
sender.identityCard, receiver.identityCardзапроса метода/preregistration/submit/добавлен реквизитtaxpayerCountryCode— код страны, выдавшей налоговый номер
- В структуру ответа метода
- 30.06.2024
-
-
Критическое. При подаче заявок методом
/PREREGISTRATION/SUBMIT/добавили проверку на сравнение общих Веса и Объёма груза, переданных в массиве"cargos", с суммарными Весом и Объёмом, рассчитанными в массиве грузомест"cargoPlaceList". Должны совпадать. Обратите внимание, что массив с данными грузомест не обязателен к передаче. Если передан массив с габаритами каждого грузоместа ("cargos"."cargoPlaceList"), то сначала вычисляем суммарный вес и суммарный объём (объём одного грузоместа вычисляем: длина*ширина*высота) по всем элементам массива"cargoPlaceList", затем округляем (всегда вверх до сотых!) и сравниваем с общими объёмом и весом в массиве"cargos"(округленными также вверх до сотых!)
-
Критическое. При подаче заявок методом
- 14.05.2024
-
-
Рекомендуемое. В API разработан новый метод
/cargos/statusfullhistory/- История изменения статусов по заявке/ грузу.
Не рекомендуем использовать старый метод/statushistory/
-
Рекомендуемое. В API разработан новый метод
- 08.05.2024
-
- В структуру запроса метода
/preregistration/submit/добавлена возможность передачи комментария к забору и интервала забора груза (добавлен блок "pickUpDetails")
- В структуру запроса метода
- 14.03.2024
-
- Добавлен метод
/cargosdocuments/order/— запрос на предоставление документа по грузу - Добавлен метод
/cargosdocuments/getcontent/— получение документа по грузу
- Добавлен метод
- 12.03.2024
-
- Из структуры запроса методов
/preregistration/submit/,/cargopickup/submit/,/cargopickupnetwork/submit/был удален реквизит isDayByDay.
- Из структуры запроса методов
- 11.03.2024
-
- В структуру запроса метода
/preregistration/submit/добавлена возможность передачи электронной почты отправителя и получателя (добавлены реквизиты: "sender"/"email" и "reciever"/"email").
- В структуру запроса метода
- 12.02.2024
-
- В структуру ответа метода
/branches/nearestdepartments/добавлен реквизит "branchId" - ID филиала, к которому относится отделение (организационная привязка).
- В структуру ответа метода
- 07.02.2024
-
- Добавлен метод для быстрой проверки возможности оказания услуг Наложенный платеж и Выдача по СМС (упрощенная выдача) в зависимости от географии перевозки:
/branches/checknocalcservices/. На данный момент оба сервиса доступны только при перевозке РФ-РФ, однако в этом или следующем году география их предоставления может расшириться.
- Добавлен метод для быстрой проверки возможности оказания услуг Наложенный платеж и Выдача по СМС (упрощенная выдача) в зависимости от географии перевозки:
- 05.02.2024
-
- В структуру ответа метода
/cargos/statustable/добавлен реквизит isFinal - признак конечного статуса
- В структуру ответа метода
- 31.01.2024
-
-
Рекомендуемое. В API используется единый идентификатор продукта/тарифа в запросах и ответах всех методов, где это актуально. Полный список доступных в API продуктов/тарифов можно получить методом
/typesOfDelivery/all/
Сохраняется обратная совместимость с текущим протоколом каждого метода.
Рекомендуем Вам доработать подачу запроса в методах:/calculator/calculateprice/,/branches/nearestdepartments/и/cargopickupnetwork/submit/
-
Рекомендуемое. В API используется единый идентификатор продукта/тарифа в запросах и ответах всех методов, где это актуально. Полный список доступных в API продуктов/тарифов можно получить методом
- 30.01.2024
-
- Добавлен метод
/typesOfDelivery/all/. Перечень актуальных продуктов/тарифов перевозки, которые поддерживаются в API - В структуру запроса метода
/calculator/calculateprice/добавлен реквизитtypes- Массив идентификаторов продуктов/тарифов ПЭК для расчета. - В структуру ответа метода
/calculator/calculateprice/добавлен реквизитtype- Продукт/тариф, для которого выведена стоимость. - В структуру запроса методов
/branches/nearestDepartments/и/cargopickupnetwork/submit/добавлен реквизитtype- Идентификатор продукта/тарифа ПЭК. - Из структуры запроса методов
/calculator/calculateprice/и/branches/nearestDepartments/был удалён реквизитtransportingTypes.
- Добавлен метод
- 26.01.2024
-
- Исправлена ошибка вывода координат. Вернули старый формат ответа метода
/branches/all/
- Исправлена ошибка вывода координат. Вернули старый формат ответа метода
Структура URL
- API представляет собой набор методов, объединённых в группы
- Обращение к методам API осуществляется путём отправки запроса методом POST на URL метода, который формируется следующим образом:
https://kabinet.pecom.ru/api/v1/<группа>/<метод>/ - URL
https://kabinet.pecom.ru/api/v1/является базовым и далее в документации не указывается - Общее ограничение на количество любых запросов по API: 100 запросов в минуту. После превышения числа запросов API будет возвращать ошибку.
Список групп и методов
-
/auth/— данные личного кабинета и дополнительная авторизация/profiledata/— отображение информации, хранящейся в профиле пользователя/createtokentoaccessprivatedata/— создание токена для методов получения приватной информации
-
/branches/— информация о странах, филиалах и городах/all/— список всех филиалов и городов/findzonebycoordinates/— поиск тарифных зон и филиалов по координатам/findzonebyaddress/— поиск тарифных зон и филиалов по строке адреса/checkpickupdate/— определение доступности дат забора груза/nearestdepartments/— подбор ближайших к адресу отделений для приема/выдачи грузов/suggestaddressofintakeordelivery/— запрос поисковых подсказок адресов забора/доставки груза/country/— список стран, в которых присутствуют отделения ПЭК/checknocalcservices/— проверка возможности предоставления услуг, не проверяемых в методе расчета стоимости/countrytypeidentitydocument/— возвращает допустимые документы, удостоверяющие личность, для страны отправления / получения/departmentslimit/— ограничения весо-габаритных характеристик груза для тарифа/ продукта «Express Автоперевозка».
-
/cargos/— операции с грузами/status/— статус груза/currentstatus/— запрос текущего статуса грузов с детализацией/statusbypositionbarcodes/— статус груза по клиентским штрих-кодам/basicstatus/— базовая информация о статусе груза/deliverystatus/— предоставляет данные по доставке груза/details/— детальная информация о грузе, фотографии/listallorderbylogin/— возвращает все грузы контрагентов, к которым есть доступ в личном кабинете/statusfullhistory/— история изменения статусов по заявке/ грузу/statustables/— список доступных статусов по грузам/routesanddriverinfo/— выводит персональные данные водителей, осуществляющих забор/доставку груза/getinfoforcedstorage/— информация по рассчитанному ВХ./cancelandreturncargo/— оформление возврата груза отправителю после передачи груза в ПЭК
-
/order/— операции со всеми видами заявок/cancellation/— аннулирование ранее созданных заявок на основании кодов грузов/print/— получения печатных форм заявок и этикеток в формате PDF
-
/cargopickup/— заказ "на машину" к заказам "на перевозку"/submit/— подача заказа "На машину и перевозку (разовый забор)" или "На перевозку (с отдельным Заказом на машину)"/submit/— подача заказа "на машину" к заказам "на перевозку"/status/— получение статуса услуги "Забор груза"/checkOrderedPickupType3Car/— получение статуса услуги "Заказа на машину", поданного в рамках услуги "Упрощенный забор"
-
/preregistration/— заявки на перевозку (авто, авиа) с забором груза от адреса отправителя и предварительное оформление/submit/— единый метод подачи заявок/availabletypebarcode/— справочник типов штрих-кодов
-
/accountingdocuments/— бухгалтерские документы/list/— получение списка
-
/cargosdocuments/— предоставление экспедиторских документов по грузам/order/— запрос на предоставление документа по грузу/getcontent/— получение документа по грузу/cargoinvoicebyperiod/— получение идентификаторов грузов за период, по которым есть задолженность по запрашиваемому плательщику
-
/notification/— уведомления/cargosubscribe/— подписка на уведомления по грузу
-
/counterparts/— справочники для работы с контрагентами / данные контрагентов/legalformtypes/— общий список форм собственности контрагентов (юридических лиц, индивидуальных предпринимателей и т.п.)/confirmedaccesstocounterparties/— список контрагентов, которые подтвердили свою связь с логином/connecteddiscountsservicesagreements/— список подключенных контрагенту скидок, сервисов и основных доп.соглашений
-
/receivers/— список получателей -
/calculator/— калькуляторы стоимости услуг/calculateprice/— расчет стоимости и сроков перевозки/checkdeliverydate/— возвращает ближайшие даты и интервалы времени на забор / доставку груза от даты запроса
-
/typesOfDelivery/— продукты и тарифы перевозки/all/— перечень актуальных продуктов/тарифов перевозки, которые поддерживаются в API
-
/cargocontent/— справочник наименований груза/all/— список наименований груза
-
/currency/— валюты/all/— получение списка валют для расчёта перевозок
-
/clientpackingkind/— справочник упаковок клиента/all/— список упаковок клиента
Техническая поддержка
Поддержка оказывается с помощью обращений пользователей личного кабинета клиента «ПЭК» (требуется авторизация).
Используемый протокол
Общее описание
- Запрос должен осуществляться по протоколу HTTPS с обязательной проверкой сертификата сервера клиентом. Для проверки можно использовать файл сертификатов из комплекта PHP SDK.
- Формат передачи входящих и исходящих данных — JSON, кодировка — UTF-8
- Входящие параметры должны передаваться прямо в теле POST запроса в виде строки в формате JSON
- При осуществлении запросов необходимо устанавливать следующие HTTP-заголовки:
Content-Type: application/json;charset=utf-8 Accept: application/json
- Поддерживается gzip-сжатие ответов API (к сожалению, стандарт для сжатия содержимого HTTP-запросов не утверждён). Использование компрессии уменьшает объем ответов в несколько раз.
Для включения сжатия необходимо устанавливать следующий HTTP-заголовок:
Accept-Encoding: gzip
- Все поля JSON-объекта в запросе являются обязательными, если не указано обратное
Типы данных JSON-объектов
Используются стандартные типы данных JSON и следующие типы:
- Для передачи двоичных данных используется кодирование в Base64 и помещение результата в строку. Этот тип данных обозначается в документации следующим образом:
[Binary]
- Для указания филиала или города, относящегося к филиалу используется тип, обозначенный в документации следующим образом:
[City]
Для филиала указывается его наименование в виде строки:{ demoCity: "Курск" }Для городов, относящихся к филиалам, значение указывается в формате:<Наименование города>, <Наименование филиала>, например:{ demoCity: "Пристань, Курск" }Регистр указания наименований городов может быть любым. Список филиалов и городов доступен в результате вызова метода/branches/all/.
- Значения даты и даты + времени передаются как строки в формате ISO 8601 в следующих определённых стандартом форматах:
Дата:{ demoDateField: "2011-03-10" }Поля этого типа в описании методов помечаются следующим образом:[Date]
Дата и время:{ demoDateField: "2011-03-10T09:24:24" }Используется московское время (MSK), если не указано обратное.
Поля этого типа в описании методов помечаются следующим образом:[DateTime]
- Значения времени в пределах суток передаются как строки в формате ISO 8601 в следующих определённых стандартом форматах:
Время:{ demoTimeField: "18:15" }Время с секундами:{ demoTimeFieldWithSeconds: "18:15:12" }Используется московское время (MSK), если не указано обратное.
Поля этого типа в описании методов помечаются следующим образом:[Time]
Обработка ошибок
- В случае, если указан неверный URL метода, возвращается страница ошибки с
кодом состояния
404. Содержимое страницы можно игнорировать, проверяя наличие ошибки только по коду - В случае возникновения ошибки нарушения прав доступа к методу, возвращается страница с кодом состояния
403. Содержимое страницы также можно игнорировать. - Если возникает логическая ошибка (не указаны необходимые параметры, неверный формат входных данных и т.п.) возвращается ответ с кодом
200и описанием ошибки в формате JSON:{ "error": { "title": "Соообщение об ошибке", "message": "Детальное описание ошибки" } }В зависимости от типа ошибки могут быть добавлены дополнительные поля, но поля, указанные в примере выше возвращаются всегда. - При возникновении непредусмотренной ошибки, код состояния устанавливается равным
500, а в теле ответа выводится сообщение об ошибке в формате описанном выше.
Примеры использования API
Необходимые компоненты
Использование API возможно для большинства платформ и языков программирования и не требуется наличие каких-либо специфических библиотек на клиентской стороне. Необходимые программные компоненты:
- Компонент (библиотека) для приёма и отправки HTTP-запросов с поддержкой протокола HTTPS и Basic-аутентификации (необходимо)
- Компонент (библиотека) для сериализации\десериализации данных из\в формат JSON (опционально)
- Компонент (библиотека) для кодирования\декодирования Base64 (опционально, необходимо только для работы с бинарными данными)
Использование утилит командной строки
В простейшем случае нет необходимости в программировании, достаточно использовать утилиты командной строки. В данном примере используется Windows-версия cURL с поддержкой SSL (HTTPS):curl.exe ^ --verbose ^ --cacert cacert-kabinet_pecom_ru.pem ^ --basic ^ --user user:FA21831AB83DB72D3261FA80BA309DBF6B2D7ADC ^ --request POST -d @curl-input.txt ^ --header "Content-Type: application/json; charset=utf-8" ^ --compressed ^ --output curl-output.txt ^ https://kabinet.pecom.ru/api/v1/cargos/status/
Символ ^ используется для объединения строк. Файл cacert-kabinet_pecom_ru.pem содержит сертификаты и доступен в комплекте PHP SDK.
Содержимое запроса берётся из файла curl-input.txt (кодировка UTF-8), описание формата параметров доступно на соответствующей странице:
{
"cargoCodes": [
"780339690775",
"999932277461",
"772193116238"
]
}
Результат будет записан в файл curl-output.txt.
Обработка для 1С:Предприятия 8.1-8.3 (обычные формы)
В архиве, доступном для скачивания представлена внешняя обработка, позволяющая:
- получить статус одного или нескольких грузов
- оформить заявку на забор груза
- оформить заявку на предварительное оформление
В форме обработки необходимо указать логин личного кабинета, ключ и параметры для запроса.
Скачать версию для платформы 8.1-8.3 (обычные формы) (.zip, 170Кб)
Скачать инструкцию по работе с внешней обработкой
Также вы можете воспользоваться готовым модулем для 1С
Полезная информация на случай возникновения ошибки сертификата
Минимальный пример для .NET
В результате выполнения кода, приведённого ниже, будет осуществлён запрос статусов грузов и выведен результат в виде строки. Пример представляет собой консольное приложение на C#, целевая версия платформы — .NET Framework 3.5 и выше.
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Web.Script.Serialization;
namespace PecomApiDemo
{
class Program
{
static void Main(string[] args)
{
var login = "user";
var key = "11111111111111111122222222222222";
/*
* Создание объекта запроса
*/
var httpRequest = (HttpWebRequest)WebRequest.Create("https://kabinet.pecom.ru/api/v1/cargos/status/");
/*
* Настройка параметров запроса
*/
// Кодировка и тип содержимого
httpRequest.ContentType = "application/json; charset=utf-8";
// Тип запроса
httpRequest.Method = WebRequestMethods.Http.Post;
// Включение поддержки сжатия
httpRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
/*
* У реализации BASIC-авторизации в .NET есть особенности:
* http://blog.cracca.com/2008/02/welcome.html
* http://devproj20.blogspot.com/2008/02/assigning-basic-authorization-http.html
* Из-за этого необходимо указать заголовок вручную
*/
byte[] credentialBuffer = new UTF8Encoding().GetBytes(login + ":" + key);
httpRequest.Headers["Authorization"] = "Basic " + Convert.ToBase64String(credentialBuffer);
try
{
/*
* Подготовка содержимого запроса
*/
using (var sw = new StreamWriter(httpRequest.GetRequestStream()))
{
/*
* Для сериализации/десериализации из/в JSON удобно использовать Json.NET
* http://james.newtonking.com/projects/json-net.aspx (или в виде NuGet-пакета)
* Эта библиотека поддерживает преобразование дат в ISO 8601
* Стандартные классы JavaScriptSerializer и DataContractSerializer
* эту возможность не поддерживают
*/
var serializer = new JavaScriptSerializer();
var jsonData = new
{
cargoCodes = new string[] {
"780339690775",
"999932277461",
"772193116238"
}
};
string json = serializer.Serialize(jsonData);
sw.Write(json);
}
/*
* Выполнение запроса
*/
var httpResponse = (HttpWebResponse)httpRequest.GetResponse();
/*
* Получение результата запроса
*/
using (var sr = new StreamReader(httpResponse.GetResponseStream()))
{
var responseText = sr.ReadToEnd();
Console.WriteLine(responseText);
}
}
catch (WebException ex)
{
using (StreamReader sr = new StreamReader(ex.Response.GetResponseStream()))
{
var responseText = sr.ReadToEnd();
Console.WriteLine(responseText);
}
}
}
}
}
Минимальный пример на PHP
В результате выполнения кода, приведённого ниже, будет осуществлён запрос статусов грузов и выведен результат в виде десериализированного PHP-объекта. Важно отметить, что в примере осуществляется проверка сертификата сервера с помощью файла сертификатов из комплекта PHP SDK
Внимание:
Пример кода приведён для иллюстрации, в случае использования PHP для доступа к API, рекомендуется использовать PHP SDK
/*
Минимальный пример работы с API Личного кабинета клиента «ПЭК» для PHP
Требования:
- PHP 5.2 и выше
- Необходимые PHP-расширения:
- curl (http://php.net/manual/ru/book.curl.php)
- json (http://php.net/manual/ru/book.json.php)
*/
// Инициализация HTTP-клиента
$ch = curl_init();
// Настройки HTTP-клиента
curl_setopt_array($ch, array(
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_POST => TRUE,
CURLOPT_SSL_VERIFYPEER => TRUE,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_CAINFO => dirname(__FILE__) . '/cacert-kabinet_pecom_ru.pem',
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_ENCODING => 'gzip',
CURLOPT_USERPWD => 'user:FA218354B83DB72D3261FA80BA309D5454ADC',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json; charset=utf-8'
)
));
// Данные для запроса
$request_data = array(
'cargoCodes' => array(
'780339690775',
'999932277461',
'772193116238'
));
// Параметры конкретного запроса к API
curl_setopt_array($ch, array(
CURLOPT_URL => 'https://kabinet.pecom.ru/api/v1/cargos/status/',
CURLOPT_POSTFIELDS => json_encode($request_data),
));
// Выполнение запроса
$result = curl_exec($ch);
// Проверка на наличие ошибки
if (curl_errno($ch))
{
// Вывод сообщения об ошибке
echo 'Ошибка: ' . curl_error($ch);
}
else
{
// Вывод результата в виде строки
var_dump($result);
// Вывод результатов в виде объекта
$result_json = json_decode($result);
var_dump($result_json);
}
// Освобождение ресурсов
curl_close($ch);
PHP SDK
PHP SDK представляет собой класс, созданный чтобы упростить осуществление запросов к API из PHP-приложений и сайтов.
Состав архива:
cacert-kabinet_pecom_ru.pem— файл сертификатовexample.php— пример использованияpecom_kabinet.php— файл класса, реализующего SDKREADME— описание, история изменений
Скачать версию 1.2 от 10.07.2012 (.zip, 135Кб)
Скачать файл PEM (цепочка сертификатов) (.zip, 6Кб)
Пример использования
// Подключение файла с классом
require_once('pecom_kabinet.php');
// Создание экземпляра класса
$sdk = new PecomKabinet('user', 'FA218354B83DB72D3261FA80BA309D5454ADC');
// Вызов метода
$result = $sdk->call('cargos', 'status',
array('cargoCodes' => array(
'780339690775',
'999932277461',
'772193116238'
)
));
// Вывод результата
var_dump($result);
// Освобождение ресурсов
$sdk->close();
Подключение через proxy-сервер
// Подключение файла с классом
require_once('pecom_kabinet.php');
// Создание экземпляра класса
$sdk = new PecomKabinet('user', 'FA218354B83DB72D3261FA80BA309D5454ADC', array(
// Параметры proxy-серерва
CURLOPT_PROXY => '127.0.0.1',
CURLOPT_PROXYPORT => 8888,
CURLOPT_PROXYTYPE => 'HTTP'
));
// Вызов метода
$result = $sdk->call('cargos', 'status',
array('cargoCodes' => array(
'780339690775',
'999932277461',
'772193116238'
)
));
// Вывод результата
var_dump($result);
// Освобождение ресурсов
$sdk->close();
