Přejít na obsah

Nastavení cookies

Zvolte, které druhy cookies povolíte. Svou volbu můžete kdykoli změnit přes Nastavení cookies v dolní části každé stránky. Prohlášení o ochraně osobních údajů

Nezbytné

Vždy zapnuté

Potřebné pro přihlášení, uchování košíku a zapamatování vašich voleb. Jsou vždy zapnuté.

Které cookies?
  • weboke_sessie, weboke_klant, weboke_remember: vaše relace a trvalé přihlášení
  • weboke_basket: váš košík
  • wkBtwIncl: zobrazení cen s DPH nebo bez DPH
  • wok_cookies: vaše volba cookies, 12 měsíců

Měří, která reklama vede k návštěvě nebo objednávce, abychom neplatili za reklamy, které nic nepřinášejí.

Které cookies?
  • Google Ads přes Google Tag Manager (_gcl_au, _gcl_aw), až 90 dní
  • OpenAI Ads, reklamy v ChatGPT
  • wok_aff: partner, který vás k nám doporučil (partnerský program), 60 dní

4,6

Země a jazyk

Každá země má vlastní web s cenami a DPH dané země.

Zobrazit

Co Váš e-shop veřejně zobrazuje

Modul 2: Instalace a nastavení · Doba čtení: 10 minut

Cíl lekce: Po této lekci dokážete vysvětlit, co jsou Store API a REST API WooCommerce, která data mají být veřejná a která ne, a jak bezpečně používat API klíče a webhooky.

Klíčové pojmy: API, REST API WordPressu, Store API (wc/store/v1), REST API WooCommerce (wc/v3), JSON, veřejné a chráněné, API klíč, práva ke čtení a zápisu, nejmenší potřebná práva, webhook, tajný klíč webhooku, X-WP-Total

Obchod se dvěma vchody

Návštěvník vidí Váš e-shop jako webové stránky. Váš e-shop má ale také „vchody“ pro programy: adresy, na kterých si program může vyžádat nebo odeslat data, bez vzhledu stránky. Takový vchod se nazývá API (application programming interface). WordPress má jedno pod /wp-json/, je to REST API. Kurz o WordPressu v lekci 7.3 ukázal, že si tam lze například vyžádat uživatelská jména, pokud nic neochráníte.

WooCommerce přidává dvě vlastní API s velmi odlišným účelem:

Store APIREST API WooCommerce
Adresa/wp-json/wc/store/v1/.../wp-json/wc/v3/...
Pro kohoProhlížeč návštěvníka (bloky košíku a pokladny, lekce 2.2)Jiné programy: účetnictví, sklad, aplikace, propojení s tržištěm
Je potřeba klíčNe, veřejnéAno, API klíč správce (nebo přihlášený uživatel s oprávněním)
Co obsahujeProdukty, ceny, stav skladu, kategorie, hodnocení; košík a objednávku samotného návštěvníkaVše: objednávky všech zákazníků, zákazníky, kupóny, nastavení, přehledy

Store API je tedy vchod do výlohy: co je ve Vašem obchodě na stránce produktu, je v něm také, jen jako data. REST API WooCommerce jsou zadní dveře do skladu: ty mají být zamčené.

Store API: co si může vyžádat návštěvník (a kdokoli)

Otevřete v prohlížeči:

https://shop.example.com/wp-json/wc/store/v1/products

Dostanete seznam ve formátu JSON, což je textový formát pro data. U každého produktu uvidíte mimo jiné název, slug, typ (jednoduchý, variabilní), adresu stránky produktu (permalink), SKU, ceny, obrázky, kategorie, zda je skladem a zda je na prodej. V hlavičkách odpovědi je X-WP-Total: počet produktů, které obchod zobrazuje návštěvníkům.

Několik věcí, které je dobré vědět:

  • Ceny jsou v centech. Konvice na čaj za € 34,95 (≈ 852 Kč) je uvedena jako "price": "3495" s "currency_minor_unit": 2. Vydělíte stem. Zda jde o cenu s DPH, nebo bez DPH, závisí na Vašem nastavení „Zobrazit ceny v obchodě“ (lekce 4.1). Tuto vlastnost využijeme v úkolu lekce 4.1.
  • Jen to, co je viditelné. Produkty, které jsou koncept, soukromé nebo skryté v katalogu, Store API nezapočítává. Proto může být X-WP-Total nižší než počet ve Vaší administraci.
  • Číst smí každý, zapisovat jen tak ne. Vložit něco do košíku nebo zaplatit přes Store API lze jen s jednorázovým kódem (nonce) ze stránky, a to jen pro vlastní košík daného návštěvníka.

