Мелкофиксы по документации и roadmap

This commit is contained in:
Anthony Axenov 2020-06-07 19:39:26 +08:00
parent 9ed999f9fc
commit 8d9f218280
5 changed files with 39 additions and 11 deletions

View File

@ -26,8 +26,6 @@
- [ ] Тесты для регистрации документа возврата расхода - [ ] Тесты для регистрации документа возврата расхода
- [ ] Тесты для регистрации документа коррекции расхода - [ ] Тесты для регистрации документа коррекции расхода
- [ ] Вообще все расчёты вообще везде должны быть строго в копейках. Рубли (дроби) должны быть только в JSON-представлениях - [ ] Вообще все расчёты вообще везде должны быть строго в копейках. Рубли (дроби) должны быть только в JSON-представлениях
- [ ] Валидатор схемы для документов прихода, возврата прихода, расхода, возврата расхода
- [ ] Валидатор схемы для документов коррекции прихода, коррекции расхода
## Поддержка методов API (регистрация документов) ## Поддержка методов API (регистрация документов)
@ -65,3 +63,18 @@
- [x] Пoддержка `correction.vats` (обязательный) - [x] Пoддержка `correction.vats` (обязательный)
- [x] Пoддержка `correction.correction_info` (обязательный) - [x] Пoддержка `correction.correction_info` (обязательный)
- [x] Пoддержка `correction.cashier` - [x] Пoддержка `correction.cashier`
## Не будут реализовываться
### Валидация генерируемых документов согласно актуальной схемы API
- Валидатор схемы для документов прихода, возврата прихода, расхода, возврата расхода
- Валидатор схемы для документов коррекции прихода, коррекции расхода
1. Отказ обусловлен скоростью выполнения.
Базовая реализация, которая была начата, подразумевала синглтон, который кешировал однажды полученную схему.
Практика показала, что этот единичный запрос может существенно тормозить работу сервера и в течение долгого времени
не отдавать ответ клиенту.
2. Такая валидация подходит в том случае, если бы при разработке использовалась концепция IoC.
До версии пакета 2.0.0 таких серьёзных имзенений не планируется.

View File

@ -46,10 +46,10 @@ $customer = (new AtolOnline\Entities\Client())
* `AtolEmailValidateException` (если email невалиден). * `AtolEmailValidateException` (если email невалиден).
Метод `setInn()` чистит входную строку от всех символов, кроме цифр, и проверяет длину (либо 10, либо 12 цифр). Метод `setInn()` чистит входную строку от всех символов, кроме цифр, и проверяет длину (либо 10, либо 12 цифр).
Выбрасывает исключение `AtolInnWrongLengthException` (если длина строка ИНН некорректна). Выбрасывает исключение `AtolInnWrongLengthException` (если длина ИНН некорректна).
Метод `setName()` проверяет входную строку на длину (до 256 символов). Метод `setName()` проверяет входную строку на длину (до 256 символов).
Выбрасывает исключение `AtolNameTooLongException` (если слишком длинное наименование). Выбрасывает исключение `AtolNameTooLongException` (если слишком длинное имя).
Метод `setPhone()` чистит входную строку от всех символов, кроме цифр и знака `+`, и проверяет длину (до 64 символов). Метод `setPhone()` чистит входную строку от всех символов, кроме цифр и знака `+`, и проверяет длину (до 64 символов).
Выбрасывает исключение `AtolPhoneTooLongException` (если слишком длинный номер телефона). Выбрасывает исключение `AtolPhoneTooLongException` (если слишком длинный номер телефона).

View File

@ -46,7 +46,7 @@ $company = (new AtolOnline\Entities\Company())
* `AtolEmailValidateException` (если email невалиден). * `AtolEmailValidateException` (если email невалиден).
Метод `setInn()` чистит входную строку от всех символов, кроме цифр, и проверяет длину (либо 10, либо 12 цифр). Метод `setInn()` чистит входную строку от всех символов, кроме цифр, и проверяет длину (либо 10, либо 12 цифр).
Выбрасывает исключение `AtolInnWrongLengthException` (если длина строка ИНН некорректна). Выбрасывает исключение `AtolInnWrongLengthException` (если длина ИНН некорректна).
Метод `setPaymentAddress()` проверяет длину (до 256 символов). Метод `setPaymentAddress()` проверяет длину (до 256 символов).
Выбрасывает исключение `AtolPaymentAddressTooLongException` (если слишком длинный адрес места расчётов). Выбрасывает исключение `AtolPaymentAddressTooLongException` (если слишком длинный адрес места расчётов).

View File

@ -164,4 +164,4 @@ $json_array = $doc->jsonSerialize();
--- ---
[Вернуться к содержанию](readme.md) [Вернуться к содержанию](readme.md)

View File

