Skip to content

Khoroshun/checkbox-in-ua-php-sdk

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GitHub CI Packagist Latest Version on Packagist Software License PHP >=8.0 Total Downloads

checkbox-in-ua-php-sdk

PHP SDK для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Checkbox (Π£ΠΊΡ€Π°ΠΈΠ½Π°)

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:

Π’ Π΄Π°Π½Π½ΠΎΠΌ sdk Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Ρ€Π΅ΠΆΠΈΠΌΠ° (ΠΎΡ„Ρ„Π»Π°ΠΉΠ½ Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½)

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ докумСнтация:

https://api.checkbox.in.ua/api/redoc

https://api.checkbox.in.ua/api/docs

https://docs.google.com/document/d/1Zhkc4OljKjea_235YafVvZunkWSp6TCAKeckhgl8t2w/edit

Установка:

composer require khoroshun/checkbox-in-ua-php-sdk

Настройка:

require_once 'vendor/autoload.php';
Настройка ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°:

адрСс ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½ сСрвСра http://api.checkbox.in.ua
адрСс тСстового сСрвСра http://dev-api.checkbox.in.ua
тСкущая вСрсия API - v1

$config = new \khoroshun\Checkbox\Config([
    \khoroshun\Checkbox\Config::API_URL => 'https://dev-api.checkbox.in.ua/api/v1',
    \khoroshun\Checkbox\Config::LOGIN => 'Π»ΠΎΠ³ΠΈΠ½ кассира',
    \khoroshun\Checkbox\Config::PASSWORD => 'ΠΏΠ°Ρ€ΠΎΠ»ΡŒ кассира', //or
    \khoroshun\Checkbox\Config::PINCODE => 02301230440,
    \khoroshun\Checkbox\Config::LICENSE_KEY => 'ΠΊΠ»ΡŽΡ‡ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ кассы'
]);
Π›ΠΎΠ³ΠΈΠ½ кассира:
$api = new \khoroshun\Checkbox\CheckboxJsonApi($config);
$api->signInCashier();
Π›ΠΎΠ³Π°ΡƒΡ‚ кассира:
$api->signOutCashier();
Ошибки (Exceptions):
\khoroshun\Checkbox\Errors\InvalidCredentials - Π½Π΅ Π²Π΅Ρ€Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π»ΠΎΠ³ΠΈΠ½Π° ΠΈΠ»ΠΈ пароля
\khoroshun\Checkbox\Errors\EmptyResponse - пустой ΠΎΡ‚Π²Π΅Ρ‚
\khoroshun\Checkbox\Errors\Validation - ошибка Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ (Π΅ΡΡ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅. Π΄Π°Π½Π½Ρ‹Π΅ $err->getDetail())
\khoroshun\Checkbox\Errors\NoActiveShift - Π½Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ смСны
\khoroshun\Checkbox\Errors\AlreadyOpenedShift - смСна ΡƒΠΆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π°
\Exception  - стандартная ошибка

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:

profile (касир):
$api->getCashierProfile() : \khoroshun\Checkbox\Models\Cashier\Cashier // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ кассира
shifts (смСны):
$api->getCashierShift() : \khoroshun\Checkbox\Models\Shifts\Shift // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ смСну кассира
$api->getShift('ΠΈΠ΄ смСны') : \khoroshun\Checkbox\Models\Shifts\Shift // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ смСну ΠΏΠΎ ΠΈΠ΄
$api->getShifts() : \khoroshun\Checkbox\Models\Shifts\Shifts // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ смСны

ΠΈΠ»ΠΈ