Vadí, že je to veřejné? Ne: jsou to stejná data, jaká jsou na Vašich stránkách produktů. Konkurent, který chce sledovat Vaše ceny, to zvládne i s běžnými stránkami. Je ale dobré si uvědomit: vše, co zadáte do pole produktu, se může dostat do Store API. Nikdy nedávejte nákupní ceny, jména dodavatelů ani interní poznámky do krátkého nebo dlouhého popisu jen proto, že „šablona toto pole stejně nezobrazuje“.

Store API také nezavírejte. Bloky košíku a pokladny ho potřebují (lekce 2.2). Bezpečnostní pluginy, které „vypínají REST API pro návštěvníky“, proto někdy rozbijí placení. Chcete-li REST API omezit, Store API z toho vyjměte.

Zneužití Store API existuje, ale na straně zápisu: útočníci, kteří s ukradenými čísly karet zkoušejí tisíce malých objednávek. Říká se tomu card testing; tím se zabývá lekce 6.3.

REST API WooCommerce: vždy za klíčem

Nyní otevřete, aniž byste byli přihlášeni:

https://shop.example.com/wp-json/wc/v3/orders

Správnou odpovědí je chybové hlášení se stavem 401 (nepřihlášen) a kódem jako woocommerce_rest_cannot_view. Váš e-shop říká: „toto nesmíte vidět“. Tak to má být. Pokud zde dostanete seznam objednávek, je něco vážně špatně: plugin, který otevírá oprávnění, upravený kód v šabloně, nebo klíč, který je ve veřejné adrese. Pak jde o možný únik dat (kurz o WordPressu, lekce 7.5, a znalostní báze 6749).

Programy, které potřebují přístup k Vašim objednávkám, dostanou API klíč. Vytvoříte ho v WooCommerce > Nastavení > Pokročilé > REST API (Advanced > REST API). Klíč se skládá ze dvou částí (consumer key a consumer secret) a patří k uživateli WordPressu. Zvolíte oprávnění:

  • Číst: program smí data vyžadovat;
  • Zapisovat: program smí data vytvářet a měnit;
  • Číst/Zapisovat: obojí.

Pravidla, která dodržujte vždy:

  1. Nejmenší potřebná práva. Propojení s účetnictvím, které jen stahuje objednávky, dostane jen čtení. Propojení se skladem, které aktualizuje zásoby, potřebuje zápis, nástroj pro přehledy však ne.
  2. Jeden klíč na každé propojení, s jasným popisem („Účetnictví, jen čtení, 2026“). Když propojení skončí, zrušíte jen tento klíč.
  3. Přiřaďte klíč uživateli s odpovídajícími právy. Klíč správce zvládne vše, co správce. Raději vytvořte samostatného uživatele s rolí Manažer obchodu (lekce 6.2).
  4. Tajnou polovinu uložte bezpečně. Uvidíte ji jen jednou při vytvoření. Patří do nastavení programu nebo do správce hesel, ne do e-mailu, sdíleného dokumentu ani veřejného úložiště kódu.
  5. Dělejte pořádek. V REST API vidíte u každého klíče, kdy byl naposledy použit. Klíč, který se měsíce nepoužil, zrušte.

Webhooky: Váš e-shop volá jiný program

API čeká, až se někdo zeptá. Webhook funguje opačně: při události ve Vašem e-shopu (nová objednávka, změněný produkt) odešle WooCommerce samo zprávu na adresu, kterou zadáte. Váš program pro odesílání zásilek se tak hned dozví, že přišla objednávka, aniž by se musel každou minutu ptát. Nastavíte je v WooCommerce > Nastavení > Pokročilé > Webhooky.

Tři věci, na které dávejte pozor:

  • Zpráva obsahuje osobní údaje. Webhook při nové objednávce posílá jméno, adresu a objednané produkty. Posílejte to jen na adresu přes https a jen subjektu, který je uveden ve Vašich zásadách ochrany osobních údajů a v záznamech o činnostech zpracování (lekce 5.5).
  • Tajný klíč. U webhooku vyplníte tajný klíč. Přijímající program jím může ověřit, že zpráva skutečně pochází z Vašeho e-shopu, a ne od někoho, kdo adresu uhodl. Nenechávejte ho prázdný a sdílejte ho jen s příjemcem.
  • Neúspěšné doručení. Pokud je přijímající adresa delší dobu nedostupná, může WooCommerce webhook po opakovaných chybách vypnout. Po výpadku se v části Webhooky podívejte, zda jsou stále aktivní.

