Search by

Klient pro EET 2.0 (evidence tržeb od 2027) - podpis WS-Security, odeslání, zpracování odpovědí. Bez závislostí.

Package info

github.com/JakubSilny/eet2-php

pkg:composer/jakubsilny/eet2

Statistics

Installs: 29

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-09-26 18:19 UTC

This package is auto-updated.

Last update: 2026-10-21 01:42:28 UTC


README

Odesílání tržeb do EET 2.0 (evidence tržeb od 1. 1. 2027, rozhraní v4). Řeší za vás SOAP, podpis WS-Security (XML-DSig, exc-c14n, RSA-SHA256), formáty položek a zpracování odpovědí.

  • Bez závislostí: stačí ext-dom, ext-openssl a ext-curl, PHP 8.1+
  • Otestováno proti státnímu Playgroundu (pg.trzbyeet.gov.cz)
  • Načte certifikáty z DIS+ (.p12), včetně starého šifrování RC2, které OpenSSL 3 samo neotevře
composer require jakubsilny/eet2

Web a dokumentace: https://jakubsilny.github.io/eet2-php/

EET 2.0 Pro přidává frontu s automatickým doposíláním při výpadku, automatickou obnovu pokladního certifikátu, CLI a integraci pro Laravel a Nette. Více na webu

Vyzkoušení za 2 minuty

Bez vlastního certifikátu, proti Playgroundu finanční správy s jejími veřejnými testovacími certifikáty:

curl -LO https://eet.gov.cz/assets/cs/cmsmedia/pro-vyvojare/CAEET_Playground_2026_v1.zip && unzip CAEET_Playground_2026_v1.zip
$eet = Eet2\Client::fromP12('CA_EET-Playground-CZ683555118.p12', 'aaaa1111');
print_r($eet->send([
    'eic_popl' => 'CZ683555118', 'id_jednotky' => 101, 'id_pokl' => 'KASA1',
    'porad_cis' => 'U-' . time(), 'dat_trzby' => new DateTimeImmutable(), 'celk_trzba' => 150,
]));
// pok končí na "-ff" = fiktivní kód z testovacího prostředí

Použití

use Eet2\{Client, EetException};

$eet = Client::fromP12('pokladni-certifikat.p12', 'heslo', Client::PLAYGROUND);

try {
    $r = $eet->send([
        'eic_popl'    => 'CZ683555118',     // EIČ poplatníka
        'id_jednotky' => 101,               // číslo evidenční jednotky z DIS+
        'id_pokl'     => 'POKLADNA-1',
        'porad_cis'   => '2027/000123',     // číslo účtenky
        'dat_trzby'   => new DateTimeImmutable(),
        'celk_trzba'  => 249.90,
    ]);
    echo $r['pok'];                          // potvrzovací kód (POK)
} catch (EetException $e) {
    if ($e->isRetryable()) {
        // výpadek sítě nebo EET: uložit a poslat později se send($trzba, firstAttempt: false)
    } else {
        // chyba dat nebo certifikátu: $e->getCode() = kód chyby EET
    }
}

Nepovinné položky: eic_poverujiciho, povereni_vice_popl, urceno_cerp_zuct, cerp_zuct. Ověřovací mód (spojení se otestuje, tržba se neeviduje): $eet->send($trzba, verifyOnly: true).

Návratová hodnota: pok, test (true = neprodukční prostředí), uuid, warnings (kód => text), transaction_id (hlavička X-Global-Transaction-Id pro dohledání u finanční správy).

Testy

composer test        # offline: kanonizace podle oficiálního vzoru, XSD, podpis, formáty
composer test-live   # živě proti Playgroundu s veřejnými testovacími certifikáty

Produkce

Použijte Client::PRODUCTION a svůj pokladní certifikát. Produkční certifikáty se generují v DIS+ od 1. 11. 2026. Každé potvrzení se ověřuje (podpis GFŘ přes I.CA). Když ověření selže, EetException::SIGNATURE_INVALID se chová jako dočasná chyba.

Licence

MIT. Knihovna není oficiálním produktem Finanční správy ČR a za správnost evidence odpovídá poplatník.