$api->getShifts(
    new \khoroshun\Checkbox\Models\Shifts\ShiftsQueryParams(
        [
            \khoroshun\Checkbox\Models\Shifts\ShiftsQueryParams::STATUS_CLOSED,
            \khoroshun\Checkbox\Models\Shifts\ShiftsQueryParams::STATUS_OPENED
        ], // статусы смСн
        false, // desc - сортировка (false or true)
        2, // limit
        0 // offset
    )
): \khoroshun\Checkbox\Models\Shifts\Shifts // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ смСны с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°
$api->createShift() : \khoroshun\Checkbox\Models\Shifts\CreateShift // создаСт смСну
$api->closeShift() : \khoroshun\Checkbox\Models\Shifts\CloseShift // Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ смСну
cash registers (пРРО):
$api->getCashRegisters() : \khoroshun\Checkbox\Models\CashRegisters\CashRegisters // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ кассовыС рСгистраторы

ΠΈΠ»ΠΈ

$api->getCashRegisters(
    new \khoroshun\Checkbox\Models\CashRegisters\CashRegistersQueryParams(
        true, // inUse - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠ»ΠΈ Π½Π΅Ρ‚ (true or false)
        3, // limit
        0 // offset
    )
) : \khoroshun\Checkbox\Models\CashRegisters\CashRegisters // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ кассовыС рСгистраторы ΠΏΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρƒ
$api->getCashRegister('ΠΈΠ΄ кассы') : \khoroshun\Checkbox\Models\CashRegisters\CashRegister // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ кассу ΠΏΠΎ Π°ΠΉΠ΄ΠΈ
$api->getCashRegisterInfo() : \khoroshun\Checkbox\Models\CashRegisters\CashRegisterInfo // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ кассы
taxes (Π½Π°Π»ΠΎΠ³ΠΈ):
$api->getAllTaxes() : \khoroshun\Checkbox\Models\Receipts\Taxes\GoodTaxes // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ всС Π½Π°Π»ΠΎΠ³ΠΈ
transactions (Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ):
$api->getTransactions(
    new \khoroshun\Checkbox\Models\Transactions\TransactionsQueryParams(
        [
            \khoroshun\Checkbox\Models\Transactions\TransactionsQueryParams::STATUS_CREATED,
            \khoroshun\Checkbox\Models\Transactions\TransactionsQueryParams::STATUS_DONE,
            \khoroshun\Checkbox\Models\Transactions\TransactionsQueryParams::STATUS_SIGNED
        ], // статусы Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ
        [
            \khoroshun\Checkbox\Models\Transactions\TransactionsQueryParams::TYPE_RECEIPT,
            \khoroshun\Checkbox\Models\Transactions\TransactionsQueryParams::TYPE_SHIFT_OPEN,
            \khoroshun\Checkbox\Models\Transactions\TransactionsQueryParams::TYPE_Z_REPORT
        ], // Ρ‚ΠΈΠΏΡ‹ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ
        2, // limit
        0 // offset
    )
) : \khoroshun\Checkbox\Models\Transactions\Transactions // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΏΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρƒ
$api->getTransaction('ΠΈΠ΄ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ') : \khoroshun\Checkbox\Models\Transactions\Transaction // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ ΠΏΠΎ Π°ΠΉΠ΄ΠΈ
$api->updateTransaction(
    'ΠΈΠ΄ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ',
    base64_encode('request_signature')
) : \khoroshun\Checkbox\Models\Transactions\Transaction // мСняСт request_signature Ρƒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Ρƒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ статус PENDING
reports (ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹):
$api->createXReport() : \khoroshun\Checkbox\Models\Shifts\ZReport // создаСт Ρ… ΠΎΡ‚Ρ‡Π΅Ρ‚
$api->getReport('ΠΈΠ΄ ΠΎΡ‚Ρ‡Π΅Ρ‚Π°') : \khoroshun\Checkbox\Models\Shifts\ZReport // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΏΠΎ Π°ΠΉΠ΄ΠΈ
$api->getReportText('ΠΈΠ΄ ΠΎΡ‚Ρ‡Π΅Ρ‚Π°') : string // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΏΠΎ Π°ΠΉΠ΄ΠΈ Π² Π²ΠΈΠ΄Π΅ тСкста

ΠΈΠ»ΠΈ

