Integrace s vaší administrací (doporučená implementace)

API slouží ke zjednodušení a automatizaci procesů po vytvoření faktury. Poskytuje veškeré operace s fakturou, které lze provést z administrace e-shopu. Jedná se o doporučený způsob implementace, který e-shopu umožní plně automatizovat všechny procesy.

Čtyři akce mění stav faktury: aktivace, zrušení, úprava a vrácení položek faktury. Dostupnost těchto akcí závisí na stavu faktury. Po aktivaci již nelze fakturu upravovat ani rušit. Místo toho lze pouze nahlásit vrácení.

Kdykoli:

Před aktivací faktury:

Po aktivaci faktury:

Upozornění: Všechny chybové stavy mohou skončit chybou. Může jít o validační chybu dat, neautorizovaný stav faktury nebo interní chybu serveru. V těchto případech je stav odpovědi 400 nebo 500 a knihovna navíc vyhodí výjimku. Pokud je API navázáno na akci ve vašem e-shopu, je vhodné volat API před uložením dat do databáze a při chybě API akci zrušit a uživateli zobrazit chybovou zprávu.

Získání dat

Aktuální data faktury lze získat odesláním požadavku GET v knihovně voláním metody GET. To je možné kdykoli bez ohledu na stav faktury.

<?php $invoice = new Twisto\Invoice($twisto, '10123456'); $invoice->get(); echo $invoice->pdf_url; ?>

Odpověď obsahuje všechny informace, které se o faktuře zobrazují v administraci e-shopu.

Poznámka: Všechny akce vracejí v odpovědi aktualizovaná data. Po úspěšné akci tedy není nutné znovu volat metodu get v knihovně.

Aktivace faktury

Aktivace faktury probíhá v okamžiku odeslání objednávky z e-shopu zákazníkovi. Aktivace automaticky nastaví datum splatnosti a vygeneruje PDF fakturu s platebními údaji pro zákazníka. Součástí odpovědi je adresa pdf_url, ze které lze stáhnout soubor PDF faktury. Fakturu lze aktivovat pouze jednou, jinak API vrátí chybu. Také nelze aktivovat zrušenou fakturu.

<?php $invoice = new Twisto\Invoice($twisto, '10123456'); $invoice->activate(); echo $invoice->pdf_url; ?>

Zrušení faktury

Zrušit lze pouze fakturu, která není aktivovaná ani zrušená, jinak API vrátí chybu.

<?php $invoice = new Twisto\Invoice($twisto, '10123456'); $invoice->cancel(); ?>

Úprava faktury

Upravit lze pouze fakturu, která není aktivovaná ani zrušená, jinak API vrátí chybu. Povolena je jen úprava položek objednávky. Požadavek musí obsahovat všechny položky faktury v poli items. Položky se párují podle atributu product_id. Po odeslání požadavku se položky přepíšou. Položky, které byly součástí faktury, ale v požadavku chybí, budou smazány. Chcete-li přidat jen jednu položku, musíte vypsat i všechny ostatní.

<?php $invoice = new Twisto\Invoice($twisto, '10123456'); // stačí vyplnit pole items, není nutné mít načtená všechna data faktury $invoice->items = array( new Twisto\Item( Twisto\Item::TYPE_DEFAULT, // typ 'Agatha Christie: The Secret Adversary', // název 942, // product_id 1, // quantity 285.31, // price_vat 15, // vat null, // ean_code '9781609421052' // isbn_code ), new Twisto\Item( Twisto\Item::TYPE_SHIPMENT, // typ 'Doprava DPD', // název 'shipment', // product_id 1, // quantity 119, // price_vat 21 // vat ), new Twisto\Item( Twisto\Item::TYPE_PAYMENT, // typ 'Twisto Faktura – platím až po vyzkoušení', // název 'payment', // product_id 1, // quantity 0, // price_vat 21 // vat ), ); $invoice->save(); // po uložení byla celková cena faktury přepočítána echo $invoice->total_price_vat; ?>

Rozdělení faktury

Rozdělení faktur slouží pro případy, kdy se část zboží z původní objednávky expeduje dříve než zbytek a obě části by proto měly mít jiné datum splatnosti.

Rozdělení je povoleno jen zákazníkům, u kterých je tato funkce zapnutá (aktuálně je pro váš e-shop vypnutá). Kontaktujte nás pro zapnutí nebo vypnutí.

Rozdělit lze jen faktury, které ještě nejsou aktivované a mají více než jeden kus (quantity) zboží. Rozdělit lze pouze zboží. Pokud chcete k nově vytvořené faktuře doplnit poplatek za dopravu, použijte úpravu faktury. Maximální počet rozdělení faktury není omezen. Faktury vytvořené rozdělením však již dále rozdělit nelze.

