From 52e5be0c60a7ec23c3a1c70906d578e23a9f45b5 Mon Sep 17 00:00:00 2001 From: DY Date: Tue, 26 Jul 2016 15:37:01 +0200 Subject: [PATCH] Verze 2.1.0 --- .gitignore | 1 + 1-test.php | 12 ++ 2-invoice.php | 112 +++++++++++++++++ 3-contact.php | 114 ++++++++++++++++++ 4-template.php | 132 ++++++++++++++++++++ README.md | 7 ++ changelog.txt | 11 ++ inc/VyfakturujAPI.class.php | 233 ++++++++++++++++++++++++++++++++++++ inc/inc.php | 7 ++ 9 files changed, 629 insertions(+) create mode 100644 .gitignore create mode 100644 1-test.php create mode 100644 2-invoice.php create mode 100644 3-contact.php create mode 100644 4-template.php create mode 100644 changelog.txt create mode 100644 inc/VyfakturujAPI.class.php create mode 100644 inc/inc.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c094bf5 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +nbproject/ \ No newline at end of file diff --git a/1-test.php b/1-test.php new file mode 100644 index 0000000..bf50e1d --- /dev/null +++ b/1-test.php @@ -0,0 +1,12 @@ +test(); + +echo '

Test připojení k serveru:

'; +echo '
'.print_r($result,true).'
'; + + +exit; diff --git a/2-invoice.php b/2-invoice.php new file mode 100644 index 0000000..369a54b --- /dev/null +++ b/2-invoice.php @@ -0,0 +1,112 @@ + '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, + ) + ) +); + +$inv = $vyfakturuj_api->createInvoice($opt); // vytvoříme novou fakturu + +echo '

Vytvořili jsme fakturu:

'; +echo '
'.print_r($inv,true).'
'; + +$_ID_DOKUMENTU = $inv['id']; // uložíme si ID nového dokumentu +# +# +#################################################################################### +#################################################################################### +##### ##### +##### Úprava již vytvoření faktury (budeme upravovat právě vytvořenou fakturu) ##### +##### ##### +#################################################################################### +#################################################################################### +# +# + +$opt = array( + 'customer_name' => 'Ukázková Firma po úpravě',// Změníme název + 'items' => array(// odstraníme druhou položku a necháme jen jednu + array( + 'text' => 'Stěrač na ponorku', + 'unit_price' => 990.25, + 'vat_rate' => 15, + ), + ) +); + +$inv2 = $vyfakturuj_api->updateInvoice($_ID_DOKUMENTU,$opt); // upravíme fakturu + +echo '

Upravili jsme fakturu:

'; +echo '
'.print_r($inv2,true).'
'; + + +# +# +#################################################################################### +#################################################################################### +##### ##### +##### Získání informací o již vytvoření faktuře ##### +##### ##### +#################################################################################### +#################################################################################### +# +# + + +$inv3 = $vyfakturuj_api->getInvoice($_ID_DOKUMENTU); + +echo '

Načetli jsme data o faktuře ze systému:

'; +echo '
'.print_r($inv3,true).'
'; + + +# +# +#################################################################################### +#################################################################################### +##### ##### +##### Smazání faktury ##### +##### ##### +#################################################################################### +#################################################################################### +# +# + +exit; // zablokování smazání + +$inv4 = $vyfakturuj_api->deleteInvoice($_ID_DOKUMENTU); + +echo '

Načetli jsme data o průběhu smazání faktury ze systému:

'; +echo '
'.print_r($inv4,true).'
'; +exit; diff --git a/3-contact.php b/3-contact.php new file mode 100644 index 0000000..f05f5f5 --- /dev/null +++ b/3-contact.php @@ -0,0 +1,114 @@ + '123456789', + 'name' => '#API - Ukázkový kontakt',// "#API - " dáváme na začátek, chceme mít tento kontakt na začátku našeho adresáře + 'note' => 'Kontakt vytvořený přes API', + 'company' => 'Ukázkový kontakt', + 'street' => 'Pouliční 79/C', + 'city' => 'Praha', + 'zip' => '10300', + 'country' => 'Česká republika', + 'mail_to' => 'info@examle.com', +); + +$contact = $vyfakturuj_api->createContact($opt); // vytvoříme novou fakturu + +echo '

Vytvořili jsme kontakt:

'; +echo '
'.print_r($contact,true).'
'; + +$_ID_KONTAKTU = $contact['id']; // uložíme si ID nového kontaktu +# +# +##################################################################################### +##################################################################################### +##### ##### +##### Úprava ##### +##### ##### +##################################################################################### +##################################################################################### +# +# + +$opt = array( + 'name' => '#API - Ukázkový kontakt - po úpravě',// +); + +$contact2 = $vyfakturuj_api->updateContact($_ID_KONTAKTU,$opt); // upravíme kontakt + +echo '

Upravili jsme fakturu:

'; +echo '
'.print_r($contact2,true).'
'; + + +# +# +##################################################################################### +##################################################################################### +##### ##### +##### Čtení ##### +##### ##### +##################################################################################### +##################################################################################### +# +# + + +$contact3 = $vyfakturuj_api->getContact($_ID_KONTAKTU); // načte 1 konkrétní kontakt +// $contact3 = $vyfakturuj_api->getContacts(); // vrátí všechny moje kontakty + +echo '

Načetli jsme data o kontaktu ze systému:

'; +echo '
'.print_r($contact3,true).'
'; + + + + + +# +# +##################################################################################### +##################################################################################### +##### ##### +##### Smazání ##### +##### ##### +##################################################################################### +##################################################################################### +# +# + +exit; // zablokování smazání + +$contact4 = $vyfakturuj_api->deleteContact($_ID_KONTAKTU); + +echo '

Načetli jsme data o průběhu smazání kontaktu ze systému:

'; +echo '
'.print_r($contact4,true).'
'; + + +# +# +##################################################################################### +##################################################################################### +##### ##### +##### Získání všech kontaktů ##### +##### ##### +##################################################################################### +##################################################################################### +# +# + + +exit; diff --git a/4-template.php b/4-template.php new file mode 100644 index 0000000..d8378c0 --- /dev/null +++ b/4-template.php @@ -0,0 +1,132 @@ + '123456789', + 'name' => '#API - Ukázkový kontakt pro pravidelnou fakturu',// "#API - " dáváme na začátek, chceme mít tento kontakt na začátku našeho adresáře + 'note' => 'Kontakt vytvořený přes API', + 'company' => 'Ukázkový kontakt', + 'street' => 'Pouliční 79/C', + 'city' => 'Praha', + 'zip' => '10300', + 'country' => 'Česká republika', + 'mail_to' => 'info@examle.com', +); +$contact = $vyfakturuj_api->createContact($opt_contact); // vytvoříme nový kontakt + +$_ID_CONTACT = $contact['id']; + +$opt_template = array( + 'id_customer' => $_ID_CONTACT,// vložíme právě vytvořený kontakt +// 'id_customer' => 20224,// vložíme právě vytvořený kontakt + 'type' => 2,// chceme pravidelnou fakturu + 'name' => '#API - Test pravidelné faktury', +// 'id_customer' => $contact['id'],// vložíme právě vytvořený kontakt + '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, + ) + ) +); + + +$ret = $vyfakturuj_api->createTemplate($opt_template); // vytvoříme novou fakturu + +echo '

Vytvořili jsme pravidelnou fakturu:

'; +echo '
'.print_r($ret,true).'
'; + +$_ID_ITEM = $ret['id']; // uložíme si ID nového zaznamu +# +# +##################################################################################### +##################################################################################### +##### ##### +##### Úprava ##### +##### ##### +##################################################################################### +##################################################################################### +# +# + +$opt_template = array( + 'name' => '#API + Test pravidelné faktury',// změníme název + 'items' => array( + array( + 'text' => 'Stěrač na ponorku', + 'unit_price' => 990.25, + 'vat_rate' => 21,// změníme DPH + ), + array( + 'text' => 'Kapalina do ostřikovačů 250 ml', + 'unit_price' => 59, + 'vat_rate' => 21,// změníme DPH + ) + ) +); + +$ret2 = $vyfakturuj_api->updateTemplate($_ID_ITEM,$opt_template); // upravíme zaznam + +echo '

Upravili jsme pravidelnou fakturu:

'; +echo '
'.print_r($ret2,true).'
'; + + +# +# +##################################################################################### +##################################################################################### +##### ##### +##### Čtení ##### +##### ##### +##################################################################################### +##################################################################################### +# +# + + +$ret3 = $vyfakturuj_api->getTemplate($_ID_ITEM); + +echo '

