noith/fiscal-receipt
Composer 安装命令:
composer require noith/fiscal-receipt
包简介
DTO, enums, serialization and validation for Russian fiscal receipts FFD 1.05 and 1.2.
README 文档
README
PHP-библиотека с DTO, enum, value object, сериализацией и валидацией кассовых чеков для российских форматов ФФД 1.05 и ФФД 1.2.
Возможности
- DTO для черновиков чеков и фискализированных чеков.
- Общие value object для денег, количества, ИНН, контактов, ФН, РН ККТ и UInt64.
- Enum для типов оплаты, предметов расчета, ставок НДС, систем налогообложения и операций.
- JSON/array-сериализация чеков.
- Парсинг JSON фискализированных чеков обратно в DTO.
- Валидация ФЛК для ФФД 1.05 и ФФД 1.2.
Требования
- PHP 8.2+
- Composer
Установка
composer require noith/fiscal-receipt
Для разработки:
composer install
composer test
Быстрый старт: ФФД 1.05
<?php
use FiscalReceipt\Common\Enum\OperationType;
use FiscalReceipt\Common\Enum\PaymentMethod;
use FiscalReceipt\Common\Enum\PaymentObject;
use FiscalReceipt\Common\Enum\TaxationType;
use FiscalReceipt\Common\Enum\VatRate;
use FiscalReceipt\Common\Value\Money;
use FiscalReceipt\Common\Value\Quantity;
use FiscalReceipt\Ffd105\Dto\PaymentBreakdown;
use FiscalReceipt\Ffd105\Dto\ReceiptDraft;
use FiscalReceipt\Ffd105\Dto\ReceiptItem;
use FiscalReceipt\Ffd105\Enum\DocumentType;
use FiscalReceipt\Ffd105\Serialization\ReceiptDraftSerializer;
$item = new ReceiptItem(
price: new Money(10_000), // 100.00 RUB в копейках
quantity: new Quantity(1.0),
sum: new Money(10_000),
vatRate: VatRate::Vat20,
name: 'Товар',
paymentMethod: PaymentMethod::FullPayment,
paymentObject: PaymentObject::Commodity,
);
$receipt = new ReceiptDraft(
documentType: DocumentType::Receipt,
operationType: OperationType::Income,
taxationType: TaxationType::Osn,
payments: PaymentBreakdown::electronicOnly(new Money(10_000)),
items: [$item],
internetPayment: true,
);
$json = (new ReceiptDraftSerializer())->toJson($receipt);
Быстрый старт: ФФД 1.2
<?php
use FiscalReceipt\Common\Enum\OperationType;
use FiscalReceipt\Common\Enum\PaymentMethod;
use FiscalReceipt\Common\Enum\PaymentObject;
use FiscalReceipt\Common\Enum\QuantityMeasure;
use FiscalReceipt\Common\Enum\TaxationType;
use FiscalReceipt\Common\Enum\VatRate;
use FiscalReceipt\Common\Value\Money;
use FiscalReceipt\Common\Value\Quantity;
use FiscalReceipt\Ffd12\Dto\PaymentBreakdown;
use FiscalReceipt\Ffd12\Dto\ProductCodeNew;
use FiscalReceipt\Ffd12\Dto\ReceiptDraft;
use FiscalReceipt\Ffd12\Dto\ReceiptItem;
use FiscalReceipt\Ffd12\Enum\DocumentType;
use FiscalReceipt\Ffd12\Serialization\ReceiptDraftSerializer;
$item = new ReceiptItem(
paymentType: PaymentMethod::FullPayment,
productType: PaymentObject::Commodity,
sum: new Money(10_000),
price: new Money(10_000),
quantity: new Quantity(1.0),
itemsQuantityMeasure: QuantityMeasure::Piece,
name: 'Товар',
nds: VatRate::Vat20,
productCodeNew: ProductCodeNew::ean13('4601234567890'),
);
$receipt = new ReceiptDraft(
code: DocumentType::Receipt,
operationType: OperationType::Income,
appliedTaxationType: TaxationType::Osn,
retailPlaceAddress: 'https://example.com',
retailPlace: 'https://example.com',
payments: PaymentBreakdown::electronicOnly(new Money(10_000)),
items: [$item],
internetPayment: true,
);
$json = (new ReceiptDraftSerializer())->toJson($receipt);
Валидация
use FiscalReceipt\Ffd105\Validation\FiscalizedReceiptValidator;
$result = (new FiscalizedReceiptValidator())->validate($fiscalizedReceipt);
if (!$result->isValid()) {
foreach ($result->violations as $violation) {
echo $violation->code . ': ' . $violation->message . PHP_EOL;
}
}
Для ФФД 1.2 используйте FiscalReceipt\Ffd12\Validation\FiscalizedReceiptValidator.
Парсинг фискализированного чека
use FiscalReceipt\Ffd105\Serialization\FiscalizedReceiptJsonParser;
$receipt = (new FiscalizedReceiptJsonParser())->fromJson($json);
Для ФФД 1.2 используйте FiscalReceipt\Ffd12\Serialization\FiscalizedReceiptJsonParser.
Деньги и суммы
Money хранит значение в копейках:
new Money(10_000); // 100.00
Money::fromRubles('100.50'); // 10050 копеек
Тесты
composer test
Лицензия
MIT. См. LICENSE.
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-06-22