<?php $invoice = new Twisto\Invoice($twisto, '123'); // definice položek, které se mají přenést na samostatnou fakturu // přenos 4 kusů s product_id 123 a jednoho kusu s product_id 432 na novou fakturu $items = array( new Twisto\ItemSplit("123", 4) new Twisto\ItemSplit("432", 1) ); // objekt `$split_invoice` bude obsahovat novou fakturu $split_invoice = $invoice->splitItems($items); ?>

Nahlášení vrácení faktury

Nahlásí příchozí vrácení faktury. Prodlouží datum splatnosti faktury. Tato funkce není ve výchozím stavu povolena.

<?php $invoice = new Twisto\Invoice($twisto, '123'); $invoice->reportReturn(); ?>

Zrušení nahlášeného vrácení faktury

Pokud bylo vrácení faktury nahlášeno a ještě neproběhlo, lze nahlášené vrácení zrušit, pokud na to faktura splňuje podmínky.

<?php $invoice = new Twisto\Invoice($twisto, '10123456'); $invoice->cancelReportReturn(); ?>

Částečné vrácení faktury

Vrácení položek je dostupné jen pro aktivované faktury. Vrátit lze jen položky zboží, slev a dopravy (TYPE_DEFAULT, TYPE_DISCOUNT a TYPE_SHIPMENT). Při vrácení všech položek se automaticky označí jako vrácené i položky dopravy a platby. U položek typu sleva (TYPE_DISCOUNT) lze měnit cenu jen pokud je počet kusů (quantity) roven 1. Má-li sleva více než 1 kus, cenu nelze měnit.

<?php $invoice = new Twisto\Invoice($twisto, '10123456'); $invoice->returnItems( // vrácení 1 kusu s product_id 942 array(new Twisto\ItemReturn(942, 1)), // změna ceny slevové položky na -42 Kč s product_id 852 array(new Twisto\ItemDiscountReturn(852, -42)) ); // po vrácení byla celková cena faktury přepočítána echo $invoice->total_price_vat; ?>

Úplné vrácení faktury

Vrátit lze jen aktivovanou fakturu.

<?php $invoice = new Twisto\Invoice($twisto, '10123456'); $invoice->returnAll(); ?>

Snížení ceny faktury

Snížení ceny je možné jen u aktivovaných faktur. Metoda slouží k vrácení části nebo celé faktury v případech, kdy nelze použít ID položek.

Snížení ceny faktury je povoleno jen zákazníkům, u kterých je tato funkce zapnutá (u vašeho e-shopu je zapnutá). Kontaktujte nás pro zapnutí nebo vypnutí.

Cenu faktury lze snížit pouze o kladnou částku, která je menší nebo rovna celkové ceně faktury.

<?php $invoice = new Twisto\Invoice($twisto, '10123456'); $invoice->refund( // Snížení ceny faktury o 12,34 Kč 12.34 ); ?>

Seznam faktur

Výpis a vyhledávání ve všech fakturách. Maximálně 100 položek na stránku, next obsahuje odkaz na další stránku a previous na předchozí.

Parametry dotazu pro vyhledávání

NázevMaximální délkaHodnota
date_fromISO 8601Faktury s datem větším nebo rovným tomuto
date_toISO 8601Faktury s datem menším nebo rovným tomuto
invoice_id10ID faktury Twisto
eshop_invoice_id10ID faktury e-shopu. Pokud je vyplněno, použije se jako variabilní symbol platby na účet e-shopu. Povoleny jsou pouze číslice.
external_id50ID objednávky / faktury e-shopu. Pokud je vyplněno, vrátí se v odpovědích API a zobrazí v přehledu XLSX.
customer_email254E-mail zákazníka
provider_id254ID objednávky platebního poskytovatele. Je vyžadován formát EYDDDNNNNNNNN.
{ "next": "http://api.twisto.cz/v2/invoice/list/?cursor=cD00NjQ%3D", "previous": null, "results": [ { "invoice_id": "19383193", "eshop_invoice_id": "", "customer_email": "gigatest9@twisto.cz", "date_created": "2018-02-05T00:00:00Z", "date_returned": "2018-02-28T11:14:00Z", "date_cancelled": null, "date_activated": "2018-02-05T00:00:00Z", "date_paid": null, "date_due": "2018-03-01", "initial_date_due": "2018-03-01", "total_price_vat": "0.00", "pdf_url": "http://api.twisto.cz/invoice/pdtk31vk3lt0uocq1ws679n4cbb5ecxoo8yafncifs7qmip40l/19383193.pdf" } ] }
curl --include \ --header "Content-Type: application/json" \ --header "Authorization: your-public-key,your-security-key" \ 'https://api.twisto.cz/v2/invoice/list/'