kosov / fns-check
PHP клиент API ФНС для работы с онлайн-чеками
Installs: 369
Dependents: 1
Suggesters: 0
Security: 0
Stars: 27
Watchers: 6
Forks: 16
Open Issues: 1
Requires
- php: ^5.5 || ^7.0
- ext-json: *
- php-http/client-implementation: ^1.0
- php-http/discovery: ^1.0
- php-http/httplug: ^1.0
- php-http/message-factory: ^1.0
- psr/http-message: ^1.0
Requires (Dev)
- guzzlehttp/psr7: ^1.0
- php-http/curl-client: ^1.7
- php-http/message: ^1.0
README
Возможности
Данная библиотека предоставляет возможности, аналогичные функционалу официального мобильного приложения ФНС по проверке онлайн-чеков, а именно:
- Регистрация нового пользователя;
- Авторизация пользователя;
- Восстановление пароля пользователя;
- Проверка существования чека;
- Получение детальной информации по чеку.
Установка
Установка даннной библиотеки возможна только через Composer.
Так как библиотека использует HTTP клиент по стандарту PSR-7, то вместе с библиотекой необходимо установить любой из доступных HTTP клиентов или адаптеров. Список поддерживаемых HTTP клиентов – http://docs.php-http.org/en/latest/clients.html. Подробнее об использовании можно почитать здесь.
Выполните следующую команду (если вы хотите использовать php-http/curl-client в качестве HTTP клиента)
composer require php-http/curl-client guzzlehttp/psr7 php-http/message kosov/fns-check
в директории своего проекта или добавьте
"kosov/fns-check": "^1.1"
в секцию require
файла composer.json
вашего проекта.
Быстрый старт
Ниже рассмотрен пример получения детальной информации по чеку. Все остальные примеры возможностей данной библиотеки рассмотрены здесь.
<?php require '../vendor/autoload.php'; use kosov\fnscheck\FnsCheckAuth; use kosov\fnscheck\FnsCheckApi; use kosov\fnscheck\request\CheckDetailRequest; use kosov\fnscheck\FnsCheckApiException; // Атрибуты чека $checkData = [ 'fiscalNumber' => '8710000101606774', // "ФН" в чеке 'fiscalSign' => '0211560320', // "ФП" в чеке 'fiscalDocument' => '0000136962', // "ФД" в чеке ]; // Авторизация пользователя по номеру телефона и паролю из SMS $auth = new FnsCheckAuth('+79999999999', '111111'); $fnsCheckApi = new FnsCheckApi(); try { // Выполнение запроса к API ФНС $response = $fnsCheckApi->call(new CheckDetailRequest($checkData, $auth)); // Еще один метод вызова того же API метода // $response = $fnsCheckApi->checkDetail($checkData, $auth); echo $response->getContents(); } catch (FnsCheckApiException $exception) { echo "Error: {$exception->getMessage()}"; }
Если вы работаете с данными QR-кода чека, то для формирования массива данных запроса можете использовать FnsCheckHelper::fromQRCode
:
<?php require '../vendor/autoload.php'; use kosov\fnscheck\FnsCheckHelper; // Строка данных, полученных из QR-кода $qrCodeString = 't=20180812T2008&s=76.40&fn=8710000101375795&i=4901&fp=3307350167&n=1'; // Преобразование данных из формата ФНС в формат данных запроса $normalizedData = FnsCheckHelper::fromQRCode($qrCodeString); // $normalizedData может быть сохранена для дальнейшего использования в качестве аргумента функций запросов var_dump($normalizedData);
Возможные проблемы и их решения
При получении детальной информации по чеку вы можете получить ошибку illegal public api usage
. Чтобы этого не происходило, необходимо выполнять запросы в следующем порядке:
- Отправляем запрос на проверку существования чека. Если все хорошо, то получим код ответа сервера 204.
- Отправляем запрос на получение детальной информации по чеку. Если все хорошо, то получим код ответа сервера 202.
- Отправляем еще один запрос на получение детальной информации по чеку. Вместе с кодом ответа сервера 200 вы получите json с данными чека.
Лицензия
Библиотека доступна на условиях лицензии MIT.