10 Commits

Author SHA1 Message Date
a155a27208 Merge pull request #30 from anthonyaxenov/dependabot/composer/symfony/process-6.4.20
Bump symfony/process from 6.2.0 to 6.4.20
2025-07-15 00:17:45 +08:00
dependabot[bot]
8197134ddb Bump symfony/process from 6.2.0 to 6.4.20
Bumps [symfony/process](https://github.com/symfony/process) from 6.2.0 to 6.4.20.
- [Release notes](https://github.com/symfony/process/releases)
- [Changelog](https://github.com/symfony/process/blob/7.3/CHANGELOG.md)
- [Commits](https://github.com/symfony/process/compare/v6.2.0...v6.4.20)

---
updated-dependencies:
- dependency-name: symfony/process
  dependency-version: 6.4.20
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-14 16:16:22 +00:00
63203e6d5d Merge pull request #29 from anthonyaxenov/dependabot/composer/guzzlehttp/psr7-2.5.0
Bump guzzlehttp/psr7 from 2.4.3 to 2.5.0
2025-07-15 00:15:09 +08:00
dependabot[bot]
135e77f4bd Bump guzzlehttp/psr7 from 2.4.3 to 2.5.0
Bumps [guzzlehttp/psr7](https://github.com/guzzle/psr7) from 2.4.3 to 2.5.0.
- [Release notes](https://github.com/guzzle/psr7/releases)
- [Changelog](https://github.com/guzzle/psr7/blob/2.5/CHANGELOG.md)
- [Commits](https://github.com/guzzle/psr7/compare/2.4.3...2.5.0)

---
updated-dependencies:
- dependency-name: guzzlehttp/psr7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-19 20:40:09 +00:00
0a03521a50 Исправлен бейджик build (ci)
https://github.com/badges/shields/issues/8671
2022-12-20 14:43:39 +08:00
268134d47f Merge pull request #27 from anthonyaxenov/dev
Миграция на php8.1
2022-12-15 11:17:20 +08:00
6f4e756ec9 Убрал TODO из README, вместо этого просто завёл issues #7, #23, #24, #25, #26 2022-12-15 11:15:46 +08:00
cda2018aa6 Дополнение о версии в README 2022-12-15 11:02:32 +08:00
2ab45e8c28 Мелочи по докам, TODO в README 2022-12-15 09:34:57 +08:00
c7baedae4f Ссылки на пожертвования в README 2022-12-15 09:15:02 +08:00
6 changed files with 63 additions and 66 deletions

View File

@@ -2,11 +2,12 @@
Библиотека для фискализации чеков по 54-ФЗ через [облачные ККТ АТОЛ](https://online.atol.ru/). Библиотека для фискализации чеков по 54-ФЗ через [облачные ККТ АТОЛ](https://online.atol.ru/).
[![GitHub Workflow Status (master)](https://img.shields.io/github/workflow/status/anthonyaxenov/atol-online/CI/master?logo=github)](https://github.com/anthonyaxenov/atol-online/actions/workflows/ci.yml) [![GitHub Workflow Status (master)](https://img.shields.io/github/actions/workflow/status/anthonyaxenov/atol-online/ci.yml?branch=master&logo=github)](https://github.com/anthonyaxenov/atol-online/actions/workflows/ci.yml)
[![codecov](https://codecov.io/gh/anthonyaxenov/atol-online/branch/master/graph/badge.svg?token=WR2IV7FTF0)](https://codecov.io/gh/anthonyaxenov/atol-online) [![codecov](https://codecov.io/gh/anthonyaxenov/atol-online/branch/master/graph/badge.svg?token=WR2IV7FTF0)](https://codecov.io/gh/anthonyaxenov/atol-online)
[![Stable Version](https://img.shields.io/packagist/v/axenov/atol-online?label=stable)](https://packagist.org/packages/axenov/atol-online) [![Stable Version](https://img.shields.io/packagist/v/axenov/atol-online?label=stable)](https://packagist.org/packages/axenov/atol-online)
[![Packagist PHP Version Support](https://img.shields.io/packagist/php-v/axenov/atol-online?color=%23787cb4)](https://packagist.org/packages/axenov/atol-online) [![Packagist PHP Version Support](https://img.shields.io/packagist/php-v/axenov/atol-online?color=%23787cb4)](https://packagist.org/packages/axenov/atol-online)
[![License](https://img.shields.io/packagist/l/axenov/atol-online?color=%23369883)](LICENSE) [![License](https://img.shields.io/packagist/l/axenov/atol-online?color=%23369883)](LICENSE)
[![buymeacoffee](https://img.shields.io/badge/-buy_me_a%C2%A0coffee-gray?logo=buy-me-a-coffee)](https://www.buymeacoffee.com/axenov)
**[Документация](/docs/readme.md)** **[Документация](/docs/readme.md)**
@@ -32,6 +33,8 @@
* `php-mbstring` * `php-mbstring`
* [composer](https://getcomposer.org/) * [composer](https://getcomposer.org/)
> Для использования на php8.0 используйте версии библиотеки до 1.0.2 включительно.
## Начало работы ## Начало работы
### Подключение библиотеки ### Подключение библиотеки
@@ -65,10 +68,11 @@
Для запуска тестов необходимо перейти в корень репозитория и выполнить одну из команд: Для запуска тестов необходимо перейти в корень репозитория и выполнить одну из команд:
```bash ```bash
composer test # обычное тестирование composer psalm # статический анализ
composer coverage # тестирование с покрытием composer phpcs # синтаксический анализ
composer test # полное тестирование без покрытия
composer coverage # полное тестирование с покрытием
``` ```
После тестирования с покрытием в корне репозитория создаётся отчёт, который сохраняется в директории `.coverage`. После тестирования с покрытием в корне репозитория создаётся отчёт, который сохраняется в директории `.coverage`.
Для тестирования с покрытием необходим `php-xdebug` с параметром `xdebug.mode = coverage,...`.
<a href="https://www.buymeacoffee.com/axenov" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me A Coffee" height="41" width="174"></a>

88
composer.lock generated
View File

@@ -276,22 +276,22 @@
}, },
{ {
"name": "guzzlehttp/psr7", "name": "guzzlehttp/psr7",
"version": "2.4.3", "version": "2.5.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/guzzle/psr7.git", "url": "https://github.com/guzzle/psr7.git",
"reference": "67c26b443f348a51926030c83481b85718457d3d" "reference": "b635f279edd83fc275f822a1188157ffea568ff6"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d", "url": "https://api.github.com/repos/guzzle/psr7/zipball/b635f279edd83fc275f822a1188157ffea568ff6",
"reference": "67c26b443f348a51926030c83481b85718457d3d", "reference": "b635f279edd83fc275f822a1188157ffea568ff6",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^7.2.5 || ^8.0", "php": "^7.2.5 || ^8.0",
"psr/http-factory": "^1.0", "psr/http-factory": "^1.0",
"psr/http-message": "^1.0", "psr/http-message": "^1.1 || ^2.0",
"ralouphie/getallheaders": "^3.0" "ralouphie/getallheaders": "^3.0"
}, },
"provide": { "provide": {
@@ -311,9 +311,6 @@
"bamarni-bin": { "bamarni-bin": {
"bin-links": true, "bin-links": true,
"forward-command": false "forward-command": false
},
"branch-alias": {
"dev-master": "2.4-dev"
} }
}, },
"autoload": { "autoload": {
@@ -375,7 +372,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/guzzle/psr7/issues", "issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/2.4.3" "source": "https://github.com/guzzle/psr7/tree/2.5.0"
}, },
"funding": [ "funding": [
{ {
@@ -391,7 +388,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-10-26T14:07:24+00:00" "time": "2023-04-17T16:11:26+00:00"
}, },
{ {
"name": "illuminate/collections", "name": "illuminate/collections",
@@ -737,21 +734,21 @@
}, },
{ {
"name": "psr/http-factory", "name": "psr/http-factory",
"version": "1.0.1", "version": "1.0.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/php-fig/http-factory.git", "url": "https://github.com/php-fig/http-factory.git",
"reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" "reference": "e616d01114759c4c489f93b099585439f795fe35"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35",
"reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", "reference": "e616d01114759c4c489f93b099585439f795fe35",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=7.0.0", "php": ">=7.0.0",
"psr/http-message": "^1.0" "psr/http-message": "^1.0 || ^2.0"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
@@ -771,7 +768,7 @@
"authors": [ "authors": [
{ {
"name": "PHP-FIG", "name": "PHP-FIG",
"homepage": "http://www.php-fig.org/" "homepage": "https://www.php-fig.org/"
} }
], ],
"description": "Common interfaces for PSR-7 HTTP message factories", "description": "Common interfaces for PSR-7 HTTP message factories",
@@ -786,31 +783,31 @@
"response" "response"
], ],
"support": { "support": {
"source": "https://github.com/php-fig/http-factory/tree/master" "source": "https://github.com/php-fig/http-factory/tree/1.0.2"
}, },
"time": "2019-04-30T12:38:16+00:00" "time": "2023-04-10T20:10:41+00:00"
}, },
{ {
"name": "psr/http-message", "name": "psr/http-message",
"version": "1.0.1", "version": "1.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/php-fig/http-message.git", "url": "https://github.com/php-fig/http-message.git",
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba",
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.3.0" "php": "^7.2 || ^8.0"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "1.0.x-dev" "dev-master": "1.1.x-dev"
} }
}, },
"autoload": { "autoload": {
@@ -839,9 +836,9 @@
"response" "response"
], ],
"support": { "support": {
"source": "https://github.com/php-fig/http-message/tree/master" "source": "https://github.com/php-fig/http-message/tree/1.1"
}, },
"time": "2016-08-06T14:39:51+00:00" "time": "2023-04-04T09:50:52+00:00"
}, },
{ {
"name": "psr/log", "name": "psr/log",
@@ -5136,29 +5133,26 @@
}, },
{ {
"name": "symfony/polyfill-php80", "name": "symfony/polyfill-php80",
"version": "v1.27.0", "version": "v1.32.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-php80.git", "url": "https://github.com/symfony/polyfill-php80.git",
"reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
"reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=7.1" "php": ">=7.2"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": {
"dev-main": "1.27-dev"
},
"thanks": { "thanks": {
"name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill",
"url": "https://github.com/symfony/polyfill" "name": "symfony/polyfill"
} }
}, },
"autoload": { "autoload": {
@@ -5199,7 +5193,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" "source": "https://github.com/symfony/polyfill-php80/tree/v1.32.0"
}, },
"funding": [ "funding": [
{ {
@@ -5215,20 +5209,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-11-03T14:55:06+00:00" "time": "2025-01-02T08:10:11+00:00"
}, },
{ {
"name": "symfony/process", "name": "symfony/process",
"version": "v6.2.0", "version": "v6.4.20",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/process.git", "url": "https://github.com/symfony/process.git",
"reference": "ba6e55359f8f755fe996c58a81e00eaa67a35877" "reference": "e2a61c16af36c9a07e5c9906498b73e091949a20"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/ba6e55359f8f755fe996c58a81e00eaa67a35877", "url": "https://api.github.com/repos/symfony/process/zipball/e2a61c16af36c9a07e5c9906498b73e091949a20",
"reference": "ba6e55359f8f755fe996c58a81e00eaa67a35877", "reference": "e2a61c16af36c9a07e5c9906498b73e091949a20",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -5260,7 +5254,7 @@
"description": "Executes commands in sub-processes", "description": "Executes commands in sub-processes",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/process/tree/v6.2.0" "source": "https://github.com/symfony/process/tree/v6.4.20"
}, },
"funding": [ "funding": [
{ {
@@ -5276,7 +5270,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-11-02T09:08:04+00:00" "time": "2025-03-10T17:11:00+00:00"
}, },
{ {
"name": "symfony/service-contracts", "name": "symfony/service-contracts",
@@ -5781,7 +5775,7 @@
], ],
"aliases": [], "aliases": [],
"minimum-stability": "stable", "minimum-stability": "stable",
"stability-flags": [], "stability-flags": {},
"prefer-stable": false, "prefer-stable": false,
"prefer-lowest": false, "prefer-lowest": false,
"platform": { "platform": {
@@ -5789,6 +5783,6 @@
"ext-json": "*", "ext-json": "*",
"ext-mbstring": "*" "ext-mbstring": "*"
}, },
"platform-dev": [], "platform-dev": {},
"plugin-api-version": "2.3.0" "plugin-api-version": "2.6.0"
} }

View File

@@ -4,11 +4,11 @@
--- ---
Коллекциями являются объекты, способные хранить в себе [сущности](entity.md). Они унаследованы Коллекциями являются объекты, способные хранить в себе [сущности](entity.md).
от `Illuminate/Support/Collection` и полностью поддерживают все Они унаследованы от `Illuminate/Support/Collection` и полностью поддерживают все
[стандартные методы коллекций Laravel](https://laravel.com/docs/master/collections). [стандартные методы](https://laravel.com/docs/master/collections) коллекций Laravel.
Помимо этого, они валидируют количество и вид сущностей, которые могут хранить в себе, согласно схеме АТОЛ Онлайн API. Помимо этого, они валидируют количество и вид сущностей, которые могут хранить в себе, согласно схеме API АТОЛ Онлайн.
Коллекции ведут себя аналогично самим сущностям в части приведения к массивам и json-ификации. Коллекции ведут себя аналогично самим сущностям в части приведения к массивам и json-ификации.

View File

@@ -4,10 +4,10 @@
--- ---
Сущностями являются все классы, которые необходимы для взаимодействия с API. Они находятся в директори `src/Entities` и Сущностями являются все классы, которые необходимы для взаимодействия с API.
расширяют абстрактный класс `AtolOnline\Entities\Entity`. Они находятся в директори `src/Entities` и расширяют абстрактный класс `AtolOnline\Entities\Entity`.
Каждая сущность содержит в себе только те данные, которые необходимы согласно схемы АТОЛ Онлайн API. Каждая сущность содержит в себе только те данные, которые необходимы согласно схемы API АТОЛ Онлайн.
Ниже перечислены возможности сущностей. Ниже перечислены возможности сущностей.

View File

@@ -48,7 +48,8 @@ $monitor->setTestMode(false);
$kkts = $monitor->getAll(); $kkts = $monitor->getAll();
``` ```
В ответе будет итерируемая коллекция объектов `AtolOnline\Entities\Kkt`. Каждый из этих объектов содержит атрибуты: В ответе будет итерируемая коллекция объектов `AtolOnline\Entities\Kkt`.
Каждый из этих объектов содержит атрибуты:
```php ```php
// для примера получим первую ККТ из всех // для примера получим первую ККТ из всех

View File

@@ -1,7 +1,6 @@
# Документация к библиотеке # Документация к библиотеке
<a id="toc"></a> <a id="toc"></a>
## Содержание ## Содержание
* [Общий алгоритм](#getstarted) * [Общий алгоритм](#getstarted)
@@ -14,11 +13,10 @@
Если вы нашли опечатку или какое-то несоответствие — делайте pull-request. Если вы нашли опечатку или какое-то несоответствие — делайте pull-request.
<a id="getstarted"></a> <a id="getstarted"></a>
## Общий алгоритм ## Общий алгоритм
1. Создать документ `AtolOnline\Entities\Receipt` или `AtolOnline\Entities\Correction`, добавив в него все необходимые 1. Создать документ `AtolOnline\Entities\Receipt` или `AtolOnline\Entities\Correction`,
данные добавив в него все необходимые данные
2. Отправить документ на регистрацию: 2. Отправить документ на регистрацию:
2.1. *Необязательно:* при отправке задать `callback_url`, на который АТОЛ отправит HTTP POST о состоянии документа; 2.1. *Необязательно:* при отправке задать `callback_url`, на который АТОЛ отправит HTTP POST о состоянии документа;
2.2. *Необязательно:* при отправке задать `external_id`, чтобы присвоить свой уникальный идентификатор документа; 2.2. *Необязательно:* при отправке задать `external_id`, чтобы присвоить свой уникальный идентификатор документа;
@@ -26,8 +24,8 @@
> Если с документом был передан `callback_url`, то ответ придёт на этот самый URL. > Если с документом был передан `callback_url`, то ответ придёт на этот самый URL.
> Он должен быть обработан вашим сервисом в соответствии с бизнес-процессом. > Он должен быть обработан вашим сервисом в соответствии с бизнес-процессом.
> Если с документом **не был** передан `callback_url` **либо** callback от АТОЛа не пришёл в течение 300 секунд > Если с документом **не был** передан `callback_url` **либо** callback от АТОЛа не был получен/обработан в течение
> (5 минут), нужно запрашивать вручную по `uuid`, пришедшему от АТОЛа в ответ на регистрацию документа. > 300 секунд (5 минут), нужно запрашивать вручную по `uuid`, пришедшему от АТОЛа в ответ на регистрацию документа.
4. Проверить состояние документа: 4. Проверить состояние документа:
4.1. взять `uuid` ответа, полученного на запрос фискализации; 4.1. взять `uuid` ответа, полученного на запрос фискализации;
4.2. отправить его в запросе состояния документа. 4.2. отправить его в запросе состояния документа.