PHPackages                             malcanek/idoklad-v2 - 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. malcanek/idoklad-v2

ActiveLibrary

malcanek/idoklad-v2
===================

PHP třída pro ulehčení požadavků na iDoklad api v2.

1726.0k↓38.7%18PHP

Since Nov 25Pushed 1y ago4 watchersCompare

[ Source](https://github.com/malcanek/iDoklad-v2)[ Packagist](https://packagist.org/packages/malcanek/idoklad-v2)[ RSS](/packages/malcanek-idoklad-v2/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

[![Open Source Love](https://camo.githubusercontent.com/2d4eac62d5f5830a5309100b88e0ecccb171aee1fbcd794149f4a580b0010c56/68747470733a2f2f6261646765732e66726170736f66742e636f6d2f6f732f6d69742f6d69742e7376673f763d313032)](https://github.com/ellerbrock/open-source-badge/)

iDoklad v2
==========

[](#idoklad-v2)

PHP třída pro zasílání požadavků na iDoklad api v2. [Dokumentace iDoklad api v2](https://app.idoklad.cz/Developer/Help)

Informace ohledně api v3
------------------------

[](#informace-ohledně-api-v3)

V současné době neplánuji migraci na api v3, jelikož api v2 postačuje mým potřebám. Jelikož v současné době není plánováno vypnutí api v2 nepovažuji migraci na api v3 za akutní. Dle specifikace api v3 by měla většina funkcí této knihovny fungovat také na v3 endpointy, je ale potřeba změnit autentifikaci a verzi api v kódu, tudíž je potřeba fork této knihovny. Děkuji za pochopení.

Vložení knihovny do projektu
----------------------------

[](#vložení-knihovny-do-projektu)

Knihovnu vložíme do projektu naincludováním souboru src/iDoklad.php, nebo si knihovnu přidáme pomocí composeru. Následně se na knihovnu odkážeme pomocí use.

```
composer require malcanek/idoklad-v2
```

Zadáme naše client ID, client secret a v případě, že chceme použít OAuth2 autentifikaci i redirect URI. Nakonec si zavoláme objekt iDokladu, který zajišťuje veškerou komunikaci.

```
include_once 'src/iDoklad.php';

use malcanek\iDoklad\iDoklad;
use malcanek\iDoklad\auth\iDokladCredentials;
use malcanek\iDoklad\iDokladException;

$clientId = 'Your client ID';
$clientSecret = 'Your client secret';
$redirectUri = 'Your redirect URI for OAuth2';

$iDoklad = new iDoklad($clientId, $clientSecret, $redirectUri);
```

Autorizace pomocí OAuth2 - Authorization code flow
--------------------------------------------------

[](#autorizace-pomocí-oauth2---authorization-code-flow)

Autorizace pomocí OAuth probíhá v několika krocích. Jako client ID a client secret používáme údaje získané z developer portálu.

Nejdříve nabídneme uživateli URL adresu, kde zadá své přihlašovací údaje. Tu získáme pomocí nasledující metody:

```
echo 'Odkaz';
```

Po zadání přihlašovacích údajů je uživatel přesměrován na zadanou redirect URI i s kódem, pomocí kterého získáme jeho credentials údaje. Kód zpracujeme následujícím způsobem:

```
$iDoklad->requestCredentials($_GET['code']);
```

Nyní jsou v instanci objektu založeny credentials a můžeme odesílat dotazy na iDoklad api. Credentials můžeme získat 2 způsoby. Získání credentials přímo z objektu:

```
$credentials = $iDoklad->getCredentials();
echo $credentials->toJson();
```

### Zpracování credentials pomocí credentials callbacku:

[](#zpracování-credentials-pomocí-credentials-callbacku)

Callback funguje tak, že knihovna zavolá callback funkci vždy, když jsou změněny credentials. To se hodí, jelikož automaticky probíhá refresh tokenu po jeho vypršení.

```
$iDoklad->setCredentialsCallback(function($credentials){
    file_put_contents('credentials.json', $credentials->toJson());
});
```

### Nahrání credentials do iDoklad objektu

[](#nahrání-credentials-do-idoklad-objektu)

Založení objektu s již existujícími credentials

```
$iDoklad = new iDoklad($clientId, $clientSecret, $redirectUri, $credentials);
```

Vložení credentials do již existujícího objektu

```
$iDoklad->setCredentials($credentials);
```

Poté co objekt obsahuje credentials, lze provádět dotazy do iDoklad api.

Autorizace pomocí OAuth2 - Client credentials flow
--------------------------------------------------

[](#autorizace-pomocí-oauth2---client-credentials-flow)

Tato metoda je jednodušší. Credentials získáme na základě client id a client secret, které získáme z nastavení účtu uživatele. Po založení objektu pouze zavoláme:

```
$iDoklad->authCCF();
```

Jako u OAuth2 - Authorization code flow i zde funguje credentials callback.

Odesílání požadavků na iDoklad api
----------------------------------

[](#odesílání-požadavků-na-idoklad-api)

Pro odeslání požadavku na api slouží iDokladRequest objekt. Ten lze v nejjednodušší podobě založit pouze s jedním parametrem, který určuje akci dle dokumentace, a poté rovnou odeslat na api.

```
$request = new iDokladRequest('IssuedInvoices');
$response = $iDoklad->sendRequest($request);
```

Získání dat z api
-----------------

[](#získání-dat-z-api)

Pokud požadavek proběhne úspěšně, jsou zpět vrácena data v podobě iDokladResponse objektu. Nejdříve zkontrolujeme, zda požadavek proběhl v pořádku (návratová hodnota by měla být 200):

```
$response->getCode();
```

Poté můžeme získat samotná data v poli:

```
$response->getData();
```

Odchytávání chyb
----------------

[](#odchytávání-chyb)

Třída vyhazuje vyjímky typu iDokladException.

Vytvoření nové faktury
----------------------

[](#vytvoření-nové-faktury)

```
$request->addMethodType('POST');
$data = array(
    'PurchaserId' => 3739927,
    'IssuedInvoiceItems' => [array(
        'Name' => 'Testovaci polozka',
        'UnitPrice' => 100,
        'Amount' => 1
    )]
);
$request->addPostParameters($data);
```

Případně můžeme nově zadat method type pomocí fce, což by nyní vypadalo následovně:

```
$data = array(
    'PurchaserId' => 3739927,
    'IssuedInvoiceItems' => [array(
        'Name' => 'Testovaci polozka',
        'UnitPrice' => 100,
        'Amount' => 1
    )]
);
$request->post()->addPostParameters($data);
```

Použití filtru a třídění
------------------------

[](#použití-filtru-a-třídění)

Pro použití filtru použijeme třídu iDokladFilter. Parametry můžeme zadat hned při založení třídy, první parametr je jméno pole, které chceme filtrovat, druhý parametr je operátor, poslední parametr je hodnota.

```
$filter = new iDokladFilter('DocumentNumber', '==', '20170013');
$request->addFilter($filter);
```

Filtrů můžeme přidat několik zároveň a poté můžeme zvolit vztah mezi filtry, aby platili všechny zároveň (and), nebo alespoň jeden (or).

```
$request->setFilterType('or');
```

Pro použití třídění použijeme třídu iDokladSort. Opět můžeme hned přidávat parametry, kdy první parametr je jméno pole a druhý parametr je dobrovolný a lze zadat, zda řadit vzestupně (asc) či sestupně (desc).

```
$sort = new iDokladSort('DocumentNumber', 'desc');
$request->addSort($sort);
```

Stránkování a počet vrácených položek
-------------------------------------

[](#stránkování-a-počet-vrácených-položek)

```
$request->setPage(2);
$request->setPageSize(5);
```

Vyhazování exception při návratových kódech vyšších nebo rovno 400
------------------------------------------------------------------

[](#vyhazování-exception-při-návratových-kódech-vyšších-nebo-rovno-400)

Pokud chceme zapnout vyhazování exception při http návratových kódech vyšších rovno 400, stačí nám zavolat fci

```
$iDoklad->httpExceptionsOn()
```

Upload přílohy
--------------

[](#upload-přílohy)

Pokud chceme uploadovat přílohu, stačí nám použít metodu addFile nad request objektem.

```
$request = new \malcanek\iDoklad\request\iDokladRequest('Attachments/{documentId}/{documentType}');
$request->addFile(new CURLFile(path_to_your_file));
$response = $iDoklad->sendRequest($request);
```

Jiné úpravy
-----------

[](#jiné-úpravy)

Pokud potřebujeme použít metody POST, PUT, PATCH, DELETE, použijeme k tomu metodu addMethodType nad objektem iDokladRequest.

Příklady
--------

[](#příklady)

Příklady použití lze vidět v souborech acf.php a ccf.php. acf.php obsahuje příklad použití authorization code flow, ccf obsahuje příklad na client credentials flow, stačí doplnit vlastní client ID, client secret a redirect URI.

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance30

Infrequent updates — may be unmaintained

Popularity39

Limited adoption so far

Community20

Small or concentrated contributor base

Maturity16

Early-stage or recently created project

 Bus Factor1

Top contributor holds 59.1% 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.

### Community

Maintainers

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

---

Top Contributors

[![malcanek](https://avatars.githubusercontent.com/u/21026285?v=4)](https://github.com/malcanek "malcanek (13 commits)")[![martinveverka](https://avatars.githubusercontent.com/u/2683415?v=4)](https://github.com/martinveverka "martinveverka (2 commits)")[![hladpe](https://avatars.githubusercontent.com/u/23253970?v=4)](https://github.com/hladpe "hladpe (2 commits)")[![mskocik](https://avatars.githubusercontent.com/u/25513620?v=4)](https://github.com/mskocik "mskocik (1 commits)")[![petrvacha](https://avatars.githubusercontent.com/u/659610?v=4)](https://github.com/petrvacha "petrvacha (1 commits)")[![xpalko](https://avatars.githubusercontent.com/u/8526481?v=4)](https://github.com/xpalko "xpalko (1 commits)")[![martinille](https://avatars.githubusercontent.com/u/2567894?v=4)](https://github.com/martinille "martinille (1 commits)")[![mlazovla](https://avatars.githubusercontent.com/u/2652944?v=4)](https://github.com/mlazovla "mlazovla (1 commits)")

### Embed Badge

![Health badge](/badges/malcanek-idoklad-v2/health.svg)

```
[![Health](https://phpackages.com/badges/malcanek-idoklad-v2/health.svg)](https://phpackages.com/packages/malcanek-idoklad-v2)
```

PHPackages © 2026

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