PHPackages                             a-posokhov/russianpost-sdk - 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. a-posokhov/russianpost-sdk

ActiveLibrary[API Development](/categories/api)

a-posokhov/russianpost-sdk
==========================

Russian Post (pochta.ru) SDK

01.8k

Since May 7Compare

[ Source](https://github.com/a-posokhov/russianpost-sdk)[ Packagist](https://packagist.org/packages/a-posokhov/russianpost-sdk)[ RSS](/packages/a-posokhov-russianpost-sdk/feed)WikiDiscussions Synced 2d ago

READMEChangelogDependenciesVersions (1)Used By (0)

SDK для [бизнес-сервисов](https://www.pochta.ru/support/business/api) Почты России
==================================================================================

[](#sdk-для-бизнес-сервисов-почты-россии)

[![Latest Version on Packagist](https://camo.githubusercontent.com/73a4ca8c9c691bb92728c2394687defaa14983e2d6ca414694a9310e9020b7a0/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f61707077696c696f2f7275737369616e706f73742d73646b2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/appwilio/russianpost-sdk)[![Build Status](https://camo.githubusercontent.com/85cfaa3d045ecd4e8964b173352cd8d30cefa8e77199ddd096358c94e668fa0b/68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f61707077696c696f2f7275737369616e706f73742d73646b2f6d61737465722e7376673f7374796c653d666c61742d737175617265)](https://travis-ci.org/appwilio/russianpost-sdk)[![StyleCI](https://camo.githubusercontent.com/2f1d4471026fd528a565b712393cea4cc2345f3899afb86d8fab288dd3650bcb/68747470733a2f2f7374796c6563692e696f2f7265706f732f3130313438353935342f736869656c64)](https://styleci.io/repos/101485954)[![Quality Score](https://camo.githubusercontent.com/4cc304e4969c0e876d359a8d39d164cea9aab33282387d56c9878bb48f3aba52/68747470733a2f2f696d672e736869656c64732e696f2f7363727574696e697a65722f672f61707077696c696f2f7275737369616e706f73742d73646b2e7376673f7374796c653d666c61742d737175617265)](https://scrutinizer-ci.com/g/appwilio/russianpost-sdk)[![Code Coverage](https://camo.githubusercontent.com/30175a03f68f4884ea339374ebca1627bb57d330f51acbe9df850132c1cd37e2/68747470733a2f2f696d672e736869656c64732e696f2f7363727574696e697a65722f636f7665726167652f672f61707077696c696f2f7275737369616e706f73742d73646b2f6d61737465722e7376673f7374796c653d666c61742d737175617265)](https://scrutinizer-ci.com/g/appwilio/russianpost-sdk/?branch=master)[![Total Downloads](https://camo.githubusercontent.com/9007072bb5927a0c66741070c0640ba48b041c4bf0e8a12d42bf793ba3ed8eb1/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f61707077696c696f2f7275737369616e706f73742d73646b2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/appwilio/russianpost-sdk)[![Software License](https://camo.githubusercontent.com/55c0218c8f8009f06ad4ddae837ddd05301481fcf0dff8e0ed9dadda8780713e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](LICENSE.md)

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

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

- [Установка](#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0)
- [Трекинг](#%D1%82%D1%80%D0%B5%D0%BA%D0%B8%D0%BD%D0%B3)
    - [Единичный доступ](#%D0%B5%D0%B4%D0%B8%D0%BD%D0%B8%D1%87%D0%BD%D1%8B%D0%B9-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF)
        - информация о наложенном платеже
    - [Пакетный доступ](#%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BD%D1%8B%D0%B9-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF)
- [Отправка](#%D0%BE%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0)
    - [Расчёт стоимости пересылки](#%D1%80%D0%B0%D1%81%D1%87%D1%91%D1%82-%D1%81%D1%82%D0%BE%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8-%D0%BF%D0%B5%D1%80%D0%B5%D1%81%D1%8B%D0%BB%D0%BA%D0%B8)
    - Получение баланса
    - Нормализация и валидация данных
        - [ФИО](#%D0%BD%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%A4%D0%98%D0%9E)
        - [Адреса](#%D0%BD%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%BE%D0%B2)
        - [Телефоны](#%D0%BD%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D1%82%D0%B5%D0%BB%D0%B5%D1%84%D0%BE%D0%BD%D0%BE%D0%B2)
        - [Проверка благонадёжности получателя](#%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0-%D0%B1%D0%BB%D0%B0%D0%B3%D0%BE%D0%BD%D0%B0%D0%B4%D1%91%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B0%D1%82%D0%B5%D0%BB%D1%8F)
    - [Документы](#%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D1%8B)
        - [Форма Ф7п для заказа](#%D1%84%D0%BE%D1%80%D0%BC%D0%B0-%D0%A47%D0%BF-%D0%B4%D0%BB%D1%8F-%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0)
        - [Форма Ф112ЭК для заказа](#%D1%84%D0%BE%D1%80%D0%BC%D0%B0-%D0%A4112%D0%AD%D0%9A-%D0%B4%D0%BB%D1%8F-%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0)
        - [Пакет документов для заказа (до формирования партии)](#%D0%BF%D0%B0%D0%BA%D0%B5%D1%82-%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2-%D0%B4%D0%BB%D1%8F-%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0-(%D0%B4%D0%BE-%D1%84%D0%BE%D1%80%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-%D0%BF%D0%B0%D1%80%D1%82%D0%B8%D0%B8))
        - [Пакет документов для заказа (после формирования партии)](#%D0%BF%D0%B0%D0%BA%D0%B5%D1%82-%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2-%D0%B4%D0%BB%D1%8F-%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0-(%D0%BF%D0%BE%D1%81%D0%BB%D0%B5-%D1%84%D0%BE%D1%80%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-%D0%BF%D0%B0%D1%80%D1%82%D0%B8%D0%B8))
        - [Пакет документов для партии](#%D0%BF%D0%B0%D0%BA%D0%B5%D1%82-%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2-%D0%B4%D0%BB%D1%8F-%D0%BF%D0%B0%D1%80%D1%82%D0%B8%D0%B8)
        - [Акт осмотра содержимого партии](#%D0%B0%D0%BA%D1%82-%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80%D0%B0-%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D0%BC%D0%BE%D0%B3%D0%BE-%D0%BF%D0%B0%D1%80%D1%82%D0%B8%D0%B8)
        - [Форма Ф103 для партии](#%D1%84%D0%BE%D1%80%D0%BC%D0%B0-%D0%A4103-%D0%B4%D0%BB%D1%8F-%D0%BF%D0%B0%D1%80%D1%82%D0%B8%D0%B8)
        - Подготовка и отправка электронной формы Ф103 для партии
    - Настройки пользователя
    - Заказы
        - Создание
        - Поиск по идентификатору магазина
        - Поиск по идентификатору Почты России
        - Редактирование
        - Удаление
        - Возврат в «Новые»
    - Партии
        - Создание партии заказов
        - Изменение дня отправки партии в ОПС
        - Перенос заказов в партию
        - Добавление заказов в партию
        - Удаление заказов из партии
        - Запрос данных о заказах в партии
        - Поиск партии по наименованию
        - Поиск всех партий
        - Поиск заказов по ШПИ
        - Поиск заказа по идентификатору Почты России
    - Архив
        - Запрос данных о партиях
        - Перевод партии в архив
        - Возврат партии из архива
    - Поиск ОПС
        - По индексу
        - По адресу
        - По координатам
        - Поиск индексов в населённом пункте
        - Почтовые сервисы ОПС
        - Почтовые сервисы ОПС по идентификатору группы сервисов
    - Долгосрочное хранение
        - Запрос данных о заказах

> Работа с API пакетного трекинга и API отправки возможна только при наличии договора с Почтой России.
>
> Работа с API единичного трекинга возможна как с договором, так и после простой [регистрации](https://tracking.pochta.ru) (но с лимитом — 100 запросов в сутки).

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

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

> Минимальные требования — PHP 7.1+, ext-soap, ext-json.

Для установки используйте менеджер пакетов [Composer](https://getcomposer.org/):

```
composer require appwilio/russianpost-sdk
```

При использовании фреймворка [Laravel](https://laravel.com/) SDK автоматически регистрирует доступные сервисы.

Логирование
-----------

[](#логирование)

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

```
$log = (new Logger('pochta.ru'))
    ->pushHandler(new StreamHandler('path/to/your.log', Logger::INFO));

// SingleAccessClient, PacketAccessClient, DispatchingClient
$client->setLogger($log);
```

В случае использования фреймворка [Laravel](https://laravel.com/) следует добавить логгер в контейнер под именем `appwilio.russianpost.logger`:

```
$this->app->singleton('appwilio.russianpost.logger', function () {
    return (new Logger('pochta.ru'))
        ->pushHandler(new StreamHandler('path/to/your.log', Logger::INFO));
});
```

Трекинг
-------

[](#трекинг)

[Документация](https://tracking.pochta.ru/specification)

### Конфигурация в Laravel

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

Добавьте следющие ключи в `services.php`:

```
// ...
'russianpost' => [
    'tracking' => [
        'login' => \env('RUSSIAN_POST_TRACKING_LOGIN'),
        'password' => \env('RUSSIAN_POST_TRACKING_PASSWORD'),
    ],
]
// ...
```

Не забудьте перегенерировать кэш настроек, если они были закэшированы!

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

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

```
$tracker = new SingleAccessClient($login, $password);
```

> Если инфрмации по ШПИ (трек-комеру) не найдено, то выбрасывается исключение `Appwilio\RussianPostSDK\Tracking\Exceptions\SingleAccessException` с соответствующим сообщением.

#### Получение данных по ШПИ (трек-комеру)

[](#получение-данных-по-шпи-трек-комеру)

```
$response = $tracker->getTrackingEvents('29014562148754');
```

Объект `$response` реализует интерфейс `\IteratorAggregate`, поэтому его можно сразу перебирать в цикле:

```
foreach ($response as $events) {
    $parameters = $events->getOperationParameters();

    echo $parameters->getOperationId();
    echo $parameters->getAttributeId();
    echo $parameters->getPerformedAt()->format('d.m.Y в h:i:s'); // 17.09.2019 в 17:20:48
}
```

#### Получение информации о наложенном платеже по ШПИ (трек-комеру)

[](#получение-информации-о-наложенном-платеже-по-шпи-трек-комеру)

```
$response = $tracker->getCashOnDeliveryEvents('29014562148754');
```

Объект `$response` реализует интерфейс `\IteratorAggregate`, поэтому его можно сразу перебирать в цикле:

```
foreach ($response as $event) {
    $parameters = $event->getOperationParameters();

    echo $parameters->getTransferNumber();
    echo $parameters->getPayment(); // 7410
    echo $parameters->getPerformedAt()->format('d.m.Y в h:i:s'); // 17.09.2019 в 17:20:48
}
```

### Пакетный доступ

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

```
$tracker = new PacketAccessClient($login, $password);
```

#### Получение данных по ШПИ (трек-комеру)

[](#получение-данных-по-шпи-трек-комеру-1)

```
$ticket = $tracker->getTicket(['29014562148754', 'RA325487125CN']); // максимум 3 000 треков
```

Рекомендуется подождать 15 минут перед запросом информации.

```
$response = $tracker->getTrackingEvents($ticket->getId());

echo $response->getPreparedAt()->format('d.m.Y в h:m:s');
```

Объект `$response` реализует интерфейс `\IteratorAggregate`, поэтому его можно сразу перебирать в цикле:

```
foreach ($response as $item) {
    echo $item->getBarcode();

    foreach ($item as $events) {
        echo $events->getOperationId();
        echo $events->getAttributeId();
        echo $events->getPerformedAt()->format('d.m.Y в h:m:s'); // 17.09.2019 в 17:20:48
    }
}
```

Отправка
--------

[](#отправка)

[Документация](https://otpravka.pochta.ru/specification)

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

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

```
use GuzzleHttp\Client as GuzzleClient;

$dispatching = new DispatchingClient(
    new Authentication($login, $password, $token),
    new GuzzleClient()
);
```

#### Конфигурация в Laravel

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

Добавьте следющие ключи в `services.php`:

```
// ...
'russianpost' => [
    'dispatching' => [
        'token' => \env('RUSSIAN_POST_TRACKING_TOKEN'),
        'login' => \env('RUSSIAN_POST_TRACKING_LOGIN'),
        'password' => \env('RUSSIAN_POST_TRACKING_PASSWORD'),
    ],
]
// ...
```

Не забудьте перегенерировать кэш настроек, если они были закэшированы!

### Расчёт стоимости пересылки

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

```
$response = $dispatching->services->calculate(
    CalculationRequest::create('123456', 200)
        ->ofMailType(MailType::PARCEL_POSTAL)
        ->ofMailCategory(MailCategory::ORDINARY)
        ->ofEntriesType(MailEntryType::SALE_OF_GOODS)
        ->fragile()
        ->withSmsNotice();
);

echo $response->getTotal()->getRate();
echo $response->getTotal()->getVAT(); // НДС
```

### Нормализация и валидация данных

[](#нормализация-и-валидация-данных)

#### Нормализация ФИО

[](#нормализация-фио)

```
$response = $dispatching->services->normalizeFio(
    NormalizeFioRequest::one('иванов иван иванович')
);

if ($response[0]->isUseful()) {
    echo $response[0]->getFirstName().' '.$response[0]->getLastName(); // Иван Иванов
}
```

#### Нормализация адресов

[](#нормализация-адресов)

```
$response = $dispatching->services->normalizeAddress(
    NormalizeAddressRequest::one('Москва варшавское шоссе 37-45')
);
```

#### Нормализация телефонов

[](#нормализация-телефонов)

```
$response = $dispatching->services->normalizePhone(NormalizePhoneRequest::one('89001234567'));
```

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

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

```
$response = $dispatching->services->checkRecipient(
    CheckRecipientRequest::one('Москва, Варшавское шоссе, 37-45')
);

$response[0]->isFraud(); // ненадёжный
$response[0]->isReliable(); // надёжный
```

```
$response = $dispatching->services->checkRecipient(
    CheckRecipientRequest::create()
        ->addRecipient('123456 Москва, Варшавское шоссе, 37-45')
        ->addRecipient('654321 Владивосток, пер. Староконный, 12-98');
);

foreach ($response as $recipient) {
    echo $recipient->getAddress.': '.$recipiend->isReliable();
}
```

### Документы

[](#документы)

```
$file = $dispatching->documents->orderF7Form('12345678');

echo $file->getClientFilename(); // f7p.pdf

// Сохранение
$file->moveTo("storage/printforms/12345678-{$file->getClientFilename()}");

// Перенаправление в браузер (Laravel)
return \response()->streamDownload(function () use ($file) {
    (string) $file->getStream();
}, $file->getClientName(), ['Content-Type' => $file->getClientMediaType()]);
```

#### Форма Ф7п для заказа

[](#форма-ф7п-для-заказа)

```
$pdf = $dispatching->documents->orderF7Form(
    '12345678', new \DateTime('2019-01-01'), Documents::PRINT_TYPE_THERMO
);
```

#### Форма Ф112ЭК для заказа

[](#форма-ф112эк-для-заказа)

```
$pdf = $dispatching->documents->orderF112Form('12345678', new \DateTime('2019-01-01'));
```

#### Пакет документов для заказа (до формирования партии)

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

```
$zip = $dispatching->documents->orderFormsBundleBacklog('12345678', new \DateTime('2019-01-01'));
```

#### Пакет документов для заказа (после формирования партии)

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

```
$zip = $dispatching->documents->orderFormBundle(
    '12345678', new \DateTime('2019-01-01'), Documents::PRINT_TYPE_THERMO
);
```

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

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

```
$zip = $dispatching->documents->batchFormBundle('87654321');
```

#### Акт осмотра содержимого партии

[](#акт-осмотра-содержимого-партии)

```
$pdf = $dispatching->documents->batchCheckingForm('87654321');
```

#### Форма Ф103 для партии

[](#форма-ф103-для-партии)

```
$pdf = $dispatching->documents->batchF103Form('87654321');
```

Запуск тестов
-------------

[](#запуск-тестов)

```
$ vendor/bin/phpunit

```

Авторы
------

[](#авторы)

- [greabock](https://github.com/greabock)
- [JhaoDa](https://github.com/jhaoda)

Лиценция
--------

[](#лиценция)

Данный SDK распространяется под лицензией [MIT](http://opensource.org/licenses/MIT).

###  Health Score

14

—

LowBetter than 1% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity17

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/100197542?v=4)[Posokhov Aleksandr](/maintainers/a-posokhov)[@a-posokhov](https://github.com/a-posokhov)

---

Top Contributors

[![a-posokhov](https://avatars.githubusercontent.com/u/100197542?v=4)](https://github.com/a-posokhov "a-posokhov (6 commits)")

### Embed Badge

![Health badge](/badges/a-posokhov-russianpost-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/a-posokhov-russianpost-sdk/health.svg)](https://phpackages.com/packages/a-posokhov-russianpost-sdk)
```

###  Alternatives

[exsyst/swagger

A php library to manipulate Swagger specifications

35916.4M7](/packages/exsyst-swagger)[hubspot/api-client

Hubspot API client

24016.2M20](/packages/hubspot-api-client)[pocketmine/bedrock-protocol

An implementation of the Minecraft: Bedrock Edition protocol in PHP

172445.0k15](/packages/pocketmine-bedrock-protocol)[botman/driver-telegram

Telegram driver for BotMan

93459.5k6](/packages/botman-driver-telegram)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
