diff --git a/README.md b/README.md index 0fc6f77..bce0f39 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # Vyfakturuj API PHP -Příhlady API napojení na aplikaci Vyfakturuj.cz v programovacím jazyce PHP + +Příklady API napojení na aplikaci [Vyfakturuj.cz](https://www.vyfakturuj.cz/) v programovacím jazyce PHP + +Podrobnou dokumentace k API najdete na [http://docs.vyfakturujcz.apiary.io/](http://docs.vyfakturujcz.apiary.io/) ## Postup instalace 1. V souboru /examples/config.php doplnit potřebné údaje @@ -8,15 +11,20 @@ Příhlady API napojení na aplikaci Vyfakturuj.cz v programovacím jazyce PHP 4. V souboru /examples/3-contact.php se nachází ukázka, jak vytvářet, updatovat, získávat a mazat kontakty 5. V souboru /examples/4-template.php se nachází ukázka, jak vytvářet, updatovat, získávat a mazat pravidelné faktury a šablony 6. V souboru /examples/5-invoice-sendMail.php se nachází ukázka, jak odeslat e-mail s fakturou -7. V souboru /examples/6-invoice-setPayment se nachází ukázka, jak provést uhrazení faktury +7. V souboru /examples/6-invoice-setPayment.php se nachází ukázka, jak provést uhrazení faktury +8. V souboru /examples/7-test-invoice-download.php se nachází ukázka, jak pracovat s funkci test_invoice__asPdf(). Tato funkce vrátí PDF aniž by uložila dokument (fakturu) do systému. Hodí se zejména pokud potřebujeme odladit vzhled faktury ## Changelog +### Verze 2.1.3 + ++ Přidání podpůrné funkce test_invoice__asPdf() - vytvoření faktury a stažení v PDF bez uložení v systému + ### Verze 2.1.2 + Možnost uhradit doklad (fakturu) -+ Popora souvisejících dokladů (faktur) v odpovědích ++ Podpora souvisejících dokladů (faktur) v odpovědích ### Verze 2.1.1 diff --git a/examples/7-test-invoice-download.php b/examples/7-test-invoice-download.php new file mode 100644 index 0000000..5ab287f --- /dev/null +++ b/examples/7-test-invoice-download.php @@ -0,0 +1,40 @@ + '123456789', + 'customer_DIC' => 'CZ123456789', + 'customer_name' => 'Ukázková Firma', + 'customer_street' => 'Pouliční 79/C', + 'customer_city' => 'Praha', + 'customer_zip' => '10300', + 'customer_country' => 'Česká republika', + 'items' => array( + array( + 'text' => 'Stěrač na ponorku', + 'unit_price' => 990.25, + 'vat_rate' => 15, + ), + array( + 'text' => 'Kapalina do ostřikovačů 250 ml', + 'unit_price' => 59, + 'vat_rate' => 15, + ), + array( + 'text' => 'Doprava', + 'unit_price' => 0, + 'vat_rate' => 0, + ) + ) +); + +$result = $vyfakturuj_api->test_invoice__asPdf($opt); + +echo '

Nepodařilo se stáhnout PDF:

'; +echo '
'.print_r($result,true).'
'; + + +exit; diff --git a/libs/VyfakturujAPI.class.php b/libs/VyfakturujAPI.class.php index 45000be..ec9a13b 100644 --- a/libs/VyfakturujAPI.class.php +++ b/libs/VyfakturujAPI.class.php @@ -4,7 +4,7 @@ * Třída pro práci s API Vyfakturuj.cz * * @author Ing. Martin Dostál - * @version 2.1.2 + * @version 2.1.3 */ class VyfakturujAPI{ @@ -219,6 +219,32 @@ public function test(){ return $this->_get('test/'); } + /** + * Test faktury v PDF. + * Pošle data na server, vytvoří na serveru fakturu kterou ale neuloží a pošle zpět ve formátu PDF. + * Pokud se podaří fakturu vytvořit, pak je poslána ve formátu PDF na výstup. Jinak je vráceno pole. + * + * @param array $data + * @return array + */ + public function test_invoice__asPdf($data){ + $result = $this->_post('test/invoice/download/',$data); + if(array_key_exists('content',$result)){ + ob_end_clean(); + $content = base64_decode($result['content']); + header("Cache-Control: public"); + $filename = $result['filename']; + header("Content-Description: File Transfer"); + header("Content-Disposition: attachment; filename=\"".$filename.".pdf\""); + header('Content-type: application/pdf'); + header("Content-Transfer-Encoding: binary"); + header("Content-Length: ".strlen($content)); + echo $content; + exit; + } + return $result; + } + private function _connect($path,$method,$data = array()){ $curl = curl_init(); curl_setopt($curl,CURLOPT_URL,static::$URL.$path); @@ -246,6 +272,7 @@ private function _connect($path,$method,$data = array()){ $response = curl_exec($curl); $this->lastInfo = curl_getinfo($curl); + $this->lastInfo['dataSend'] = $data; curl_close($curl); $return = json_decode($response,true);