{"id":15664009,"url":"https://github.com/bigperson/modulpos-php-api-client","last_synced_at":"2025-06-25T06:03:28.811Z","repository":{"id":54583173,"uuid":"98306851","full_name":"bigperson/modulpos-php-api-client","owner":"bigperson","description":"PHP client for Modul.Kassa API Fiscal Service","archived":false,"fork":false,"pushed_at":"2021-02-09T10:23:37.000Z","size":61,"stargazers_count":17,"open_issues_count":6,"forks_count":10,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-05T23:09:29.452Z","etag":null,"topics":["fz54","modulbank","modulkassa","modulpos","online-kassa","php-api","php-client"],"latest_commit_sha":null,"homepage":"","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/bigperson.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-07-25T13:03:55.000Z","updated_at":"2024-05-23T15:07:33.000Z","dependencies_parsed_at":"2022-08-13T20:30:58.422Z","dependency_job_id":null,"html_url":"https://github.com/bigperson/modulpos-php-api-client","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/bigperson/modulpos-php-api-client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigperson%2Fmodulpos-php-api-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigperson%2Fmodulpos-php-api-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigperson%2Fmodulpos-php-api-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigperson%2Fmodulpos-php-api-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bigperson","download_url":"https://codeload.github.com/bigperson/modulpos-php-api-client/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bigperson%2Fmodulpos-php-api-client/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261816052,"owners_count":23213840,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["fz54","modulbank","modulkassa","modulpos","online-kassa","php-api","php-client"],"created_at":"2024-10-03T13:40:53.306Z","updated_at":"2025-06-25T06:03:28.784Z","avatar_url":"https://github.com/bigperson.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PHP клиент для API автоматической фискализации чеков интернет-магазинов Модуль.Кассы\n[![](https://img.shields.io/packagist/l/bigperson/modulpos-php-api-client.svg?style=flat-square)](https://github.com/bigperson/modulpos-php-api-client/blob/master/LICENSE) \n[![](https://img.shields.io/packagist/dt/bigperson/modulpos-php-api-client.svg?style=flat-square)](https://packagist.org/packages/bigperson/modulpos-php-api-client)\n[![](https://img.shields.io/packagist/v/bigperson/modulpos-php-api-client.svg?style=flat-square)](https://packagist.org/packages/bigperson/modulpos-php-api-client)\n[![](https://img.shields.io/travis/bigperson/modulpos-php-api-client.svg?style=flat-square)](https://travis-ci.org/bigperson/modulpos-php-api-client)\n[![](https://img.shields.io/codecov/c/github/bigperson/modulpos-php-api-client.svg?style=flat-square)](https://codecov.io/gh/bigperson/modulpos-php-api-client)\n[![StyleCI](https://styleci.io/repos/98306851/shield?branch=master)](https://styleci.io/repos/98306851)\n\nПакет предоставляет удобный интерфейс для общения с API Модуль.Кассы для отправки данных чеков в сервис фискализации. \nПакет упрощает разработку модулей интеграции интернет-магазина с севисом фискализации Модуль.Кассы.\n\nЧасть описания дублирует оригинал [документации по API Модуль.Кассы](http://modulkassa.ru/upload/medialibrary/abb/api-avtomaticheskoy-fiskalizatsii-chekov-internet_magazinov-_ver.1.2_.pdf)\n\n\n## Требования\n* php ^7.1\n* guzzlehttp/guzzle (или любой клиент следующий интерфейсу `\\GuzzleHttp\\ClientInterface`)\n* ext-json\n* curl\n\n## Установка\nВы можете установить данный пакет с помощью сomposer:\n\n```\ncomposer require bigperson/modulpos-php-api-client\n```\n\nДля PHP 5.4-7.0 можеете использовать предыдущую версию\n```\ncomposer require bigperson/modulpos-php-api-client 1.0\n```\n\n## Использование\nСхема процесса фискализации подробна описана в [документации к API](https://support.modulkassa.ru/upload/medialibrary/abb/API%20%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9%20%D1%84%D0%B8%D1%81%D0%BA%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8%20%D1%87%D0%B5%D0%BA%D0%BE%D0%B2%20%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82-%D0%BC%D0%B0%D0%B3%D0%B0%D0%B7%D0%B8%D0%BD%D0%BE%D0%B2%20(ver.1.4).pdf). В кратце необходимо связать точку продаж с интернет магазином, настроить отправку данных чеков и проверить статус отправленного чека.\n\n### Создания связки аккаунта и розничной точки\nДля начала необходимо в личном кабинете Модуль.Кассы создать розничную точку продаж, активировать у неё функцию `Использовать для печати документов интернет-магазина` и получить идентификатор `uuid`. Далее вызываем связку\n\n```php\n$login = 'test@test.ru'; // Логин от аккаунта Модуль.Кассы\n$password = 'password'; // Пароль от аккаунта Модуль.Кассы\n$retailPointUuid = 'uuid'; // Идентификатор розничной точки\n$testMode = true; // Тестовый режим\n$associate = new \\Bigperson\\ModulposApiClient\\Associate($login, $password, $retailPointUuid, $testMode);\n$result = $associate-\u003einit();\n```\n\nВ `$result` получим массив с данным `userName` и `password` которые будут использоватся для дальнейших обращений к API. Их нужно где-нибудь сохранить, например в базе данных.\n\n### Отправка данных чека на сервер фискализации (создание документа)\nДля начала необходимо сформировать данные самого чека. Для этого достаточно для ваших моделей инплементировать интерфейсы ModulposOrderInterface для заказа, ModulposOrderItemInterface для товара в заказе, ModulposPaymentItemInterface для способа оплаты. Также вы можете использовать entity из пакета, или отнаследовать от них собственные классы переопределив методы на собственные.\n```php\nuse Bigperson\\ModulposApiClient\\Entity\\Order;\nuse Bigperson\\ModulposApiClient\\Entity\\Cashier;\nuse Bigperson\\ModulposApiClient\\Entity\\OrderItem;\nuse Bigperson\\ModulposApiClient\\Entity\\PaymentItem;\n\n$dateTime =  new \\DateTime('NOW');\n// Создаем заказ\n$order = Order::create([\n    'documentUuid'     =\u003e uniqid(),\n    'checkoutDateTime' =\u003e $dateTime-\u003eformat(DATE_RFC3339),\n    'orderId'          =\u003e rand(100000, 999999),\n    'typeOperation'    =\u003e 'SALE',\n    'customerContact'  =\u003e 'test@example.com',\n]);\n\n// Созадем товары\n$orderItem1 = OrderItem::create([\n    'price' =\u003e 100,\n    'quantity' =\u003e 1,\n    'vatTag' =\u003e OrderItem::VAT_NO,\n    'name' =\u003e 'Test Product1'\n]);\n\n$orderItem2 = OrderItem::create([\n    'price' =\u003e 200,\n    'quantity' =\u003e 1,\n    'vatTag' =\u003e OrderItem::VAT_NO,\n    'name' =\u003e 'Test Product2'\n]);\n\n//Создаем способ оплаты\n$paymentItem = PaymentItem::create([\n    'type' =\u003e 'CARD',\n    'sum' =\u003e 300\n]);\n\n// Добавляем товары и способ оплаты к заказу\n$order-\u003eaddItem($orderItem1);\n$order-\u003eaddItem($orderItem2);\n$order-\u003eaddPaymentItem($paymentItem);\n\n//Создаем кассира\n$cashier = Cashier::create([\n    'name' =\u003e 'Test Cashier',\n    'inn' =\u003e '123456789012',\n    'position' =\u003e 'salesman',\n]);\n```\n\nДалее объект заказа необходимо передать клиенту, также вы можете передать `responseURL` и печатать ли чек на кассе:\n```php\n$login = 'test@test.ru'; // Логин полученный на первом шаге\n$password = 'password'; // Пароль полученный на первом шаге\n$testMode = true; // Тестовый режим\n$client = new \\Bigperson\\ModulposApiClient\\Client($login, $password, $testMode);\n$responseUrl =  'https://internet.shop.ru/order/982340931/checkout?completed=1';\n$printReceipt = true; // Печатать ли чек на кассе\n$result = $client-\u003esendCheck($order, $responseUrl, $printReceipt, $cashier);\n```\nВсе параметры кроме $order - опциональные. Если не передан объект `ModulposCashierInterface` \nто будут использованны данные из настроек торговой точки.\n\nВ ответ придет массив со статусом обработки документа и фискального накопителя.\n\n### Проверка статуса документа\nЕсли при передаче данных чека был передан `responseURL`, то на него придет результат фискализации, если параметр задан не был, то вы можете самостоятельно проверить статус документа:\n```php\n$login = 'test@test.ru'; // Логин полученный на первом шаге\n$password = 'password'; // Пароль полученный на первом шаге\n$testMode = true; // Тестовый режим\n$documentId = 'efbafcdd-113a-45db-8fb9-718b1fdc3524'; // id документа\n$client = new \\Bigperson\\ModulposApiClient\\Client($login, $password, $testMode);\n$result = $client-\u003egetStatusDocumentById($documentId);\n```\nВ ответ придет массив со статусом `status`, который может принимать значения:\n* QUEUED - документ принят в очередь на обработку;\n* PENDING - документ получен кассой для печати;\n* PRINTED - фискализирован успешно;\n* COMPLETED - результат фискализации отправлен (если было заполнено поле responseURL) в сервис источник;\n* FAILED - ошибка при фискализации.\n\n\nТакже в массив придет `fnState` - статус фискального накопителя, может принимать значения:\n\n* ready ​- соединение с фискальным накопителем установлено, состояние позволяет фискализировать чеки\n* associated​ - клиент успешно связан с розничной точкой, но касса еще ни разу не вышла на связь и не сообщила свое состояние\n* failed ​- Проблемы получения статуса фискального накопителя. Этот статус не препятствует добавлению документов для фискализации. Все документы будут добавлены в очередь на сервере и дождутся момента когда касса будет в состоянии их фискализировать\n\nКроме того вы можете вызвать отдельно метод проверки статуса фискального накопителя (сервиса фискализации):\n```php\n$client = new \\Bigperson\\ModulposApiClient\\Client($login, $password, $testMode);\n$result = $client-\u003egetStatusFiscalService();\n```\n\n## Развитие пакета\nС целью активного развития пакета, рекомендуем создавать пулл-реквесты, а не только баг-репорты ([issues](https://github.com/bigperson/modulpos-php-api-client/issues)). \nПо любым проблемам рекомендуем открывать Баг-репорты с подробным описанием проблемы и последовательностью действия для воспроизведения бага.\n\n## Лицензия\n[MIT](https://raw.githubusercontent.com/bigperson/modulpos-php-api-client/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbigperson%2Fmodulpos-php-api-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbigperson%2Fmodulpos-php-api-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbigperson%2Fmodulpos-php-api-client/lists"}