@ -49,6 +49,7 @@ $kkt->getGroup();
Эти параметры нужно задать [объекту компании](/docs/company.md), который будет передаваться в документах через эту ККТ. Эти параметры нужно задать [объекту компании](/docs/company.md), который будет передаваться в документах через эту ККТ.
<a name='testmode'></a>
## Тестовый режим ## Тестовый режим
На самом деле, в АТОЛ Онлайн нет понятия *тестовая операция* или чего-то в этом духе. На самом деле, в АТОЛ Онлайн нет понятия *тестовая операция* или чего-то в этом духе.
@ -85,10 +86,10 @@ $kkt->setTestMode(false); // выключить
3. пп. 1 и 2 в любом случае скажутся на ваших финансовых отчётах; 3. пп. 1 и 2 в любом случае скажутся на ваших финансовых отчётах;
4. вся ответственность за пп. 1-3 и последствия ложится только на вас. 4. вся ответственность за пп. 1-3 и последствия ложится только на вас.
## Авторизация ККТ ## Авторизация на ККТ
Перед первым запросом на ККТ происходит авторизация на сервере по логину и паролю. Перед первым запросом на ККТ происходит аутентификация на сервере по логину и паролю.
В ответ приходит авторизационный токен, срок жизни коего равен 24 часам. В ответ приходит авторизационный токен, срок жизни коего равен **24 часам**.
После первой успешной операции возможно получить этот токен следующим образом: После первой успешной операции возможно получить этот токен следующим образом:
```php ```php
@ -98,7 +99,7 @@ $kkt->getAuthToken(); // вернёт строку длиной 128 символ
Этот токен можно сохранить и переиспользовать в течение всего срока его жизни. Этот токен можно сохранить и переиспользовать в течение всего срока его жизни.
Спустя это время следует получить новый токен. Спустя это время следует получить новый токен.
Однажды полученный токен, то для дальнейшего использования следует указывать его следующим образом: Для дальнейшего использования однажды полученный токен следует указывать следующим образом:
```php ```php
$kkt->setAuthToken($token_string); $kkt->setAuthToken($token_string);
@ -153,6 +154,9 @@ $result = $kkt->sellCorrection($document);
$result = $kkt->buyCorrection($document); $result = $kkt->buyCorrection($document);
``` ```
Любой из перечисленных выше шести методов может выбросить исключение `AtolAuthFailedException` при ошибке
аутентификации или авторизации.
### Собственный идентификатор документа ### Собственный идентификатор документа
Каждый документ, переданный на ККТ для регистрации, всегда имеет свой идентификатор, абсолютно уникальный среди всех Каждый документ, переданный на ККТ для регистрации, всегда имеет свой идентификатор, абсолютно уникальный среди всех
@ -185,6 +189,17 @@ $kkt->setCallbackUrl('http://example.com/process-kkt-result');
$kkt->getCallbackUrl(); $kkt->getCallbackUrl();
``` ```
Метод `setCallbackUrl()` проверяет входную строку на длину (до 256 символов) и валидность формата url по
регулярному выражению:
```
^http(s?)\:\/\/[0-9a-zA-Zа-яА-Я]([-.\w]*[0-9a-zA-Zа-яА-Я])*(:(0-9)*)*(\/?)([a-zAZ0-9а-яА-Я\-\.\?\,\'\/\\\+&=%$#_]*)?$
```
Выбрасывает исключения:
* `AtolCallbackUrlTooLongException` (если слишком длинный url);
* `AtolInvalidCallbackUrlException` (если url невалиден).
## Обработка результата регистрации ## Обработка результата регистрации
Методы `sell()`, `sellRefund()`, `sellCorrection()`, `buy()`, `buyRefund()` и `buyCorrection()` возвращают объект `AtolOnline\Api\KktResponse`. Методы `sell()`, `sellRefund()`, `sellCorrection()`, `buy()`, `buyRefund()` и `buyCorrection()` возвращают объект `AtolOnline\Api\KktResponse`.
@ -194,7 +209,7 @@ $kkt->getCallbackUrl();
Этот объект содержит в себе HTTP-код ответа, массив заголовков и JSON-декодированные данные тела ответа. Этот объект содержит в себе HTTP-код ответа, массив заголовков и JSON-декодированные данные тела ответа.
```php ```php
$result = $kkt->getLastResponse(); $result = $kkt->getLastResponse(); // вернёт последний ответ от API
$headers = $result->getHeaders(); // вернёт заголовки $headers = $result->getHeaders(); // вернёт заголовки
$code = $result->getCode(); // вернёт код ответа $code = $result->getCode(); // вернёт код ответа
$body = $result->getContent(); // вернёт JSON-декодированное тело ответа $body = $result->getContent(); // вернёт JSON-декодированное тело ответа