{"id":41793362,"url":"https://github.com/appwilio/russianpost-sdk","last_synced_at":"2026-01-25T05:08:33.120Z","repository":{"id":44935594,"uuid":"101485954","full_name":"appwilio/russianpost-sdk","owner":"appwilio","description":"PHP SDK для Почты России","archived":false,"fork":false,"pushed_at":"2022-01-18T13:44:16.000Z","size":422,"stargazers_count":46,"open_issues_count":6,"forks_count":17,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-09-12T07:57:55.803Z","etag":null,"topics":["laravel","laravel-5-package","pochtaru","russian-post","russianpost","sdk","sdk-php"],"latest_commit_sha":null,"homepage":"https://www.pochta.ru/support/business/api","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/appwilio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-08-26T13:00:49.000Z","updated_at":"2025-07-31T12:29:25.000Z","dependencies_parsed_at":"2022-08-29T08:41:23.547Z","dependency_job_id":null,"html_url":"https://github.com/appwilio/russianpost-sdk","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/appwilio/russianpost-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appwilio%2Frussianpost-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appwilio%2Frussianpost-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appwilio%2Frussianpost-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appwilio%2Frussianpost-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/appwilio","download_url":"https://codeload.github.com/appwilio/russianpost-sdk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appwilio%2Frussianpost-sdk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28744421,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T02:46:29.005Z","status":"ssl_error","status_checked_at":"2026-01-25T02:44:29.968Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["laravel","laravel-5-package","pochtaru","russian-post","russianpost","sdk","sdk-php"],"created_at":"2026-01-25T05:08:32.500Z","updated_at":"2026-01-25T05:08:33.102Z","avatar_url":"https://github.com/appwilio.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eSDK для \u003ca href=\"https://www.pochta.ru/support/business/api\"\u003eбизнес-сервисов\u003c/a\u003e Почты России\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://packagist.org/packages/appwilio/russianpost-sdk\"\u003e\u003cimg src=\"https://img.shields.io/packagist/v/appwilio/russianpost-sdk.svg?style=flat\" alt=\"Latest Version on Packagist\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/appwilio/russianpost-sdk/actions?workflow=tests\"\u003e\u003cimg src=\"https://github.com/appwilio/russianpost-sdk/workflows/tests/badge.svg\" alt=\"Testing\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://scrutinizer-ci.com/g/appwilio/russianpost-sdk\"\u003e\u003cimg src=\"https://img.shields.io/scrutinizer/g/appwilio/russianpost-sdk.svg?style=flat\" alt=\"Quality Score\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://scrutinizer-ci.com/g/appwilio/russianpost-sdk/?branch=master\"\u003e\u003cimg src=\"https://img.shields.io/scrutinizer/coverage/g/appwilio/russianpost-sdk/master.svg?style=flat\" alt=\"Code Coverage\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://styleci.io/repos/101485954\"\u003e\u003cimg src=\"https://github.styleci.io/repos/101485954/shield?style=flat\" alt=\"StyleCI\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://packagist.org/packages/appwilio/russianpost-sdk\"\u003e\u003cimg src=\"https://poser.pugx.org/appwilio/russianpost-sdk/downloads?format=flat\" alt=\"Total Downloads\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://raw.githubusercontent.com/appwilio/russianpost-sdk/master/LICENSE.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-428F7E\" alt=\"License MIT\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Содержание\n- [Установка](#установка)\n- [Трекинг](#трекинг)\n  - [x] [Единичный доступ](#единичный-доступ)\n    - [x] информация о наложенном платеже\n  - [x] [Пакетный доступ](#пакетный-доступ)\n- [Отправка](#отправка)\n  - [x] [Расчёт стоимости пересылки](#расчёт-стоимости-пересылки)\n  - [x] Получение баланса\n  - [x] Нормализация и валидация данных\n    - [x] [ФИО](#нормализация-ФИО)\n    - [x] [Адреса](#нормализация-адресов)\n    - [x] [Телефоны](#нормализация-телефонов)\n    - [x] [Проверка благонадёжности получателя](#проверка-благонадёжности-получателя)\n  - [x] [Документы](#документы)\n    - [x] [Форма Ф7п для заказа](#форма-Ф7п-для-заказа)\n    - [x] [Форма Ф112ЭК для заказа](#форма-Ф112ЭК-для-заказа)\n    - [x] [Пакет документов для заказа (до формирования партии)](#пакет-документов-для-заказа-(до-формирования-партии))\n    - [x] [Пакет документов для заказа (после формирования партии)](#пакет-документов-для-заказа-(после-формирования-партии))\n    - [x] [Пакет документов для партии](#пакет-документов-для-партии)\n    - [x] [Акт осмотра содержимого партии](#акт-осмотра-содержимого-партии)\n    - [x] [Форма Ф103 для партии](#форма-Ф103-для-партии)\n    - [x] [Генерация возвратного ярлыка на одной печатной странице](#возвратный-ярлык)\n    - [x] Подготовка и отправка электронной формы Ф103 для партии\n  - [ ] Настройки пользователя\n  - [ ] Заказы\n    - [x] Создание\n    - [x] Поиск по идентификатору магазина\n    - [x] Поиск по идентификатору Почты России\n    - [ ] Редактирование\n    - [x] Удаление\n    - [ ] Возврат в «Новые»\n  - [ ] Партии\n    - [ ] Создание партии заказов\n    - [ ] Изменение дня отправки партии в ОПС\n    - [ ] Перенос заказов в партию\n    - [ ] Добавление заказов в партию\n    - [ ] Удаление заказов из партии\n    - [x] Запрос данных о заказах в партии\n    - [x] Поиск партии по наименованию\n    - [x] Поиск всех партий\n    - [x] Поиск заказов по ШПИ\n    - [x] Поиск заказа по идентификатору Почты России\n  - [ ] Архив\n    - [ ] Запрос данных о партиях\n    - [ ] Перевод партии в архив\n    - [ ] Возврат партии из архива\n  - [ ] Поиск ОПС\n    - [x] По индексу\n    - [x] По адресу\n    - [x] По координатам\n    - [x] Поиск индексов в населённом пункте\n    - [x] Почтовые сервисы ОПС\n    - [x] Почтовые сервисы ОПС по идентификатору группы сервисов\n    - [x] Выгрузка из паспорта ОПС\n  - [ ] Долгосрочное хранение\n    - [ ] Запрос данных о заказах\n\n\u003e Работа с API пакетного трекинга и API отправки возможна только при наличии договора с Почтой России.\n\u003e\n\u003e Работа с API единичного трекинга возможна как с договором, так и после простой [регистрации](https://tracking.pochta.ru) (но с лимитом — 100 запросов в сутки).\n\n## Установка\n\n\u003e Минимальные требования — PHP 7.1+, ext-soap, ext-json.\n\nДля установки используйте менеджер пакетов [Composer](https://getcomposer.org/):\n```bash\ncomposer require appwilio/russianpost-sdk\n```\n\nПри использовании фреймворка [Laravel](https://laravel.com/) SDK автоматически регистрирует доступные сервисы.\n\u003e Минимальная версия Laravel — 5.8.\n\n## Логирование\n\nДля логирования запросов и ответов можно подключить любой логгер, реализующий стандарт [PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md), например, [Monolog](https://github.com/Seldaek/monolog):\n```php\nuse Monolog\\Logger;\nuse Monolog\\Handler\\StreamHandler;\n\n$log = (new Logger('pochta.ru'))\n    -\u003epushHandler(new StreamHandler('path/to/your.log', Logger::INFO));\n\n// SingleAccessClient, PacketAccessClient, DispatchingClient\n$client-\u003esetLogger($log);\n```\n\nВ случае использования фреймворка [Laravel](https://laravel.com/) следует добавить логгер в контейнер под именем `appwilio.russianpost.logger`: \n```php\nuse Monolog\\Logger;\nuse Monolog\\Handler\\StreamHandler;\n\n$this-\u003eapp-\u003esingleton('appwilio.russianpost.logger', static function () {\n    return (new Logger('pochta.ru'))\n        -\u003epushHandler(new StreamHandler('path/to/your.log', Logger::INFO));\n});\n```\n\n## Трекинг\n\n[Документация](https://tracking.pochta.ru/specification)\n\n### Конфигурация в Laravel\n\nДобавьте следющие ключи в `services.php`:\n```php\n// ...\n'russianpost' =\u003e [\n    'tracking' =\u003e [\n        'login' =\u003e \\env('RUSSIAN_POST_TRACKING_LOGIN'),\n        'password' =\u003e \\env('RUSSIAN_POST_TRACKING_PASSWORD'),\n    ],\n],\n// ...\n```\n\nНе забудьте перегенерировать кэш настроек, если они были закэшированы!\n\n\n### Единичный доступ\n\nКонструктор класса `SingleAccessClient` принимает два параметра — логин и пароль от личного кабинета на сайте Почты России.\n```php\nuse Appwilio\\RussianPostSDK\\Tracking\\SingleAccessClient;\n\n$tracker = new SingleAccessClient($login = 'login', $password = 'secret');\n```\n\n\u003e Если информации по ШПИ (трек-комеру) не найдено, то выбрасывается исключение\n\u003e`Appwilio\\RussianPostSDK\\Tracking\\Exceptions\\SingleAccessException` с соответствующим сообщением.\n\n#### Получение данных по ШПИ (трек-комеру)\n```php\n$response = $tracker-\u003egetTrackingEvents('29014562148754');\n```\n\nОбъект `$response` реализует интерфейс `\\IteratorAggregate`, поэтому его можно сразу перебирать в цикле:\n```php\nforeach ($response as $events) {\n    $parameters = $events-\u003egetOperationParameters();\n    \n    echo $parameters-\u003egetOperationId();\n    echo $parameters-\u003egetAttributeId();\n    echo $parameters-\u003egetPerformedAt()-\u003eformat('d.m.Y в h:i:s'); // 17.09.2019 в 17:20:48\n}\n```\n\n#### Получение информации о наложенном платеже по ШПИ (трек-комеру)\n```php\n$response = $tracker-\u003egetCashOnDeliveryEvents('29014562148754');\n```\n\nОбъект `$response` реализует интерфейс `\\IteratorAggregate`, поэтому его можно сразу перебирать в цикле:\n```php\nforeach ($response as $event) {\n    $parameters = $event-\u003egetOperationParameters();\n    \n    echo $parameters-\u003egetTransferNumber();\n    echo $parameters-\u003egetPayment(); // 7410\n    echo $parameters-\u003egetPerformedAt()-\u003eformat('d.m.Y в h:i:s'); // 17.09.2019 в 17:20:48\n}\n```\n\n### Пакетный доступ\n\n```php\nuse Appwilio\\RussianPostSDK\\Tracking\\PacketAccessClient;\n\n$tracker = new PacketAccessClient($login = 'login', $password = 'secret');\n```\n\n#### Получение данных по ШПИ (трек-комеру)\n```php\n$ticket = $tracker-\u003egetTicket(['29014562148754', 'RA325487125CN']); // максимум 3 000 треков\n```\n\nРекомендуется подождать 15 минут перед запросом информации.\n\n```php\n$response = $tracker-\u003egetTrackingEvents($ticket-\u003egetId());\n\necho $response-\u003egetPreparedAt()-\u003eformat('d.m.Y в h:m:s');\n```\n\nОбъект `$response` реализует интерфейс `\\IteratorAggregate`, поэтому его можно сразу перебирать в цикле:\n```php\nforeach ($response as $item) {\n    echo $item-\u003egetBarcode();\n    \n    foreach ($item as $events) {\n        echo $events-\u003egetOperationId();\n        echo $events-\u003egetAttributeId();\n        echo $events-\u003egetPerformedAt()-\u003eformat('d.m.Y в h:m:s'); // 17.09.2019 в 17:20:48\n    }\n}\n```\n\n## Отправка\n\n[Документация](https://otpravka.pochta.ru/specification)\n\n### Конфигурация\n\nКонструктор класса `DispatchingClient` принимает три обязательных параметра: логин и пароль от личного кабинета на сайте Почты России,\nа так же [токен доступа](https://otpravka.pochta.ru/specification#/authorization-token), который высылается на почту\nпри подключении сервиса «Отправка» и может быть изменён в личном кабинете.\n\n```php\nuse GuzzleHttp\\Client as GuzzleClient;\nuse Appwilio\\RussianPostSDK\\Dispatching\\DispatchingClient;\n\n$dispatching = new DispatchingClient(\n    $login = 'login', $password = 'secret', $token = 'QWERTY', new GuzzleClient()\n);\n```\n\n#### Конфигурация в Laravel\n\nДобавьте следющие ключи в `services.php`:\n```php\n// ...\n'russianpost' =\u003e [\n    'dispatching' =\u003e [\n        'token' =\u003e \\env('RUSSIAN_POST_DISPATCHING_TOKEN'),\n        'login' =\u003e \\env('RUSSIAN_POST_TDISPATCHING_LOGIN'),\n        'password' =\u003e \\env('RUSSIAN_POST_DISPATCHING_PASSWORD'),\n        'guzzle' =\u003e [\n            'timeout' =\u003e 5,\n        ],\n    ],\n],\n// ...\n```\n\nНе забудьте перегенерировать кэш настроек, если они были закэшированы!\n\n### Расчёт стоимости пересылки\n```php\nuse Appwilio\\RussianPostSDK\\Dispatching\\Enum\\MailType;\nuse Appwilio\\RussianPostSDK\\Dispatching\\Enum\\MailCategory;\nuse Appwilio\\RussianPostSDK\\Dispatching\\Enum\\MailEntryType;\nuse Appwilio\\RussianPostSDK\\Dispatching\\Endpoints\\Services\\Requests\\CalculationRequest;\n\n$response = $dispatching-\u003eservices-\u003ecalculate(\n    CalculationRequest::create('123456', 200)\n        -\u003eofMailType(MailType::PARCEL_POSTAL())\n        -\u003eofMailCategory(MailCategory::ORDINARY())\n        -\u003eofEntriesType(MailEntryType::GOODS())\n        -\u003efragile()\n        -\u003ewithSmsNotice()\n);\n\necho $response-\u003egetTotal()-\u003egetRate();\necho $response-\u003egetTotal()-\u003egetVAT(); // НДС\n```\n\n### Нормализация и валидация данных\n\n#### Нормализация ФИО\n```php\nuse Appwilio\\RussianPostSDK\\Dispatching\\Endpoints\\Services\\Requests\\NormalizeFioRequest;\n\n$response = $dispatching-\u003eservices-\u003enormalizeFio(\n    NormalizeFioRequest::one('иванов иван иванович')\n);\n\nif ($response[0]-\u003eisUseful()) {\n    echo $response[0]-\u003egetFirstName().' '.$response[0]-\u003egetLastName(); // Иван Иванов\n}\n```\n\n#### Нормализация адресов\n```php\nuse Appwilio\\RussianPostSDK\\Dispatching\\Endpoints\\Services\\Requests\\NormalizeAddressRequest;\n\n$response = $dispatching-\u003eservices-\u003enormalizeAddress(\n    NormalizeAddressRequest::one('Москва варшавское шоссе 37-45')\n);\n```\n\n#### Нормализация телефонов\n```php\nuse Appwilio\\RussianPostSDK\\Dispatching\\Endpoints\\Services\\Requests\\NormalizePhoneRequest;\n\n$response = $dispatching-\u003eservices-\u003enormalizePhone(NormalizePhoneRequest::one('89001234567'));\n```\n\n#### Проверка благонадёжности получателя\n```php\nuse Appwilio\\RussianPostSDK\\Dispatching\\Endpoints\\Services\\Requests\\CheckRecipientRequest;\n\n$response = $dispatching-\u003eservices-\u003echeckRecipient(\n    CheckRecipientRequest::one('Москва, Варшавское шоссе, 37-45', 'Иванов Иван Иванович', '+7 123 456-78-90')\n);\n\n$response[0]-\u003eisFraud(); // ненадёжный\n$response[0]-\u003eisReliable(); // надёжный\n```\n\n```php\nuse Appwilio\\RussianPostSDK\\Dispatching\\Endpoints\\Services\\Requests\\CheckRecipientRequest;\n\n$request = CheckRecipientRequest::create();\n$request-\u003eaddRecipient('123456 Москва, Варшавское шоссе, 37-45', 'Иванов Иван Иванович', '+7 123 456-78-90');\n\n$response = $dispatching-\u003eservices-\u003echeckRecipient($request);\n\nforeach ($response as $recipient) {\n    echo $recipient-\u003egetAddress.': '.$recipient-\u003eisReliable();\n}\n```\n\n### Документы\n```php\n$file = $dispatching-\u003edocuments-\u003eorderF7Form('12345678');\n\necho $file-\u003egetClientFilename(); // f7p.pdf\n\n// Сохранение\n$file-\u003emoveTo(\"storage/printforms/12345678-{$file-\u003egetClientFilename()}\");\n\n// Перенаправление в браузер (Laravel)\nreturn \\response()-\u003estreamDownload(staticfunction () use ($file) {\n    (string) $file-\u003egetStream();\n}, $file-\u003egetClientName(), ['Content-Type' =\u003e $file-\u003egetClientMediaType()]);\n```\n\n#### Форма Ф7п для заказа\n```php\nuse Appwilio\\RussianPostSDK\\Dispatching\\Enum\\PrintType;\n\n$pdf = $dispatching-\u003edocuments-\u003eorderF7Form(\n    '12345678', new \\DateTime('2019-01-01'), PrintType::PAPER()\n);\n```\n\n#### Форма Ф112ЭК для заказа\n```php\n$pdf = $dispatching-\u003edocuments-\u003eorderF112Form('12345678', new \\DateTime('2019-01-01'));\n```\n\n#### Пакет документов для заказа (до формирования партии)\n```php\n$zip = $dispatching-\u003edocuments-\u003eorderFormsBundleBacklog('12345678', new \\DateTime('2019-01-01'));\n```\n\n#### Пакет документов для заказа (после формирования партии)\n```php\nuse Appwilio\\RussianPostSDK\\Dispatching\\Enum\\PrintType;\n\n$zip = $dispatching-\u003edocuments-\u003eorderFormBundle(\n    '12345678', new \\DateTime('2019-01-01'), PrintType::THERMO()\n);\n```\n\n#### Пакет документов для партии\n```php\n$zip = $dispatching-\u003edocuments-\u003ebatchFormBundle('87654321');\n```\n\n#### Акт осмотра содержимого партии\n```php\n$pdf = $dispatching-\u003edocuments-\u003ebatchCheckingForm('87654321');\n```\n\n#### Форма Ф103 для партии\n```php\n$pdf = $dispatching-\u003edocuments-\u003ebatchF103Form('87654321');\n```\n\n#### Возвратный ярлык\n```php\nuse Appwilio\\RussianPostSDK\\Dispatching\\Enum\\PrintType;\n\n$pdf = $dispatching-\u003edocuments-\u003eeasyReturnForm('29014562148754', PrintType::THERMO());\n```\n\n## Запуск тестов\n\n```\n$ vendor/bin/phpunit\n```\n## Авторы\n\n- [greabock](https://github.com/greabock)\n- [JhaoDa](https://github.com/jhaoda)\n\n## Лиценция\n\nДанный SDK распространяется под лицензией [MIT](http://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappwilio%2Frussianpost-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fappwilio%2Frussianpost-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappwilio%2Frussianpost-sdk/lists"}