sushi-market/digitalkassa-sdk

PHP SDK for DigitalKassa API v2.1

Maintainers

Package info

github.com/sushi-market/digitalkassa-sdk

pkg:composer/sushi-market/digitalkassa-sdk

Statistics

Installs: 8

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-03-26 05:55 UTC

This package is auto-updated.

Last update: 2026-03-26 05:56:02 UTC


README

PHP Version Latest Version Total Downloads License

SDK на основе версии документа 2.1.0

Установка:

composer require sushi-market/digitalkassa-sdk
use DF\DigitalKassa\V2\DigitalKassaApi;
use DF\DigitalKassa\V2\ValueObjects\Credentials;

$digitalkassa = new DigitalKassaApi(
    credentials: new Credentials(
        actorId: '1234567',
        actorToken: 'secret-token',
        cGroupId: 1,
    ),
);

💰 Работа с НДС (VatType)

В SDK доступен enum VatType, который инкапсулирует тип ставки НДС для чеков DigitalKassa и содержит хелперы для расчёта суммы с НДС, выделения НДС и получения суммы без НДС.

Поддерживаются:

  • обычные ставки (0%, 5%, 7%, 10%, 20%, 22%)
  • расчетные ставки (5/105, 7/107, 10/110, 20/120, 22/122)
  • режим без НДС

Начисление НДС (из цены без НДС в цену с НДС)

use DF\DigitalKassa\V2\Enums\VatType;

$vat = VatType::VAT_20;

$net = 1000.00;
$gross = $vat->applyVat($net);

// 1200.00

Выделение НДС из суммы с НДС

use DF\DigitalKassa\V2\Enums\VatType;

$vat = VatType::VAT_20;

$gross = 1200.00;
$vatAmount = $vat->extractVat($gross);

// 200.00

Получение суммы без НДС

use DF\DigitalKassa\V2\Enums\VatType;

$vat = VatType::VAT_20;

$gross = 1200.00;
$net = $vat->removeVat($gross);

// 1000.00

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

  • getCGroupInfo()
  • createReceipt()
  • getReceiptInfo()
  • createCorrectionReceipt()
  • getCorrectionReceiptInfo()
  • getShiftReport()
  • openShift()
  • closeShift()
  • changeShiftMode()

Быстрый пример создания чека

use DF\DigitalKassa\V2\DTO\Receipt\ReceiptItemDTO;
use DF\DigitalKassa\V2\DTO\Receipt\ReceiptDTO;
use DF\DigitalKassa\V2\DTO\Receipt\ReceiptRequestDTO;
use DF\DigitalKassa\V2\DTO\Shared\AmountDTO;
use DF\DigitalKassa\V2\DTO\Shared\LocationDTO;
use DF\DigitalKassa\V2\DTO\Shared\NotifyDTO;
use DF\DigitalKassa\V2\Enums\InternetMode;
use DF\DigitalKassa\V2\Enums\ReceiptItemType;
use DF\DigitalKassa\V2\Enums\PaymentMethod;
use DF\DigitalKassa\V2\Enums\ReceiptType;
use DF\DigitalKassa\V2\Enums\Taxation;
use DF\DigitalKassa\V2\Enums\Timezone;
use DF\DigitalKassa\V2\Enums\Unit;
use DF\DigitalKassa\V2\Enums\VatType;

$response = $digitalkassa->createReceipt(new ReceiptRequestDTO(
    receipt_id: 'receipt123',
    receipt: new ReceiptDTO(
        type: ReceiptType::SELL,
        items: [
            new ReceiptItemDTO(
                type: ReceiptItemType::PRODUCT,
                name: 'Coffee',
                price: 100.00,
                quantity: 1.0,
                amount: 100.00,
                payment_method: PaymentMethod::FULL_PAYMENT,
                unit: Unit::PIECE,
                vat: VatType::VAT_20,
            ),
        ],
        taxation: Taxation::OSN,
        is_internet: InternetMode::ON,
        timezone: Timezone::UTC_5,
        notify: new NotifyDTO(
            emails: ['customer@example.com'],
            phone: '+79990000000',
        ),
        amount: new AmountDTO(cashless: 100.00),
        loc: new LocationDTO(billing_place: 'site.example'),
    ),
));

Примеры вызова

Получение информации о группе касс

$cGroupInfo = $digitalkassa->getCGroupInfo();

Получение статуса чека

use DF\DigitalKassa\V2\DTO\Receipt\ReceiptInfoRequestDTO;

$receiptInfo = $digitalkassa->getReceiptInfo(
    new ReceiptInfoRequestDTO(receipt_id: 'receipt123'),
);

Создание чека коррекции

use DF\DigitalKassa\V2\DTO\CorrectionReceipt\CorrectionReceiptDTO;
use DF\DigitalKassa\V2\DTO\CorrectionReceipt\CorrectionReceiptRequestDTO;
use DF\DigitalKassa\V2\DTO\Shared\CorrectionNotifyDTO;

$correctionResponse = $digitalkassa->createCorrectionReceipt(new CorrectionReceiptRequestDTO(
    receipt_id: 'correction123',
    correction_receipt: new CorrectionReceiptDTO(
        type: ReceiptType1054::SELL_REFUND,
        items: [
            new ItemDTO(
                type: ItemType::PRODUCT,
                name: 'Coffee',
                price: 100.00,
                quantity: 1.0,
                amount: 100.00,
                payment_method: PaymentMethod::FULL_PAYMENT,
                unit: Unit::PIECE,
                vat: VatType::VAT_20,
            ),
        ],
        taxation: Taxation::OSN,
        corrected_date: '24.03.2026',
        amount: new AmountDTO(cashless: 100.00),
        is_internet: InternetMode::ON,
        timezone: Timezone::UTC_5,
        loc: new LocationDTO(billing_place: 'site.example'),
        notify: new CorrectionNotifyDTO(phone: '+79990000000'),
    ),
));

Получение статуса чека коррекции

use DF\DigitalKassa\V2\DTO\CorrectionReceipt\CorrectionReceiptInfoRequestDTO;

$correctionInfo = $digitalkassa->getCorrectionReceiptInfo(
    new CorrectionReceiptInfoRequestDTO(receipt_id: 'correction123'),
);

Работа со сменой

use DF\DigitalKassa\V2\DTO\Shift\ShiftModeRequestDTO;
use DF\DigitalKassa\V2\DTO\Shift\ShiftRequestDTO;
use DF\DigitalKassa\V2\Enums\ShiftMode;

$shiftReport = $digitalkassa->getShiftReport();

$digitalkassa->openShift(new ShiftRequestDTO(
    name: 'Cashier',
    tin: '123456789012',
));

$digitalkassa->changeShiftMode(new ShiftModeRequestDTO(
    mode: ShiftMode::MANUAL,
));

$digitalkassa->closeShift();

Документация