$api->getReportText('ΠΈΠ΄ ΠΎΡ‚Ρ‡Π΅Ρ‚Π°', 60) : string // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΏΠΎ Π°ΠΉΠ΄ΠΈ Π² Π²ΠΈΠ΄Π΅ тСкста, с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ тСкста
$api->getPeriodicalReport(
    new \khoroshun\Checkbox\Models\Reports\PeriodicalReportQueryParams(
        '2020-10-27 00:00:00', // Π΄Π°Ρ‚Π° с
        '2020-11-04 13:15:00', // Π΄Π°Ρ‚Π° ΠΏΠΎ
        60 // ΡˆΠΈΡ€ΠΈΠ½Π° тСкста
    )
) : string // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° Π·Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΏΠΎ Ρ„ΠΈΠ»ΡŒΡ€Ρƒ
$api->getReports(
    new \khoroshun\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
    )
) : \khoroshun\Checkbox\Models\Reports\Reports // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΏΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρƒ
receipts (Ρ‡Π΅ΠΊΠΈ):
$api->getReceipts() : \khoroshun\Checkbox\Models\Receipts\Receipts // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‡Π΅ΠΊΠΈ
$api->getReceipts(
    new \khoroshun\Checkbox\Models\Receipts\ReceiptsQueryParams(
        '', // fiscal code
        '', // serial
        false, // desc - сортировка (false or true)
        2, // limit
        0 // offset
    )
) : \khoroshun\Checkbox\Models\Receipts\Receipts // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‡Π΅ΠΊΠΈ ΠΏΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρƒ
$api->getReceipt('ΠΈΠ΄ Ρ‡Π΅ΠΊΠ°') : \khoroshun\Checkbox\Models\Receipts\Receipt // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‡Π΅ΠΊ ΠΏΠΎ Π°ΠΉΠ΄ΠΈ
$api->getReceiptPdf('ΠΈΠ΄ Ρ‡Π΅ΠΊΠ°') : pdf // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‡Π΅ΠΊ ΠΏΠΎ Π°ΠΉΠ΄ΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ΄Ρ„
$api->getReceiptHtml('ΠΈΠ΄ Ρ‡Π΅ΠΊΠ°') : string // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‡Π΅ΠΊ ΠΏΠΎ Π°ΠΉΠ΄ΠΈ Π² Π²ΠΈΠ΄Π΅ html
$api->getReceiptText('ΠΈΠ΄ Ρ‡Π΅ΠΊΠ°') : string // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‡Π΅ΠΊ ΠΏΠΎ Π°ΠΉΠ΄ΠΈ Π² Π²ΠΈΠ΄Π΅ тСкста
$api->getReceiptQrCodeImage('ΠΈΠ΄ Ρ‡Π΅ΠΊΠ°') : string // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‡Π΅ΠΊ ΠΏΠΎ Π°ΠΉΠ΄ΠΈ Π² Π²ΠΈΠ΄Π΅ qr-ΠΊΠΎΠ΄Π°

ΠΈΠ»ΠΈ

// ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ qr-ΠΊΠΎΠ΄Π°
$rawImageContent = $api->getReceiptQrCodeImage('ΠΈΠ΄ Ρ‡Π΅ΠΊΠ°');
echo '<img src="data:image/png;base64,' . base64_encode($rawImageContent) . '"/>';
Ρ‡Π΅ΠΊ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ:
$receipt = new \khoroshun\Checkbox\Models\Receipts\SellReceipt(
    'Вася ΠŸΡƒΠΏΠΊΠΈΠ½', // кассир
    'ΠžΡ‚Π΄Π΅Π» ΠΏΡ€ΠΎΠ΄Π°ΠΆ', // ΠΎΡ‚Π΄Π΅Π»
    new \khoroshun\Checkbox\Models\Receipts\Goods\Goods(
        [
            new \khoroshun\Checkbox\Models\Receipts\Goods\GoodItemModel( // Ρ‚ΠΎΠ²Π°Ρ€ 1
                new \khoroshun\Checkbox\Models\Receipts\Goods\GoodModel(
                    'vm-123', // good_id
                    50 * 100, // 50 Π³Ρ€Π½
                    'Π‘ΠΈΠΎΠ²Π°ΠΊ' // Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°
                ),
                1 * 1000 // ΠΊΠΎΠ»-Π²ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°  1 ΡˆΡ‚
            ),
            new \khoroshun\Checkbox\Models\Receipts\Goods\GoodItemModel( // Ρ‚ΠΎΠ²Π°Ρ€ 2
                new \khoroshun\Checkbox\Models\Receipts\Goods\GoodModel(
                    'vm-124', // good_id
                    20 * 100, // 20 Π³Ρ€Π½
                    'Π‘ΠΈΠΎΠ²Π°ΠΊ 2' // Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°
                ),
                2 * 1000 // ΠΊΠΎΠ»-Π²ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π° 2 ΡˆΡ‚
            )
        ]
    ),
    'admin@gmail.com', // ΠΊΠΎΠΌΡƒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ‡Π΅ΠΊ ΠΏΠΎ ΠΏΠΎΡ‡Ρ‚Π΅
    new \khoroshun\Checkbox\Models\Receipts\Payments\Payments([
        new \khoroshun\Checkbox\Models\Receipts\Payments\CardPaymentPayload( // бСзналичная ΠΎΠΏΠ»Π°Ρ‚Π°
            40 * 100 // 40 Π³Ρ€Π½
        ),
        new \khoroshun\Checkbox\Models\Receipts\Payments\CashPaymentPayload( // наличная ΠΎΠΏΠ»Π°Ρ‚Π°
            50 * 100 // 50 Π³Ρ€Π½
        )
    ])
);

$api->createSellReceipt($receipt): \khoroshun\Checkbox\Models\Receipts\Receipt; // выполняСм ΠΎΠΏΠ»Π°Ρ‚Ρƒ

Π±ΠΎΠ»Π΅Π΅ слоТная ΠΎΠΏΠ»Π°Ρ‚Π°:

$allTaxes = $api->getAllTaxes(); // ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ всС Π½Π°Π»ΠΎΠ³ΠΈ
$tax = $allTaxes->getTaxByLabel('Акцизний Π·Π±Ρ–Ρ€'); // ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ Π½Π°Π»ΠΎΠ³ ΠΏΠΎ Π»Π΅ΠΉΠ±Π»
$goodTaxes = $allTaxes->getTaxesByLabel('ΠŸΠ”Π’'); // ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ массив Π½Π°Π»ΠΎΠ³ΠΎΠ² ΠΏΠΎ Π»Π΅ΠΉΠ±Π»
$taxCodes = [];

// ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ массив ΠΊΠΎΠ΄ΠΎΠ² Π½Π°Π»ΠΎΠ³ΠΎΠ²
foreach ($goodTaxes->results as $goodTax) {
    $taxCodes[] = $goodTax->code;
}