Načetli jsme data o pravidelné faktuře faktuře ze systému:

'; +echo '
'.print_r($ret3,true).'
'; + + +# +# +##################################################################################### +##################################################################################### +##### ##### +##### Smazání ##### +##### ##### +##################################################################################### +##################################################################################### +# +# +exit; // zablokování smazání + +$ret4 = $vyfakturuj_api->deleteTemplate($_ID_ITEM); +$ret5 = $vyfakturuj_api->deleteContact($_ID_CONTACT); + +echo '

Načetli jsme data o průběhu smazání faktury ze systému:

'; +echo '
'.print_r($ret4,true).'
'; +echo '
'.print_r($ret5,true).'
'; +exit; diff --git a/README.md b/README.md index 0065671..ee19383 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,9 @@ # Vyfakturuj API PHP API napojení na aplikace Vyfakturuj.cz + +## Postup instalace +1) V souboru /inc/inc.php doplnit potřebné údaje +2) Spustit 1-test.php a otestovat připojení na server (musí se zobrazit welcome zpráva s datumem) +3) V souboru 2-invoice.php se nachází ukázka, jak vytvářet, updatovat, získávat a mazat faktury +4) V souboru 3-contact.php se nachází ukázka, jak vytvářet, updatovat, získávat a mazat kontakty +5) V souboru 4-template.php se nachází ukázka, jak vytvářet, updatovat, získávat a mazat pravidelné faktury a šablony diff --git a/changelog.txt b/changelog.txt new file mode 100644 index 0000000..d93ecf6 --- /dev/null +++ b/changelog.txt @@ -0,0 +1,11 @@ +Verze 2.1.0 +----------- ++ Vytváření, úprava, čtení a mazání kontaktů ++ Vytváření, úprava, čtení a mazání šablon ++ Vytváření, úprava, čtení a mazání pravidelných faktur ++ Mazání faktur + +Verze 2.0.0 +----------- ++ Připojení na server ++ Vytváření, úprava a čtení faktur \ No newline at end of file diff --git a/inc/VyfakturujAPI.class.php b/inc/VyfakturujAPI.class.php new file mode 100644 index 0000000..db97ea7 --- /dev/null +++ b/inc/VyfakturujAPI.class.php @@ -0,0 +1,233 @@ + + * @version 2.1.0 + */ +class VyfakturujAPI{ + + protected $login = null; + protected $apiHash = null; + protected static $URL = 'https://www.vyfakturuj.cz/api/2.0/'; + + public function __construct($login,$apiHash){ + $this->login = $login; + $this->apiHash = $apiHash; + } + + const METHOD_POST = 'post', + METHOD_GET = 'get', + METHOD_DELETE = 'delete', + METHOD_PUT = 'put'; + + /** + * Vytvoření nového dokumentu + * + * @param array $data Data, která chceme použít při vytvoření. + * @return array Vrátí kompletní informace o dokumentu + */ + public function createInvoice($data){ + return $this->_post('/invoice/',$data); + } + + /** + * Úprava již vytvořeného dokumentu + * + * @param int $id ID dokumentu + * @param array $data Data, která chceme upravit + * @return array Vrátí kompletní informace o dokumentu + */ + public function updateInvoice($id,$data){ + return $this->_put('/invoice/'.$id.'/',$data); + } + + /** + * Vratí informace o dokladu + * + * @param int $id ID dokumentu + * @return array Vrátí kompletní informace o dokumentu + */ + public function getInvoice($id){ + return $this->_get('/invoice/'.$id.'/'); + } + + /** + * Vrátí seznam všech faktur + * + * @return array + */ + public function getInvoices(){ + return $this->_get('/invoice/'); + } + + /** + * Smazání faktury + * + * @param int $id ID dokumentu + * @return array Vrátí stav operace + */ + public function deleteInvoice($id){ + return $this->_delete('/invoice/'.$id.'/'); + } + + /** + * Vytvoření nového kontaktu v adresáři + * + * @param array $data Data, která chceme použít při vytvoření. + * @return array Vrátí kompletní informace o kontaktu + */ + public function createContact($data){ + return $this->_post('/contact/',$data); + } + + /** + * Úprava již vytvořeného kontaktu + * + * @param int $id ID kontaktu + * @param array $data Data, která chceme upravit + * @return array Vrátí kompletní informace o kontaktu + */ + public function updateContact($id,$data){ + return $this->_put('/contact/'.$id.'/',$data); + } + + /** + * Vratí informace o kontaktu + * + * @param int $id ID kontaktu + * @return array Vrátí kompletní informace o kontaktu + */ + public function getContact($id){ + return $this->_get('/contact/'.$id.'/'); + } + + /** + * Vrátí seznam všech kontaktů + * + * @return array + */ + public function getContacts(){ + return $this->_get('/contact/'); + } + + /** + * Smazání kontaktu v adresáři + * + * @param int $id ID kontaktu + * @return array Vrátí stav operace + */ + public function deleteContact($id){ + return $this->_delete('/contact/'.$id.'/'); + } + + /** + * Vytvoření nové šablony|pravidelné faktury + * + * @param array $data Data, která chceme použít při vytvoření. + * @return array Vrátí kompletní informace o položce + */ + public function createTemplate($data){ + return $this->_post('/template/',$data); + } + + /** + * Úprava již vytvořené šablony|pravidelné faktury + * + * @param int $id ID šablony|pravidelné faktury + * @param array $data Data, která chceme upravit + * @return array Vrátí kompletní informace o položce + */ + public function updateTemplate($id,$data){ + return $this->_put('/template/'.$id.'/',$data); + } + + /** + * Vratí informace o šabloně|pravidelné faktuře + * + * @param int $id ID šablony|pravidelné faktury + * @return array Vrátí kompletní informace + */ + public function getTemplate($id){ + return $this->_get('/template/'.$id.'/'); + } + + /** + * Vrátí seznam všech šablon|pravidelných faktur + * + * @return array + */ + public function getTemplates(){ + return $this->_get('/template/'); + } + + /** + * Smazání šablony|pravidelné faktury + * + * @param int $id ID šablony|pravidelné faktury + * @return array Vrátí stav operace + */ + public function deleteTemplate($id){ + return $this->_delete('/template/'.$id.'/'); + } + + /** + * Testovací funkce pro ověření správného spojení se serverem + * + * @return array + */ + public function test(){ + return $this->_get('/test/'); + } + + private function _connect($path,$method,$data = array()){ + $curl = curl_init(); + curl_setopt($curl,CURLOPT_URL,static::$URL.$path); + curl_setopt($curl,CURLOPT_RETURNTRANSFER,TRUE); + curl_setopt($curl,CURLOPT_FAILONERROR,FALSE); + curl_setopt($curl,CURLOPT_HTTPAUTH,CURLAUTH_BASIC); + curl_setopt($curl,CURLOPT_USERPWD,$this->login.':'.$this->apiHash); + curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false); + curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,2); + curl_setopt($curl,CURLOPT_HTTPHEADER,array('Content-Type: application/json')); + + switch($method){ + case self::METHOD_POST: + curl_setopt($curl,CURLOPT_POST,TRUE); + curl_setopt($curl,CURLOPT_POSTFIELDS,json_encode($data)); + break; + case self::METHOD_PUT: + curl_setopt($curl,CURLOPT_CUSTOMREQUEST,"PUT"); + curl_setopt($curl,CURLOPT_POSTFIELDS,json_encode($data)); + break; + case self::METHOD_DELETE: + curl_setopt($curl,CURLOPT_CUSTOMREQUEST,"DELETE"); + break; + } + + $response = curl_exec($curl); +// $info = curl_getinfo($curl); + curl_close($curl); + + $return = json_decode($response,true); + return $return ? $return : $response; + } + + private function _get($path,$data = null){ + return $this->_connect($path,self::METHOD_GET,$data); + } + + private function _post($path,$data = null){ + return $this->_connect($path,self::METHOD_POST,$data); + } + + private function _put($path,$data = null){ + return $this->_connect($path,self::METHOD_PUT,$data); + } + + private function _delete($path,$data = null){ + return $this->_connect($path,self::METHOD_DELETE,$data); + } + +} diff --git a/inc/inc.php b/inc/inc.php new file mode 100644 index 0000000..64580db --- /dev/null +++ b/inc/inc.php @@ -0,0 +1,7 @@ + API +