Nezaměňujte to s webhookem Vašeho poskytovatele plateb (lekce 4.4). Ten funguje opačně: poskytovatel oznamuje Vašemu e-shopu, že platba proběhla.

V praxi: takto to vypadá ve WooCommerce

U jiných poskytovatelů hostingu to funguje stejně; jde o součásti samotného WooCommerce.

  1. V anonymním okně otevřete /wp-json/wc/store/v1/products na svém (testovacím) obchodě. Vyhledejte produkt a přepočítejte cenu.
  2. Ve stejném anonymním okně otevřete /wp-json/wc/v3/orders. Měli byste vidět stav 401.
  3. Přejděte do WooCommerce > Nastavení > Pokročilé > REST API. Prohlédněte si, jaké klíče existují, u kterého uživatele a s jakými právy. Zrušte klíče, které neznáte (nebo už nepotřebujete).
  4. V části Webhooky zkontrolujte, jaké webhooky existují a na jakou adresu směřují.
  5. Máte-li bezpečnostní plugin, který omezuje REST API, ověřte, že je Store API vyjmuto.

Shrnutí

  • Store API (wc/store/v1) je veřejné a obsahuje to, co je i na Vašich stránkách produktů; bloky košíku a pokladny ho potřebují.
  • Nevkládejte do polí produktu interní údaje: přes Store API se mohou stát viditelnými.
  • REST API WooCommerce (wc/v3) má bez klíče vracet 401; seznam objednávek bez klíče je možný únik dat.
  • API klíče: nejmenší potřebná práva, jeden na propojení, u odpovídajícího uživatele, uchovávat v tajnosti, nepoužívané rušit.
  • Webhooky posílají osobní údaje jinému programu: jen přes https, s tajným klíčem, subjektu ze záznamů o činnostech zpracování.

Kvíz

1. Která data mají být přes Store API veřejná?



2. Bez přihlášení otevřete /wp-json/wc/v3/orders a dostanete seznam objednávek. Co to znamená?



3. Účetní program potřebuje jen stahovat objednávky. Jaký API klíč vytvoříte?



4. Bezpečnostní plugin zavře návštěvníkům celé REST API. Zákazníci pak už nemohou zaplatit. Proč?



5. Proč u webhooku vyplňujete tajný klíč?



Úkol

Úkol A2.4: Co Váš e-shop veřejně zobrazuje? Zadejte adresu svého (testovacího) obchodu a počet produktů, které jsou ve Vašem obchodě viditelné. Program provede tři dotazy, bez cookies a bez klíče, pouze čtení:

  1. /wp-json/wc/store/v1/products?per_page=1 (Store API, přes adresu REST, kterou Váš web sám uvádí);
  2. /wp-json/wc/v3/orders?per_page=1;
  3. /wp-json/wc/v3/customers?per_page=1.

Úkol A2.4: Co Váš e-shop veřejně zobrazuje?



Co vyplníte a co zjistíme, neukládáme. Váš prohlížeč si pamatuje Vaše odpovědi a to, zda jste úkol splnili. Pokud jste přihlášeni, ukládáme v sekci Moje kurzy pouze to, že jste úkol měli (téměř) správně; i to tam můžete odstranit.

V pořádku je: Store API odpoví stavem 200 a seznamem JSON; hlavička X-WP-Total se rovná počtu, který jste zadali; orders a customers vrátí 401, 403 nebo 404.

Oranžová: X-WP-Total se liší (produkty jako koncept, soukromé nebo skryté se nezapočítávají); Store API vrátí 401 nebo 403, většinou kvůli bezpečnostnímu pluginu, takže bloky pokladny nefungují.

Červená: Store API není dostupné, přestože na Vašem webu běží WooCommerce; nebo orders či customers vrátí seznam. To druhé je vážné: okamžitě to uzavřete, zkontrolujte své API klíče a pluginy a posuďte, zda musíte ohlásit únik dat. Program v takovém případě ukládá jen stavový kód, nikdy obsah.

Potom se sami podívejte do REST API a Webhooky: jaké klíče a webhooky tam jsou a víte u každého, k čemu slouží?

Další čtení

Chvíli strpení…

Nastavení vašich domén

U každé domény nastavte jmenné servery, propojení s hostingem a to, kdo bude držitelem.

Načítání vašich domén…