$receipt = new \khoroshun\Checkbox\Models\Receipts\SellReceipt(
    'Вася ΠŸΡƒΠΏΠΊΠΈΠ½', // имя кассира
    'ΠžΡ‚Π΄Π΅Π» ΠΏΡ€ΠΎΠ΄Π°ΠΆ', // ΠΎΡ‚Π΄Π΅Π»
    new \khoroshun\Checkbox\Models\Receipts\Goods\Goods( // Ρ‚ΠΎΠ²Π°Ρ€Ρ‹
        [
            new \khoroshun\Checkbox\Models\Receipts\Goods\GoodItemModel(
                new \khoroshun\Checkbox\Models\Receipts\Goods\GoodModel(
                    'vm-123', // good_id Π°ΠΉΠ΄ΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°
                    5000, // 50 Π³Ρ€Π½  Ρ†Π΅Π½Π° 100 = 1 Π³Ρ€Π½
                    'Π‘ΠΈΠΎΠ²Π°ΠΊ', // Π½Π°Π·Π²Π°Π½ΠΈΠ΅
                    '5Ρ€47Π»Π΅78675Π΅3', // Π±Π°Ρ€ΠΊΠΎΠ΄
                    'Ρ…ΠΈΠ΄Π΅Ρ€', // Ρ…ΠΈΠ΄Π΅Ρ€
                    'Ρ„ΡƒΡ‚Π΅Ρ€', // Ρ„ΡƒΡ‚Π΅Ρ€
                    '', // ktzed
                    $goodTaxes // Π½Π°Π»ΠΎΠ³ΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°
                ),
                1000, // ΠΊΠΎΠ»-Π²ΠΎ 1000 = 1 ΡˆΡ‚
                new \khoroshun\Checkbox\Models\Receipts\Discounts\Discounts( // скидки или надбавки
                    [
                        new \khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel(
                            \khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel::TYPE_DISCOUNT, // скидка или надбавка
                            \khoroshun\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))
            )
        ]
    ),
    'admin@gmail.com', // ΠΊΠΎΠΌΡƒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ‡Π΅ΠΊ ΠΏΠΎ ΠΏΠΎΡ‡Ρ‚Π΅
    new \khoroshun\Checkbox\Models\Receipts\Payments\Payments([ // ΠΎΠΏΠ»Π°Ρ‚Ρ‹
        new \khoroshun\Checkbox\Models\Receipts\Payments\CardPaymentPayload( // бСзналичная ΠΎΠΏΠ»Π°Ρ‚Π°
            400, // сумма ΠΎΠΏΠ»Π°Ρ‚Ρ‹ 400 = 4 Π³Ρ€Π½
            'beznalichka', // тСкст ΠΎΠΏΠ»Π°Ρ‚Ρ‹
            0, // code - Π½Π΅ знаю для Ρ‡Π΅Π³ΠΎ (Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΏΠΈΠ½ ΠΊΠΎΠ΄ ΠΊΠ°Ρ€Ρ‚Ρ‹)
            '0000 0000 0000 0000' // Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°Ρ€Ρ‚Ρ‹
        ),
        new \khoroshun\Checkbox\Models\Receipts\Payments\CashPaymentPayload( // наличная ΠΎΠΏΠ»Π°Ρ‚Π°
            4300, // сумма ΠΎΠΏΠ»Π°Ρ‚Ρ‹ 4300 = 43 Π³Ρ€Π½
            'nalichka' // тСкст ΠΎΠΏΠ»Π°Ρ‚Ρ‹
        )
    ]),
    new \khoroshun\Checkbox\Models\Receipts\Discounts\Discounts( // скидки/Π½Π°Π΄Π±Π°Π²ΠΊΠΈ Π½Π° вСсь Ρ‡Π΅ΠΊ
        [
            new \khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel(
                \khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel::TYPE_DISCOUNT, // скидка или надбавка
                \khoroshun\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): \khoroshun\Checkbox\Models\Receipts\Receipt; // выполняСм ΠΎΠΏΠ»Π°Ρ‚Ρƒ

Π΅Ρ‰Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

$allTaxes = $api->getAllTaxes();
$tax = $allTaxes->getTaxByLabel('Акцизний Π·Π±Ρ–Ρ€');
$goodTaxes = $allTaxes->getTaxesByLabel('ΠŸΠ”Π’');
$taxCodes = [];

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

$receipt = new \khoroshun\Checkbox\Models\Receipts\SellReceipt(
    'Вася ΠŸΡƒΠΏΠΊΠΈΠ½',
    'ΠžΡ‚Π΄Π΅Π» ΠΏΡ€ΠΎΠ΄Π°ΠΆ',
    new \khoroshun\Checkbox\Models\Receipts\Goods\Goods(
        [
            new \khoroshun\Checkbox\Models\Receipts\Goods\GoodItemModel(
                new \khoroshun\Checkbox\Models\Receipts\Goods\GoodModel(
                    'vm-123', // good_id
                    5000, // 50 Π³Ρ€Π½
                    'Π‘ΠΈΠΎΠ²Π°ΠΊ',
                    '',
                    '',
                    '',
                    '',
                    $goodTaxes
                ),
                1000,
                new \khoroshun\Checkbox\Models\Receipts\Discounts\Discounts(
                    [
                        new \khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel(
                            \khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel::TYPE_DISCOUNT,
                            \khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel::MODE_VALUE,
                            100, // 1 Π³Ρ€Π½
                            0,
                            $tax->code,
                            $taxCodes,
                            'моя скидка'
                        )
                    ]
                ),
                $allTaxes->getTaxesByLabel('Акцизний Π·Π±Ρ–Ρ€'),
                false,
                0,
                ''
            ),
            new \khoroshun\Checkbox\Models\Receipts\Goods\GoodItemModel(
                new \khoroshun\Checkbox\Models\Receipts\Goods\GoodModel(
                    'vm-124', // good_id
                    2000, // 20 Π³Ρ€Π½
                    'Π‘ΠΈΠΎΠ²Π°ΠΊ 2',
                    '',
                    '',
                    '',
                    '',
                    $goodTaxes
                ),
                2000, // 2 ΡˆΡ‚
                new \khoroshun\Checkbox\Models\Receipts\Discounts\Discounts(
                    [
                        new \khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel(
                            \khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel::TYPE_EXTRA_CHARGE,
                            \khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel::MODE_VALUE,
                            200, // 2 Π³Ρ€Π½
                            0,
                            $tax->code,
                            $taxCodes,
                            'моя надбавка'
                        )
                    ]
                ),
                $allTaxes->getTaxesByLabel('Акцизний Π·Π±Ρ–Ρ€'),
                false,
                0,
                ''
            )
        ]
    ),
    'admin@gmail.com',
    new \khoroshun\Checkbox\Models\Receipts\Payments\Payments([
        new \khoroshun\Checkbox\Models\Receipts\Payments\CardPaymentPayload(
            4700
        ),
        new \khoroshun\Checkbox\Models\Receipts\Payments\CashPaymentPayload(
            4700
        )
    ]),
    new \khoroshun\Checkbox\Models\Receipts\Discounts\Discounts(
        [
            new \khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel(
                \khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel::TYPE_EXTRA_CHARGE,
                \khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel::MODE_VALUE,
                200, // 2 Π³Ρ€Π½
                0,
                $tax->code,
                $taxCodes,
                'общая Π½Π°Π΄Π±Π°Π²ΠΊΠ°'
            )
        ]
    )
);

$api->createSellReceipt($receipt): \khoroshun\Checkbox\Models\Receipts\Receipt;
$api->createServiceReceipt(
    new \khoroshun\Checkbox\Models\Receipts\ServiceReceipt(
        new \khoroshun\Checkbox\Models\Receipts\Payments\CashPaymentPayload(5100)
    )
): \khoroshun\Checkbox\Models\Receipts\Receipt // создаСм Ρ‡Π΅ΠΊ сСрвисного внСсСния Π΄Π΅Π½Π΅Π³ (Π½Π°Π»ΠΈΡ‡ΠΊΠΎΠΉ)
$api->createServiceReceipt(
    new \khoroshun\Checkbox\Models\Receipts\ServiceReceipt(
        new \khoroshun\Checkbox\Models\Receipts\Payments\CardPaymentPayload(1000)
    )
): \khoroshun\Checkbox\Models\Receipts\Receipt // создаСм Ρ‡Π΅ΠΊ сСрвисного внСсСния Π΄Π΅Π½Π΅Π³ (ΠΊΠ°Ρ€Ρ‚ΠΎΠΉ)
$api->createServiceReceipt(
    new \khoroshun\Checkbox\Models\Receipts\ServiceReceipt(
        new new \khoroshun\Checkbox\Models\Receipts\Payments\CashPaymentPayload(-5100)
    )
): \khoroshun\Checkbox\Models\Receipts\Receipt // создаСм Ρ‡Π΅ΠΊ сСрвисного вынСсСния Π΄Π΅Π½Π΅Π³ (Π½Π°Π»ΠΈΡ‡ΠΊΠΎΠΉ) (Π·Π½Π°ΠΊ минус)
$api->createServiceReceipt(
    new \khoroshun\Checkbox\Models\Receipts\ServiceReceipt(
        new new \khoroshun\Checkbox\Models\Receipts\Payments\CardPaymentPayload(-1000)
    )
): \khoroshun\Checkbox\Models\Receipts\Receipt // создаСм Ρ‡Π΅ΠΊ сСрвисного вынСсСния Π΄Π΅Π½Π΅Π³ (ΠΊΠ°Ρ€Ρ‚ΠΎΠΉ) (Π·Π½Π°ΠΊ минус)
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ:

всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Π² try cache

try {

    // Ρ‚ΡƒΡ‚ всС Π΄Π΅Π»Π°Π΅ΠΌ

} catch (\khoroshun\Checkbox\Errors\InvalidCredentials $err) {
    var_dump('creds err', $err->getMessage());
}  catch (\khoroshun\Checkbox\Errors\EmptyResponse $err) {
    var_dump('empty response', $err->getMessage(), $err->getTraceAsString());
} catch (\khoroshun\Checkbox\Errors\Validation $err) {
    var_dump('valid err', $err->getMessage());
    var_dump('error detail', $err->getDetail());
} catch (\khoroshun\Checkbox\Errors\NoActiveShift $err) {
    var_dump('no shift', $err->getMessage());
} catch (\khoroshun\Checkbox\Errors\AlreadyOpenedShift $err) {
    var_dump('opened shift', $err->getMessage());
} catch (\Exception $err) {
    var_dump('default err', $err->getMessage());
}
ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ всСх нСймспСйсов ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:
use khoroshun\Checkbox\CheckboxJsonApi;
use khoroshun\Checkbox\Config;
use khoroshun\Checkbox\Errors\InvalidCredentials;
use khoroshun\Checkbox\Errors\Validation;
use khoroshun\Checkbox\Errors\NoActiveShift;
use khoroshun\Checkbox\Errors\AlreadyOpenedShift;
use khoroshun\Checkbox\Errors\EmptyResponse;
use khoroshun\Checkbox\Models\CashRegisters\CashRegistersQueryParams;
use khoroshun\Checkbox\Models\Shifts\ShiftsQueryParams;
use khoroshun\Checkbox\Models\Receipts\ReceiptsQueryParams;
use khoroshun\Checkbox\Models\Receipts\Discounts\Discounts;
use khoroshun\Checkbox\Models\Receipts\Discounts\DiscountModel;
use khoroshun\Checkbox\Models\Receipts\SellReceipt;
use khoroshun\Checkbox\Models\Receipts\Payments\Payments;
use khoroshun\Checkbox\Models\Receipts\Payments\CardPaymentPayload;
use khoroshun\Checkbox\Models\Receipts\Payments\CashPaymentPayload;
use khoroshun\Checkbox\Models\Receipts\ServiceReceipt;
use khoroshun\Checkbox\Models\Reports\PeriodicalReportQueryParams;
use khoroshun\Checkbox\Models\Reports\ReportsQueryParams;
use khoroshun\Checkbox\Models\Transactions\TransactionsQueryParams;
use khoroshun\Checkbox\Models\Receipts\Goods\Goods;
use khoroshun\Checkbox\Models\Receipts\Goods\GoodItemModel;
use khoroshun\Checkbox\Models\Receipts\Goods\GoodModel;

Для ΠΊΠΎΡ‚Ρ€ΠΈΠ±ΡŒΡŽΡ‚ΠΎΡ€ΠΎΠ²

For run all tests

make all

or connect to terminal

make exec

or use built in php server http://localhost:8080

# 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

About

Ukraine checkbox api php sdk

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 99.9%
  • Other 0.1%