PHPackages                             igorbunov/checkbox-in-ua-php-sdk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. igorbunov/checkbox-in-ua-php-sdk

ActiveLibrary

igorbunov/checkbox-in-ua-php-sdk
================================

PHP SDK for integration with checkbox.in.ua api

1.3.11(3mo ago)2319.4k↓20%21[4 PRs](https://github.com/igorbunov/checkbox-in-ua-php-sdk/pulls)MITPHPPHP &gt;=8.0CI passing

Since Nov 4Pushed 3mo ago4 watchersCompare

[ Source](https://github.com/igorbunov/checkbox-in-ua-php-sdk)[ Packagist](https://packagist.org/packages/igorbunov/checkbox-in-ua-php-sdk)[ RSS](/packages/igorbunov-checkbox-in-ua-php-sdk/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (5)Versions (36)Used By (0)

[![GitHub CI](https://github.com/igorbunov/checkbox-in-ua-php-sdk/workflows/CI/badge.svg)](https://github.com/igorbunov/checkbox-in-ua-php-sdk/workflows/CI/badge.svg)[![Packagist](https://camo.githubusercontent.com/c44ca7e8f40bf6e24d0d22c946d1d3ee0b5fe3948b026d68379e0ecf065e09dc/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7061636b6167652d69676f7262756e6f762f636865636b626f782d2d696e2d2d75612d2d7068702d2d73646b2d626c75652e7376673f7374796c653d666c61742d737175617265)](https://github.com/igorbunov/checkbox-in-ua-php-sdk)[![Latest Version on Packagist](https://camo.githubusercontent.com/de56ccb8480a473abc94c0605dbe3508c5f4bdd6b7eab45f6b86f3c1c004d4a6/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f69676f7262756e6f762f636865636b626f782d696e2d75612d7068702d73646b2e7376673f7374796c653d666c61742d737175617265)](https://github.com/igorbunov/checkbox-in-ua-php-sdk)[![Software License](https://camo.githubusercontent.com/55c0218c8f8009f06ad4ddae837ddd05301481fcf0dff8e0ed9dadda8780713e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](LICENSE)[![PHP >=8.0](https://camo.githubusercontent.com/441cc188e3c606e67d0eef3150b7db3ec83b10dd005284d80c88694d63d60d84/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d2533453d5f382e302d6f72616e67652e7376673f7374796c653d666c61742d737175617265)](https://github.com/igorbunov/checkbox-in-ua-php-sdk)[![Total Downloads](https://camo.githubusercontent.com/a6c1779afe9b6200b51dc2ab8c06442fe6bfe1eb71da8bd462fc964f2e27daa3/68747470733a2f2f706f7365722e707567782e6f72672f69676f7262756e6f762f636865636b626f782d696e2d75612d7068702d73646b2f646f776e6c6f616473)](https://github.com/igorbunov/checkbox-in-ua-php-sdk)

checkbox-in-ua-php-sdk
======================

[](#checkbox-in-ua-php-sdk)

### PHP SDK для работы с Checkbox (Украина)

[](#php-sdk-для-работы-с-checkbox-украина)

##### Примечание:

[](#примечание)

> В данном sdk реализованы только функции онлайн режима (оффлайн не реализован)

#### Официальная документация:

[](#официальная-документация)

[https://docs.google.com/document/d/1Zhkc4OljKjea\_235YafVvZunkWSp6TCAKeckhgl8t2w/edit](https://docs.google.com/document/d/1Zhkc4OljKjea_235YafVvZunkWSp6TCAKeckhgl8t2w/edit)

#### Установка:

[](#установка)

```
composer require igorbunov/checkbox-in-ua-php-sdk
```

#### Настройка:

[](#настройка)

```
require_once 'vendor/autoload.php';
```

##### Настройка конфига:

[](#настройка-конфига)

> адрес продакшен сервера
> адрес тестового сервера
> текущая версия API - v1

```
$config = new \igorbunov\Checkbox\Config([
    \igorbunov\Checkbox\Config::API_URL => 'https://dev-api.checkbox.in.ua/api/v1',
    \igorbunov\Checkbox\Config::LOGIN => 'логин кассира',
    \igorbunov\Checkbox\Config::PASSWORD => 'пароль кассира', //or
    \igorbunov\Checkbox\Config::PINCODE => 02301230440,
    \igorbunov\Checkbox\Config::LICENSE_KEY => 'ключ лицензии кассы',
    \igorbunov\Checkbox\Config::HEADER_CLIENT_NAME => 'Igorbunov Custom SDK', // не обязательный (Igorbunov Custom SDK по умолчанию)
    \igorbunov\Checkbox\Config::HEADER_CLIENT_VERSION => '1.3.7', // не обязательный
]);
```

##### Логин кассира:

[](#логин-кассира)

```
$api = new \igorbunov\Checkbox\CheckboxJsonApi($config);
$api->signInCashier();
```

##### Логаут кассира:

[](#логаут-кассира)

```
$api->signOutCashier();
```

##### Ошибки (Exceptions):

[](#ошибки-exceptions)

```
\igorbunov\Checkbox\Errors\InvalidCredentials - не верные данные логина или пароля
```

```
\igorbunov\Checkbox\Errors\EmptyResponse - пустой ответ
```

```
\igorbunov\Checkbox\Errors\Validation - ошибка валидации (есть детальные. данные $err->getDetail())
```

```
\igorbunov\Checkbox\Errors\NoActiveShift - нет активной смены
```

```
\igorbunov\Checkbox\Errors\AlreadyOpenedShift - смена уже открыта
```

```
\Exception  - стандартная ошибка
```

#### Основные методы:

[](#основные-методы)

##### profile (касир):

[](#profile-касир)

```
$api->getCashierProfile() : \igorbunov\Checkbox\Models\Cashier\Cashier // возвращает профиль кассира
```

##### shifts (смены):

[](#shifts-смены)

```
$api->getCashierShift() : \igorbunov\Checkbox\Models\Shifts\Shift // возвращает текущую смену кассира
```

```
$api->getShift('ид смены') : \igorbunov\Checkbox\Models\Shifts\Shift // возвращает смену по ид
```

```
$api->getShifts() : \igorbunov\Checkbox\Models\Shifts\Shifts // возвращает смены
```

или

```
$api->getShifts(
    new \igorbunov\Checkbox\Models\Shifts\ShiftsQueryParams(
        [
            \igorbunov\Checkbox\Models\Shifts\ShiftsQueryParams::STATUS_CLOSED,
            \igorbunov\Checkbox\Models\Shifts\ShiftsQueryParams::STATUS_OPENED
        ], // статусы смен
        false, // desc - сортировка (false or true)
        2, // limit
        0 // offset
    )
): \igorbunov\Checkbox\Models\Shifts\Shifts // возвращает смены с учетом фильтра
```

```
$api->createShift() : \igorbunov\Checkbox\Models\Shifts\CreateShift // создает смену
```

```
$api->closeShift() : \igorbunov\Checkbox\Models\Shifts\CloseShift // закрывает смену
```

##### cash registers (пРРО):

[](#cash-registers-прро)

```
$api->getCashRegisters() : \igorbunov\Checkbox\Models\CashRegisters\CashRegisters // возвращает кассовые регистраторы
```

или

```
$api->getCashRegisters(
    new \igorbunov\Checkbox\Models\CashRegisters\CashRegistersQueryParams(
        true, // inUse - используется или нет (true or false)
        3, // limit
        0 // offset
    )
) : \igorbunov\Checkbox\Models\CashRegisters\CashRegisters // возвращает кассовые регистраторы по фильтру
```

```
$api->getCashRegister('ид кассы') : \igorbunov\Checkbox\Models\CashRegisters\CashRegister // возвращает кассу по айди
```

```
$api->getCashRegisterInfo() : \igorbunov\Checkbox\Models\CashRegisters\CashRegisterInfo // возвращает информацию текущей кассы
```

##### taxes (налоги):

[](#taxes-налоги)

```
$api->getAllTaxes() : \igorbunov\Checkbox\Models\Receipts\Taxes\GoodTaxes // возвращает все налоги
```

##### transactions (транзакции):

[](#transactions-транзакции)

```
$api->getTransactions(
    new \igorbunov\Checkbox\Models\Transactions\TransactionsQueryParams(
        [
            \igorbunov\Checkbox\Models\Transactions\TransactionsQueryParams::STATUS_CREATED,
            \igorbunov\Checkbox\Models\Transactions\TransactionsQueryParams::STATUS_DONE,
            \igorbunov\Checkbox\Models\Transactions\TransactionsQueryParams::STATUS_SIGNED
        ], // статусы транзакции
        [
            \igorbunov\Checkbox\Models\Transactions\TransactionsQueryParams::TYPE_RECEIPT,
            \igorbunov\Checkbox\Models\Transactions\TransactionsQueryParams::TYPE_SHIFT_OPEN,
            \igorbunov\Checkbox\Models\Transactions\TransactionsQueryParams::TYPE_Z_REPORT
        ], // типы транзакций
        2, // limit
        0 // offset
    )
) : \igorbunov\Checkbox\Models\Transactions\Transactions // возвращает транзакции по фильтру
```

```
$api->getTransaction('ид транзакции') : \igorbunov\Checkbox\Models\Transactions\Transaction // возвращает транзакцию по айди
```

```
$api->updateTransaction(
    'ид транзакции',
    base64_encode('request_signature')
) : \igorbunov\Checkbox\Models\Transactions\Transaction // меняет request_signature у транзакции, работает только если у транзакции статус PENDING
```

##### reports (отчеты):

[](#reports-отчеты)

```
$api->createXReport() : \igorbunov\Checkbox\Models\Shifts\ZReport // создает х отчет
```

```
$api->getReport('ид отчета') : \igorbunov\Checkbox\Models\Shifts\ZReport // возвращает данные отчета по айди
```

```
$api->getReportText('ид отчета') : string // возвращает данные отчета по айди в виде текста
```

или

```
$api->getReportText('ид отчета', 60) : string // возвращает данные отчета по айди в виде текста, с указанием ширины текста
```

```
$api->getPeriodicalReport(
    new \igorbunov\Checkbox\Models\Reports\PeriodicalReportQueryParams(
        '2020-10-27 00:00:00', // дата с
        '2020-11-04 13:15:00', // дата по
        60 // ширина текста
    )
) : string // возвращает данные отчета за период по фильру
```

```
$api->getReports(
    new \igorbunov\Checkbox\Models\Reports\ReportsQueryParams(
        '2020-10-27 00:00:00', // дата с
        '2020-11-04 13:15:00', // дата по
        [], // массив ид смен
        false, // is_z_report (true or false)
        true, // desc - сортировка (false or true)
        3, // limit
        0 // offset
    )
) : \igorbunov\Checkbox\Models\Reports\Reports // возвращает отчеты по фильтру
```

##### receipts (чеки):

[](#receipts-чеки)

```
$api->getReceipts() : \igorbunov\Checkbox\Models\Receipts\Receipts // возвращает чеки
```

```
$api->getReceipts(
    new \igorbunov\Checkbox\Models\Receipts\ReceiptsQueryParams(
        '', // fiscal code
        '', // serial
        false, // desc - сортировка (false or true)
        2, // limit
        0 // offset
    )
) : \igorbunov\Checkbox\Models\Receipts\Receipts // возвращает чеки по фильтру
```

```
$api->getReceipt('ид чека') : \igorbunov\Checkbox\Models\Receipts\Receipt // возвращает чек по айди
```

```
$api->getReceiptPdf('ид чека') : pdf // возвращает чек по айди в виде пдф
```

```
$api->getReceiptHtml('ид чека') : string // возвращает чек по айди в виде html
```

```
$api->getReceiptText('ид чека') : string // возвращает чек по айди в виде текста
```

```
$api->getReceiptQrCodeImage('ид чека') : string // возвращает чек по айди в виде qr-кода
```

или

```
// пример с отображением qr-кода
$rawImageContent = $api->getReceiptQrCodeImage('ид чека');
echo '';
```

###### чек продажи:

[](#чек-продажи)

```
$receipt = new \igorbunov\Checkbox\Models\Receipts\SellReceipt(
    'Вася Пупкин', // кассир
    'Отдел продаж', // отдел
    new \igorbunov\Checkbox\Models\Receipts\Goods\Goods(
        [
            new \igorbunov\Checkbox\Models\Receipts\Goods\GoodItemModel( // товар 1
                new \igorbunov\Checkbox\Models\Receipts\Goods\GoodModel(
                    'vm-123', // good_id
                    50 * 100, // 50 грн
                    'Биовак' // название товара
                ),
                1 * 1000 // кол-во товара  1 шт
            ),
            new \igorbunov\Checkbox\Models\Receipts\Goods\GoodItemModel( // товар 2
                new \igorbunov\Checkbox\Models\Receipts\Goods\GoodModel(
                    'vm-124', // good_id
                    20 * 100, // 20 грн
                    'Биовак 2' // название товара
                ),
                2 * 1000 // кол-во товара 2 шт
            )
        ]
    ),
    new \igorbunov\Checkbox\Models\Receipts\Delivery(['test@mail.com'], 'phone'), // кому отправлять чек по почте или телефону
    new \igorbunov\Checkbox\Models\Receipts\Payments\Payments([
        new \igorbunov\Checkbox\Models\Receipts\Payments\CardPaymentPayload( // безналичная оплата
            40 * 100 // 40 грн
        ),
        new \igorbunov\Checkbox\Models\Receipts\Payments\CashPaymentPayload( // наличная оплата
            50 * 100 // 50 грн
        )
    ])
);

$api->createSellReceipt($receipt): \igorbunov\Checkbox\Models\Receipts\Receipt; // выполняем оплату
```

более сложная оплата:

```
$allTaxes = $api->getAllTaxes(); // получили все налоги
$tax = $allTaxes->getTaxByLabel('Акцизний збір'); // получили один налог по лейбл
$goodTaxes = $allTaxes->getTaxesByLabel('ПДВ'); // получили массив налогов по лейбл
$taxCodes = [];

// подготавливаем массив кодов налогов
foreach ($goodTaxes->results as $goodTax) {
    $taxCodes[] = $goodTax->code;
}

$receipt = new \igorbunov\Checkbox\Models\Receipts\SellReceipt(
    'Вася Пупкин', // имя кассира
    'Отдел продаж', // отдел
    new \igorbunov\Checkbox\Models\Receipts\Goods\Goods( // товары
        [
            new \igorbunov\Checkbox\Models\Receipts\Goods\GoodItemModel(
                new \igorbunov\Checkbox\Models\Receipts\Goods\GoodModel(
                    'vm-123', // good_id айди товара
                    5000, // 50 грн  цена 100 = 1 грн
                    'Биовак', // название
                    '5р47ле78675е3', // баркод
                    'хидер', // хидер
                    'футер', // футер
                    '', // ktzed
                    $goodTaxes // налоги товара
                ),
                1000, // кол-во 1000 = 1 шт
                new \igorbunov\Checkbox\Models\Receipts\Discounts\Discounts( // скидки или надбавки
                    [
                        new \igorbunov\Checkbox\Models\Receipts\Discounts\DiscountModel(
                            \igorbunov\Checkbox\Models\Receipts\Discounts\DiscountModel::TYPE_DISCOUNT, // скидка или надбавка
                            \igorbunov\Checkbox\Models\Receipts\Discounts\DiscountModel::MODE_VALUE, // по значению или по проценту
                            100, // 1 грн  сумма скидки/надбавки  100 = 1 грн
                            0, // сумма (не используется в данном sdk)
                            $tax->code, // код налога (подготовили выше)
                            $taxCodes, // массив кодов налога (подготовили выше)
                            'one good discount' // название
                        )
                    ]
                ),
                $allTaxes->getTaxesByLabel('Акцизний збір'), // налоги товара
                false, // возврат товара (false or true)
                0, // сумма (не используется в данном sdk)
                '' // айди товара (только если вы загружали список товарв (не используется в данном sdk))
            )
        ]
    ),
    new \igorbunov\Checkbox\Models\Receipts\Delivery(['test@mail.com'], 'phone'), // кому отправлять чек по почте или телефону
    new \igorbunov\Checkbox\Models\Receipts\Payments\Payments([ // оплаты
        new \igorbunov\Checkbox\Models\Receipts\Payments\CardPaymentPayload( // безналичная оплата
            400, // сумма оплаты 400 = 4 грн
            'beznalichka', // текст оплаты
            0, // code - не знаю для чего (видимо пин код карты)
            '0000 0000 0000 0000' // номер карты
        ),
        new \igorbunov\Checkbox\Models\Receipts\Payments\CashPaymentPayload( // наличная оплата
            4300, // сумма оплаты 4300 = 43 грн
            'nalichka' // текст оплаты
        )
    ]),
    new \igorbunov\Checkbox\Models\Receipts\Discounts\Discounts( // скидки/надбавки на весь чек
        [
            new \igorbunov\Checkbox\Models\Receipts\Discounts\DiscountModel(
                \igorbunov\Checkbox\Models\Receipts\Discounts\DiscountModel::TYPE_DISCOUNT, // скидка или надбавка
                \igorbunov\Checkbox\Models\Receipts\Discounts\DiscountModel::MODE_VALUE, // по значению или по проценту
                200, // 2 грн  сумма скидки/надбавки  200 = 2 грн
                0, // сумма (не используется в данном sdk)
                $tax->code, // код налога (подготовили выше)
                $taxCodes, // массив кодов налога (подготовили выше)
                'total discount' // название
            )
        ]
    ),
    'check header', // чек хидер
    'check footer', // чек футер
    '45435h543twrege' // баркод
);

$saleReceiptResult = $api->createSellReceipt($receipt): \igorbunov\Checkbox\Models\Receipts\Receipt; // выполняем оплату
```

еще пример

```
$allTaxes = $api->getAllTaxes();
$tax = $allTaxes->getTaxByLabel('Акцизний збір');
$goodTaxes = $allTaxes->getTaxesByLabel('ПДВ');
$taxCodes = [];

foreach ($goodTaxes->results as $goodTax) {
    $taxCodes[] = $goodTax->code;
}

$receipt = new \igorbunov\Checkbox\Models\Receipts\SellReceipt(
    'Вася Пупкин',
    'Отдел продаж',
    new \igorbunov\Checkbox\Models\Receipts\Goods\Goods(
        [
            new \igorbunov\Checkbox\Models\Receipts\Goods\GoodItemModel(
                new \igorbunov\Checkbox\Models\Receipts\Goods\GoodModel(
                    'vm-123', // good_id
                    5000, // 50 грн
                    'Биовак',
                    '',
                    '',
                    '',
                    '',
                    $goodTaxes
                ),
                1000,
                new \igorbunov\Checkbox\Models\Receipts\Discounts\Discounts(
                    [
                        new \igorbunov\Checkbox\Models\Receipts\Discounts\DiscountModel(
                            \igorbunov\Checkbox\Models\Receipts\Discounts\DiscountModel::TYPE_DISCOUNT,
                            \igorbunov\Checkbox\Models\Receipts\Discounts\DiscountModel::MODE_VALUE,
                            100, // 1 грн
                            0,
                            $tax->code,
                            $taxCodes,
                            'моя скидка'
                        )
                    ]
                ),
                $allTaxes->getTaxesByLabel('Акцизний збір'),
                false,
                0,
                ''
            ),
            new \igorbunov\Checkbox\Models\Receipts\Goods\GoodItemModel(
                new \igorbunov\Checkbox\Models\Receipts\Goods\GoodModel(
                    'vm-124', // good_id
                    2000, // 20 грн
                    'Биовак 2',
                    '',
                    '',
                    '',
                    '',
                    $goodTaxes
                ),
                2000, // 2 шт
                new \igorbunov\Checkbox\Models\Receipts\Discounts\Discounts(
                    [
                        new \igorbunov\Checkbox\Models\Receipts\Discounts\DiscountModel(
                            \igorbunov\Checkbox\Models\Receipts\Discounts\DiscountModel::TYPE_EXTRA_CHARGE,
                            \igorbunov\Checkbox\Models\Receipts\Discounts\DiscountModel::MODE_VALUE,
                            200, // 2 грн
                            0,
                            $tax->code,
                            $taxCodes,
                            'моя надбавка'
                        )
                    ]
                ),
                $allTaxes->getTaxesByLabel('Акцизний збір'),
                false,
                0,
                ''
            )
        ]
    ),
    'admin@gmail.com',
    new \igorbunov\Checkbox\Models\Receipts\Payments\Payments([
        new \igorbunov\Checkbox\Models\Receipts\Payments\CardPaymentPayload(
            4700
        ),
        new \igorbunov\Checkbox\Models\Receipts\Payments\CashPaymentPayload(
            4700
        )
    ]),
    new \igorbunov\Checkbox\Models\Receipts\Discounts\Discounts(
        [
            new \igorbunov\Checkbox\Models\Receipts\Discounts\DiscountModel(
                \igorbunov\Checkbox\Models\Receipts\Discounts\DiscountModel::TYPE_EXTRA_CHARGE,
                \igorbunov\Checkbox\Models\Receipts\Discounts\DiscountModel::MODE_VALUE,
                200, // 2 грн
                0,
                $tax->code,
                $taxCodes,
                'общая надбавка'
            )
        ]
    )
);

$api->createSellReceipt($receipt): \igorbunov\Checkbox\Models\Receipts\Receipt;
```

```
$api->createServiceReceipt(
    new \igorbunov\Checkbox\Models\Receipts\ServiceReceipt(
        new \igorbunov\Checkbox\Models\Receipts\Payments\CashPaymentPayload(5100)
    )
): \igorbunov\Checkbox\Models\Receipts\Receipt // создаем чек сервисного внесения денег (наличкой)
```

```
$api->createServiceReceipt(
    new \igorbunov\Checkbox\Models\Receipts\ServiceReceipt(
        new \igorbunov\Checkbox\Models\Receipts\Payments\CardPaymentPayload(1000)
    )
): \igorbunov\Checkbox\Models\Receipts\Receipt // создаем чек сервисного внесения денег (картой)
```

```
$api->createServiceReceipt(
    new \igorbunov\Checkbox\Models\Receipts\ServiceReceipt(
        new new \igorbunov\Checkbox\Models\Receipts\Payments\CashPaymentPayload(-5100)
    )
): \igorbunov\Checkbox\Models\Receipts\Receipt // создаем чек сервисного вынесения денег (наличкой) (знак минус)
```

```
$api->createServiceReceipt(
    new \igorbunov\Checkbox\Models\Receipts\ServiceReceipt(
        new new \igorbunov\Checkbox\Models\Receipts\Payments\CardPaymentPayload(-1000)
    )
): \igorbunov\Checkbox\Models\Receipts\Receipt // создаем чек сервисного вынесения денег (картой) (знак минус)
```

##### Рекомендации:

[](#рекомендации)

> все операции оборачивать в try cache

```
try {

    // тут все делаем

} catch (\igorbunov\Checkbox\Errors\InvalidCredentials $err) {
    var_dump('creds err', $err->getMessage());
}  catch (\igorbunov\Checkbox\Errors\EmptyResponse $err) {
    var_dump('empty response', $err->getMessage(), $err->getTraceAsString());
} catch (\igorbunov\Checkbox\Errors\Validation $err) {
    var_dump('valid err', $err->getMessage());
    var_dump('error detail', $err->getDetail());
} catch (\igorbunov\Checkbox\Errors\NoActiveShift $err) {
    var_dump('no shift', $err->getMessage());
} catch (\igorbunov\Checkbox\Errors\AlreadyOpenedShift $err) {
    var_dump('opened shift', $err->getMessage());
} catch (\Exception $err) {
    var_dump('default err', $err->getMessage());
}
```

##### подключение всех неймспейсов из примеров:

[](#подключение-всех-неймспейсов-из-примеров)

```
use igorbunov\Checkbox\CheckboxJsonApi;
use igorbunov\Checkbox\Config;
use igorbunov\Checkbox\Errors\InvalidCredentials;
use igorbunov\Checkbox\Errors\Validation;
use igorbunov\Checkbox\Errors\NoActiveShift;
use igorbunov\Checkbox\Errors\AlreadyOpenedShift;
use igorbunov\Checkbox\Errors\EmptyResponse;
use igorbunov\Checkbox\Models\CashRegisters\CashRegistersQueryParams;
use igorbunov\Checkbox\Models\Shifts\ShiftsQueryParams;
use igorbunov\Checkbox\Models\Receipts\ReceiptsQueryParams;
use igorbunov\Checkbox\Models\Receipts\Discounts\Discounts;
use igorbunov\Checkbox\Models\Receipts\Discounts\DiscountModel;
use igorbunov\Checkbox\Models\Receipts\SellReceipt;
use igorbunov\Checkbox\Models\Receipts\Payments\Payments;
use igorbunov\Checkbox\Models\Receipts\Payments\CardPaymentPayload;
use igorbunov\Checkbox\Models\Receipts\Payments\CashPaymentPayload;
use igorbunov\Checkbox\Models\Receipts\ServiceReceipt;
use igorbunov\Checkbox\Models\Reports\PeriodicalReportQueryParams;
use igorbunov\Checkbox\Models\Reports\ReportsQueryParams;
use igorbunov\Checkbox\Models\Transactions\TransactionsQueryParams;
use igorbunov\Checkbox\Models\Receipts\Goods\Goods;
use igorbunov\Checkbox\Models\Receipts\Goods\GoodItemModel;
use igorbunov\Checkbox\Models\Receipts\Goods\GoodModel;
```

Для котрибьюторов
=================

[](#для-котрибьюторов)

For run all tests

```
make all
```

or connect to terminal

```
make exec
```

or use built in php server

```
# start server on 8080 port
make serve
# custom port 8081
make serve PORT=8081
```

*Dafault php version is 8.0*. Use PHP\_VERSION= for using custom version.

```
make all PHP_VERSION=8.0
```

all commands

```
# security check
make security
# composer install
make install
# composer install with --no-dev
make install-no-dev
# check code style
make style
# run static analyze tools
make static-analyze
# run unit tests
make unit
#  check coverage
make coverage
```

Without Docker

```
#validate composer json
composer check-composer

#static analyzes and codestyle
composer static

#run unit tests
composer unit-tests

#run all tests

composer all-tests

```

###  Health Score

55

—

FairBetter than 98% of packages

Maintenance79

Regular maintenance activity

Popularity39

Limited adoption so far

Community20

Small or concentrated contributor base

Maturity70

Established project with proven stability

 Bus Factor1

Top contributor holds 68.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~59 days

Recently: every ~86 days

Total

33

Last Release

109d ago

PHP version history (3 changes)1.0.0PHP &gt;=7.2.0

1.2.12PHP &gt;=7.4 || ^8.0.2

1.3.1PHP &gt;=8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/a9261043d8e539a0355605c31776d113e78b419c206ad9cd86b012118963579b?d=identicon)[igorbunov](/maintainers/igorbunov)

---

Top Contributors

[![igorbunov](https://avatars.githubusercontent.com/u/472284?v=4)](https://github.com/igorbunov "igorbunov (80 commits)")[![MakarovIgor](https://avatars.githubusercontent.com/u/28019844?v=4)](https://github.com/MakarovIgor "MakarovIgor (18 commits)")[![otis22](https://avatars.githubusercontent.com/u/378373?v=4)](https://github.com/otis22 "otis22 (8 commits)")[![vldmr-k](https://avatars.githubusercontent.com/u/2142055?v=4)](https://github.com/vldmr-k "vldmr-k (4 commits)")[![ezoterik](https://avatars.githubusercontent.com/u/1498377?v=4)](https://github.com/ezoterik "ezoterik (3 commits)")[![weirdan](https://avatars.githubusercontent.com/u/57403?v=4)](https://github.com/weirdan "weirdan (3 commits)")[![danilyer228](https://avatars.githubusercontent.com/u/33658320?v=4)](https://github.com/danilyer228 "danilyer228 (1 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/igorbunov-checkbox-in-ua-php-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/igorbunov-checkbox-in-ua-php-sdk/health.svg)](https://phpackages.com/packages/igorbunov-checkbox-in-ua-php-sdk)
```

###  Alternatives

[neuron-core/neuron-ai

The PHP Agentic Framework.

1.8k245.3k21](/packages/neuron-core-neuron-ai)[tencentcloud/tencentcloud-sdk-php

TencentCloudApi php sdk

3731.2M42](/packages/tencentcloud-tencentcloud-sdk-php)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
