PHPackages                             cvxvp/rpost - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. cvxvp/rpost

ActiveLibrary[API Development](/categories/api)

cvxvp/rpost
===========

SDK для работы с API Почты России (pochta.ru)

0.9.9(5y ago)013MITPHPPHP &gt;=5.5

Since Jan 29Pushed 5y agoCompare

[ Source](https://github.com/cvxvpdev/RussianPost)[ Packagist](https://packagist.org/packages/cvxvp/rpost)[ RSS](/packages/cvxvp-rpost/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (59)Used By (0)

[![](https://camo.githubusercontent.com/2bd0344a1c2349e68ba9c3f328bfca1669315e619485993ce52843ad261b24e9/68747470733a2f2f6c617061792e67726f75702f6c676c6f676f2e6a7067)](https://lapay.group/)[![](https://camo.githubusercontent.com/3efd36279a241744da6be54746cad7184d519514e4b7ed3c774de7fb68d10152/68747470733a2f2f6c617061792e67726f75702f7072666c6f676f2e737667)](https://www.pochta.ru/support/business/api)

[![Latest Stable Version](https://camo.githubusercontent.com/ca0837551aa1598ea3bcfaf6498c164dc4a4e3f003bc7e7e2458e9b4bf1425e1/68747470733a2f2f706f7365722e707567782e6f72672f6c6170617967726f75702f7275737369616e706f73742f762f737461626c65)](https://packagist.org/packages/lapaygroup/russianpost)[![Total Downloads](https://camo.githubusercontent.com/d59d50cf52c060ffad5b238ae3b3b3dd4a3e8bffd855c94e0aa5edc0f81d0e25/68747470733a2f2f706f7365722e707567782e6f72672f6c6170617967726f75702f7275737369616e706f73742f646f776e6c6f616473)](https://packagist.org/packages/lapaygroup/russianpost)[![License](https://camo.githubusercontent.com/a96028ff5ef2f4e35883032cfa525f3bf879696a7b41129f3884eccb45a35181/68747470733a2f2f706f7365722e707567782e6f72672f6c6170617967726f75702f7275737369616e706f73742f6c6963656e7365)](https://packagist.org/packages/lapaygroup/russianpost)[![Telegram Chat](https://camo.githubusercontent.com/6c64eaea27c4997454191c28ef0343772d3dea8171200341c0d8410295eea8f9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f74656c656772616d2d636861742d626c75652e7376673f6c6f676f3d74656c656772616d)](https://t.me/phppochtarusdk)

SDK для интеграции с программным комплексом [Почты России](https://www.pochta.ru/support/business/api).
=======================================================================================================

[](#sdk-для-интеграции-с-программным-комплексом-почты-россии)

Посмотреть все проекты или подарить автору кофе можно [тут](https://lapay.group/opensource).

Содержание
==========

[](#содержание)

- [Changelog](#changelog)
- [Тарификатор Почты России](#tariffs)
- [Конфигурация](#configfile)
- [Отладка](#debugging)
- [Трекинг почтовых отправлений (РПО)](#tracking)
- [Данные](#data)
    - [Нормализация адреса](#clean_address)
    - [Нормализация ФИО](#clean_fio)
    - [Нормализация телефона](#clean_phone)
    - [Расчет стоимости пересылки (Упрощенная версия)](#calc_delivery_tariff)
    - [Расчет стоимости пересылки ЕКОМ](#calc_delivery_tariff_ecom)
    - [Расчет сроков доставки](#calc_delivery_period)
    - [Отображение баланса](#show_balance)
    - [Неблагонадёжный получатель](#untrustworthy_recipient)
- [Заказы](#orders)
    - [Получение списка ПВЗ](#get_pvz_list)
    - [Создание заказов](#create_orders)
    - [Создание заказов (v2)](#create_orders_v2)
    - [Редактирование заказа](#edit_order)
    - [Удаление заказов](#delete_orders)
    - [Поиск заказа](#search_order)
    - [Поиск заказа по идентификатору](#search_order_by_id)
    - [Возврат заказов в "Новые"](#return_order_to_new)
- [Партии](#batch)
    - [Создание партии из N заказов](#create_batch)
    - [Изменение дня отправки в почтовое отделение](#change_batch_sending_day)
    - [Перенос заказов в партию](#move_orders_to_batch)
    - [Поиск партии по наименованию](#find_batch_by_name)
    - [Поиск заказов с ШПИ](#find_orders_by_rpo)
    - [Добавление заказов в партию](#add_orders_in_batch)
    - [Удаление заказов из партии](#delete_orders_in_batch)
    - [Запрос данных о заказах в партии](#get_orders_in_batch)
    - [Поиск всех партий](#get_all_bathes)
    - [Поиск заказа в партии по id](#find_order_by_id_in_batch)
- [Документы](#documents)
    - [Генерация пакета документации](#gendocpackage)
    - [Генерация печатной формы Ф7п](#gendocf7p)
    - [Генерация печатной формы Ф112ЭК](#gendocf112)
    - [Генерация печатных форм для заказа](#gendocorder)
    - [Генерация печатной формы Ф103](#gendocf103)
    - [Подготовка и отправка электронной формы Ф103](#senddocf103)
    - [Генерация акта осмотра содержимого](#gendocact)
    - [Генерация возвратного ярлыка на одной печатной странице](#genreturnlabel)
- [Архив](#archive)
    - [Перевод партии в архив](#archiving_batch)
    - [Возврат партии из архива](#unarchiving_batch)
    - [Запрос данных о партиях в архиве](#get_archived_batch)
- [Поиск ОПС](#ops_search)
    - [По индексу](#ops_search_by_index)
    - [По адресу](#ops_search_by_address)
    - [Почтовые сервисы ОПС](#get_ops_services)
    - [По координатам](#ops_search_by_coord)
    - [Поиск индексов в населенном пункте](#ops_search_in_locality)
    - [Выгрузка из паспорта ОПС](#ops-unloading-passport)
- [Долгосрочное хранение (Не работает в API Почты России!)](#warehouse)
    - [Запрос данных о заказах в архиве](#)
- [Возвраты](#returns)
    - [Создание возвратного отправления для ранее созданного отправления](#return-by-pro)
    - [Создание отдельного возвратного отправления](#return-without-rpo)
    - [Удаление отдельного возвратного отправления](#return-delete)
    - [Редактирование отдельного возвратного отправления](#return-edit)
- [Настройки](#settings)
    - [Текущие точки сдачи](#settings_shipping_points)
    - [Текущие настройки пользователя](#get_settings)

Changelog
=========

[](#changelog)

- 0.9.9 - Исправлена ошибка при переключении клиента в трекинге. За исправление спасибо [Alliance-X](https://github.com/Alliance-X);
- 0.9.8 - Исправлены функции для работы с ОПС. За обнаружение и исправление спасибо [Sergey Voronov](https://github.com/srgvrnv);
- 0.9.7 - Исправлена работы GET методов API. За обнаружение спасибо [GrayWolfy](https://github.com/GrayWolfy);
- 0.9.6 - Добавлена функция создания заказа V2 с возвратом ШК и номеров клиентской ИС, спасибо [GrayWolfy](https://github.com/GrayWolfy) за помощь;
- 0.9.5 - Актуализирован список статусов отправления, изменено поведение пакетного трекинга, подробнее [тут](https://github.com/lapaygroup/RussianPost/releases/tag/0.9.5);
- 0.9.4 - Добавлена поддержка Guzzle 7.1 в зависимостях Composer;
- 0.9.3 - Добавлена поддержка Guzzle 7 в зависимостях Composer;
- 0.9.2 - У заказа у вложений в декларацию добавлено новое поле trademark (Торговая марка), спасибо [PankovAlxndr](https://github.com/PankovAlxndr) за актуализацию;
- 0.9.1 - Актуализация списка статусов отправления, добавлена генерация печатных форм для заказа до формирования партии, подробнее [тут](https://github.com/lapaygroup/RussianPost/releases/tag/0.9.1);
- 0.9.0 - Актуализация списка статусов отправления, легкий возврат, выгрузка из паспорта ОПС, подробнее [тут](https://github.com/lapaygroup/RussianPost/releases/tag/0.9.0);
- 0.8.6 - Исправление ошибки API отправки с desc в ответе вместо sub-code;
- 0.8.5 - Зависимость с Guzzle 6.3+ вместо строгой 6.3;
- 0.8.3 - Доработана поддержка расчета тарифов для посылок EKOM, спасибо [Konstantin Shevsky](https://github.com/Shevsky) за доработку;
- 0.8.2 - Актуализированы параметры запроса и ответа тарификатора, за актуализацию выражаем благодарность [Konstantin Shevsky](https://github.com/Shevsky);
- 0.8.1 - Добавлена функция [получения списка ПВЗ](#get_pvz_list) для ЕКОМ, исправлена ошибка создания http-клиента к API;
- 0.8.0 - Описание можно посмотреть [тут](https://github.com/lapaygroup/RussianPost/releases/tag/0.8.0);
- 0.7.4 - Добавлено сохранение ошибок расчета тарифа в объект CalculateInfo с разделением на сообщение и код ошибки;
- 0.7.3 - Исправлена ошибка при сохранении документов;
- 0.7.2 - Актуализирован список статусов отправлений Почты России;
- 0.7.1 - Доработана генерация RussianPostException, спасибо [toporchillo](https://github.com/toporchillo) за исправление. Добавлена расширенная информация в логировании;
- 0.7.0 - Описание можно посмотреть [тут](https://github.com/lapaygroup/RussianPost/releases/tag/0.7.0);
- 0.6.6 - Исправлено формирование и проверка параметров для запроса на создание заказа;
- 0.6.5 - Реализованы функции работы с архивом;
- 0.6.0 - Долгожданная работа с заказами, подробнее [тут](https://github.com/lapaygroup/RussianPost/releases/tag/0.6.0);
- 0.5.4 - Правки composer.json;
- 0.5.3 - Описание можно посмотреть [тут](https://github.com/lapaygroup/RussianPost/releases/tag/0.5.3);
- 0.5.2 - Исправлена ошибка получения информации о сроках доставки в формате HTML;
- 0.5.1 - Описание можно посмотреть [тут](https://github.com/lapaygroup/RussianPost/releases/tag/0.5.1);
- 0.5.0 - Описание можно посмотреть [тут](https://github.com/lapaygroup/RussianPost/releases/tag/0.5.0);
- 0.4.12 - Скорректировано описание упрощенной версии расчета тарифов, добавлен метод получения списка точек сдачи;
- 0.4.11 - Актуализирован список статусов Почты России;
- 0.4.10 - Актуализирован расчет стоимости пересылки (Упрощенная версия), за актуализацию спасибо [rik43](https://github.com/rik43);
- 0.4.9 - Исправлена ошибка выставления флага isFinal в пакетном трекинге отправлений, за обнаружение спасибо [Dmitry Sobchenko](https://github.com/sharpensteel);
- 0.4.8 - Изменен адрес калькулятора Почты России, старый будет отключен 01.01.2019;
- 0.4.7 - Актуализация списка статусов;
- 0.4.6 - Было принято решение исключить зависимость с [symfony/yaml](https://packagist.org/packages/symfony/yaml) и понизить требуемую версию PHP до 5.5+. Подробнее в разделе [Конфигурация](#configfile);
- 0.4.5 - Актуализация списка статусов, признак конечного статуса в пакетном трекинге;
- 0.4.0 - Единичный и пакетный трекинг отправлений;
- 0.3.0 - Нормализация данных, упрощенный расчет стоимости отправки;
- 0.2.0 - Расчет стоимости отправки тарификатором Почты России.

Установка
=========

[](#установка)

Для установки можно использовать менеджер пакетов Composer

```
composer require lapaygroup/russianpost

```

Тарификатор Почты России
========================

[](#тарификатор-почты-россии)

### Получения списка видов отправления

[](#получения-списка-видов-отправления)

Для получения списка категорий нужно вызвать метод **parseToArray** класса **\\LapayGroup\\RussianPost\\CategoryList**

```

```

В $categoryList мы получим ассоциативный массив из категорий, их подкатегорий и видов почтовых отправлений с возможными опциями и списком параметров, которые нужно передать для расчета тарифа. По этим данным можно легко и быстро построить форму-калькулятор аналогичную [тарификатору Почты России](https://tariff.pochta.ru/).

Если нужно исключить категории из выборки, то перед вызовом **parseToArray** вызываем метод **setCategoryDelete** и передаем ему массий ID категорий, которые нужно исключить.

```

```

### Расчет стоимости отправки

[](#расчет-стоимости-отправки)

**objectId**, список параметров в **$params** и список дополнительных услуг **$service** берутся из массива **$categoryList**.

```

```

**$calcInfo** - это объект класса *LapayGroup\\RussianPost\\CalculateInfo*Доступные методы:

- *getCategoryItemId()* - ID вида отправления
- *getCategoryItemName()* - название вида отправления
- *getWeight()* - вес отправления в граммах
- *getTransportationName()* - способ пересылки
- *getPay()* - итого стоимоть без НДС
- *getPayNds()* - итого стоимоть c НДС
- *getPayMark()* - итого стоимость при оплате марками
- *getGround()* - почтовый сбор без НДС
- *getGroundNds()* - почтовый сбор с НДС
- *getCover()* - страхование без НДС
- *getCoverNds()* - страхование с НДС
- *getService()* - дополнительные услуги без НДС
- *getServiceNds()* - ополнительные услуги с НДС
- *getTariffList()* - массив тарифов из которых складывается итоговая стоимость доставки

Массив тарифов состоит из объектов класса *LapayGroup\\RussianPost\\Tariff*Доступные методы:

- *getId()* - ID тарифа
- *getName()* - название тарифа
- *getValue()* - стоимость без НДС
- *getValueNds()* - стоимость с НДС
- *getValueMark()* - стоимость при оплате марками

***Полученная информация может быть отображена так:***

**Процесс тарификации:**
Способ пересылки: НАЗЕМНО (код РТМ2: 1).
Плата за пересылку письма с объявленной ценностью /230/ : 106.20 с НДС
Плата за объявленную ценность /215/ : 3.54 с НДС
Заказное уведомление о вручении /213/ услуга 2: 56.64 с НДС
СМС-уведомление о вручении /119/ услуга 21: 10.00 с НДС

**Результат:**
Почтовый сбор: 106.20 (с НДС).
Страхование: 3.54 (с НДС).
Дополнительные услуги: 66.64 (с НДС).
Итого сумма без НДС: 149.47.
Итого сумма с НДС 18%: 176.38.

Конфигурация
============

[](#конфигурация)

Для использования сервисов Почты России, не считая [тарификатор](#tariffs), необходимы аутентификационные данные. Их можно хранить в [ассоциативном массиве](config.php.example) или [yaml-файле](config.yaml.example). В примерах ниже я буду использовать yaml-файл, а парсить его с помощью [symfony/yaml](https://packagist.org/packages/symfony/yaml).

Информацию о аутентификационных данных можно получить [здесь](https://otpravka.pochta.ru/specification#/authorization-token) и [здесь](https://otpravka.pochta.ru/specification#/authorization-key).

На запросы к API отправки Почтой России установлены лимиты на количество запросов в сутки. Для их увеличения необходимо написать письмо на почту .

Отладка
=======

[](#отладка)

Для логирования запросов и ответов используется [стандартный PSR-3 логгер](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md). Рассмотрим пример логирования используя [Monolog](https://github.com/Seldaek/monolog).

```
 109440224403210RUSloginpassword  [] []

```

Трекинг почтовых отправлений (РПО)
==================================

[](#трекинг-почтовых-отправлений-рпо)

Реализует функции [API](https://tracking.pochta.ru/specification) Почты России для работы с отправлениями. Для работы данных функций необходим [конфигурационный файл](config.yaml.example) с логином и паролем от сервиса Почты России.

Для работы используется экземпляр класса *LapayGroup\\RussianPost\\Providers\\Tracking*.

**Входные параметры:**

- *$service* - Единочный (single) / Пакетный (pack);
- *$config* - Массив данных для подключения к API;
- *$timeout* - Таймаут HTTP соединения, по умолчанию 60 сек. (Для сервисов Почты России лучше использовать 120 сек.).

### Единичный доступ

[](#единичный-доступ)

Метод **getOperationsByRpo** используется для получения информации о конкретном отправлении. Возвращает подробную информацию по всем операциям, совершенным над отправлением.
**Пример вызова:**

```
