Ugrás a tartalomhoz

Sütibeállítások

Típusonként válassza ki, mely sütiket engedélyezi. Választását bármikor módosíthatja a Sütibeállítások linken, amely minden oldal alján megtalálható. Adatvédelmi nyilatkozat

Szükséges

Mindig bekapcsolva

A bejelentkezéshez, a kosár megőrzéséhez és a választásai megjegyzéséhez szükségesek. Ezek mindig be vannak kapcsolva.

Milyen sütik?
  • weboke_sessie, weboke_klant, weboke_remember: a munkamenet és a bejelentkezve maradás
  • weboke_basket: a kosár
  • wkBtwIncl: az árak megjelenítése ÁFÁ-val vagy anélkül
  • wok_cookies: a sütiválasztás, 12 hónap

Méri, melyik hirdetés vezet látogatáshoz vagy rendeléshez, hogy ne fizessünk hatástalan hirdetésekért.

Milyen sütik?
  • Google Ads a Google Tag Manageren keresztül (_gcl_au, _gcl_aw), legfeljebb 90 napig
  • OpenAI Ads, hirdetések a ChatGPT-ben
  • wok_aff: melyik partnerünk ajánlására érkezett (partnerprogram), 60 nap

4,6

Ország és nyelv

Minden országnak saját oldala van, az adott ország áraival és ÁFA-jával.

Megtekintés

Mit mutat meg nyilvánosan a webáruháza

Modul 2: Telepítés és beállítás · Olvasási idő: 10 perc

Tanulási cél: A lecke végére el tudja magyarázni, mi a WooCommerce Store API-ja és REST API-ja, mely adatoknak kell nyilvánosnak lenniük és melyeknek nem, valamint hogyan használja biztonságosan az API-kulcsokat és a webkapcsokat.

Kulcsfogalmak: API, a WordPress REST API-ja, Store API (wc/store/v1), a WooCommerce REST API-ja (wc/v3), JSON, nyilvános és védett, API-kulcs, olvasási és írási jogok, legkisebb jogosultság elve, webkapocs (webhook), a webkapocs titkos kulcsa, X-WP-Total

Egy bolt két ajtóval

A látogató weboldalakként látja az Ön webáruházát. Az áruháznak azonban programok számára is vannak „ajtói”: olyan címek, ahol egy program adatokat kérhet le vagy küldhet el, az oldal formázása nélkül. Az ilyen ajtót API-nak (application programming interface, alkalmazásprogramozási felület) nevezzük. A WordPressnek is van egy ilyen a /wp-json/ alatt: ez a REST API. A WordPress-tanfolyam 7.3. leckéje megmutatta, hogy ott például felhasználóneveket lehet lekérdezni, ha semmit sem véd le.

A WooCommerce két saját API-t ad hozzá, egészen eltérő céllal:

Store APIA WooCommerce REST API-ja
Cím/wp-json/wc/store/v1/.../wp-json/wc/v3/...
Kinek szólA látogató böngészőjének (a kosár és a pénztár blokkjai, 2.2. lecke)Más programoknak: könyvelés, készletkezelés, egy alkalmazás, egy piactér-összekapcsolás
Kell hozzá kulcsNem, nyilvánosIgen, egy adminisztrátor API-kulcsa (vagy egy bejelentkezett, megfelelő jogokkal rendelkező felhasználó)
Mit tartalmazTermékek, árak, készletállapot, kategóriák, értékelések; maga a látogató kosara és rendeléseMindent: mindenki rendeléseit, a vásárlókat, kuponokat, beállításokat, jelentéseket

A Store API tehát a kirakat bejárata: ami az Ön boltjában egy termékoldalon szerepel, az benne is van, csak adatként. A WooCommerce REST API-ja viszont a raktár hátsó ajtaja: annak zárva kell lennie.

A Store API: amit egy látogató (és bárki) lekérdezhet

Nyissa meg a böngészőjében:

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

Egy JSON formátumú listát kap; a JSON adatok tárolására szolgáló szöveges formátum. Minden terméknél többek között látja a nevet, a slugot, a típust (egyszerű, variálható), a termékoldal címét (permalink), a cikkszámot (SKU), az árakat, a képeket, a kategóriákat, azt, hogy raktáron van-e, és hogy megvásárolható-e. A válasz fejléceiben szerepel az X-WP-Total: azoknak a termékeknek a száma, amelyeket a bolt a látogatóknak megmutat.

Néhány tudnivaló:

  • Az árak centben szerepelnek. Egy € 34,95 (≈ 12 687 Ft)-ös teáskanna így jelenik meg: "price": "3495", mellette "currency_minor_unit": 2. Az értéket el kell osztani 100-zal. Hogy ez áfával vagy áfa nélkül értendő ár, az az „Árak megjelenítése a boltban” beállítástól függ (4.1. lecke). Ezt a tulajdonságot a 4.1. lecke feladatában használjuk.
  • Csak az, ami látható. A vázlat állapotú, privát vagy a katalógusban elrejtett termékeket a Store API nem számolja bele. Ezért lehet az X-WP-Total értéke kisebb, mint az adminisztrációs felületen látható szám.
  • Olvasni bárki tud, írni nem csak úgy. A Store API-n keresztül kosárba tenni vagy fizetni csak az oldalból származó egyszer használatos kóddal (nonce) lehet, és akkor is csak az adott látogató saját kosarára vonatkozóan.

Baj, hogy ez nyilvános? Nem: ugyanazok az adatok, amelyek a termékoldalain is szerepelnek. Egy versenytárs, aki figyelni akarja az árait, ezt a szokásos oldalakon is megteheti. Azt viszont érdemes tudatosítani, hogy bármi, amit egy termékmezőbe ír, megjelenhet a Store API-ban. Soha ne írjon beszerzési árakat, beszállítói neveket vagy belső megjegyzéseket a rövid vagy a hosszú leírásba azzal, hogy „a téma úgysem jeleníti meg ezt a mezőt”.

A Store API-t se zárja le. A kosár és a pénztár blokkjainak szükségük van rá (2.2. lecke). Azok a biztonsági bővítmények, amelyek „kikapcsolják a REST API-t a látogatók számára”, ezért néha tönkreteszik a fizetést. Ha korlátozni szeretné a REST API-t, a Store API-t vegye ki a korlátozás alól.

A Store API-val való visszaélés létezik, de az írási oldalon: támadók lopott kártyaszámokkal több ezer apró rendelést próbálnak leadni. Ezt card testingnek (kártyatesztelésnek) nevezik; erről a 6.3. lecke szól.

A WooCommerce REST API-ja: mindig kulcs mögött

Most nyissa meg, bejelentkezés nélkül:

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

A helyes válasz egy hibaüzenet 401-es állapotkóddal (nincs bejelentkezve) és egy olyan kóddal, mint a woocommerce_rest_cannot_view. Az áruháza ezt mondja: „ezt Ön nem láthatja”. Így van ez rendjén. Ha itt rendelések listáját kapja, akkor valami súlyosan hibás: egy bővítmény, amely jogosultságokat nyit meg, egyedi kód a témában, vagy egy kulcs, amely nyilvános címben szerepel. Ilyenkor lehetséges adatvédelmi incidensről van szó (WordPress-tanfolyam, 7.5. lecke, és a tudásbázis 6749. cikke).

Azok a programok, amelyeknek hozzá kell férniük a rendeléseihez, API-kulcsot kapnak. Ezt a WooCommerce > Beállítások > Haladó > REST API menüpontban hozhatja létre (Advanced > REST API). Egy kulcs két részből áll (consumer key és consumer secret), és egy WordPress-felhasználóhoz tartozik. A jogosultságokat Ön választja ki:

  • Olvasás: a program adatokat kérhet le;
  • Írás: a program adatokat hozhat létre és módosíthat;
  • Olvasás/Írás: mindkettő.

Szabályok, amelyeket mindig tartson be:

  1. Legkisebb jogosultság. Egy könyvelési összekapcsolás, amely csak lekéri a rendeléseket, csak olvasási jogot kap. Egy készletösszekapcsolásnak, amely frissíti a készletet, írási jog kell, egy jelentéskészítő eszköznek viszont nem.
  2. Összekapcsolásonként egy kulcs, egyértelmű leírással („Könyvelés, csak olvasás, 2026”). Ha egy összekapcsolás megszűnik, csak azt az egy kulcsot kell visszavonnia.
  3. A kulcsot megfelelő jogokkal rendelkező felhasználóhoz rendelje. Egy adminisztrátor kulcsa mindenre képes, amire egy adminisztrátor. Inkább hozzon létre egy külön felhasználót Bolt kezelő szerepkörrel (6.2. lecke).
  4. A titkos részt tárolja biztonságosan. Csak egyszer látja, a létrehozáskor. A program beállításaiba vagy egy jelszókezelőbe való, nem e-mailbe, megosztott dokumentumba vagy nyilvános kódtárba.
  5. Takarítson. A REST API oldalon kulcsonként látja, mikor használták utoljára. Azt a kulcsot, amelyet hónapok óta nem használtak, vonja vissza.

Webkapcsok: az áruháza felhív egy másik programot

Egy API megvárja, amíg valaki kérdez. A webkapocs (webhook) fordítva működik: ha az áruházban történik valami (új rendelés, módosított termék), a WooCommerce maga küld üzenetet egy Ön által megadott címre. Így a szállítási programja azonnal értesül egy rendelésről, anélkül hogy percenként rá kellene kérdeznie. Ezeket a WooCommerce > Beállítások > Haladó > Webkapcsok menüpontban állíthatja be.

Három dologra figyeljen:

  • Az üzenet személyes adatokat tartalmaz. Egy új rendeléshez tartozó webkapocs elküldi a nevet, a címet és a megrendelt termékeket. Ezt csak https-en keresztül elérhető címre küldje, és csak olyan félnek, amely szerepel az adatkezelési tájékoztatójában és az adatkezelési nyilvántartásában (5.5. lecke).
  • A titkos kulcs. Egy webkapocsnál titkos kulcsot ad meg. Ezzel a fogadó program ellenőrizheti, hogy az üzenet valóban az Ön áruházától érkezik, és nem valakitől, aki kitalálta a címet. Ne hagyja üresen, és csak a címzettel ossza meg.
  • Sikertelen kézbesítés. Ha a fogadó cím egy ideig nem érhető el, a WooCommerce ismételt hibák után kikapcsolhatja a webkapcsot. Egy üzemzavar után ellenőrizze a Webkapcsok oldalon, hogy még aktívak-e.

Ne keverje ezt össze a fizetési szolgáltatója webkapcsával (4.4. lecke). Az fordítva működik: a szolgáltató jelzi az Ön áruházának, hogy egy fizetés sikeres volt.

A gyakorlatban: így néz ki a WooCommerce-ben

Más tárhelyszolgáltatóknál is ugyanígy működik; ezek a WooCommerce saját részei.

  1. Nyissa meg egy privát ablakban a /wp-json/wc/store/v1/products címet a (teszt)áruházán. Keressen meg egy terméket, és számolja át az árát.
  2. Ugyanabban a privát ablakban nyissa meg a /wp-json/wc/v3/orders címet. 401-es állapotkódot kell látnia.
  3. Lépjen a WooCommerce > Beállítások > Haladó > REST API oldalra. Nézze meg, milyen kulcsok vannak, melyik felhasználóhoz tartoznak és milyen jogokkal. Vonja vissza azokat a kulcsokat, amelyeket nem ismer (vagy már nem használ).
  4. A Webkapcsok oldalon nézze meg, milyen webkapcsok vannak, és milyen címre küldenek.
  5. Ha olyan biztonsági bővítményt használ, amely korlátozza a REST API-t, ellenőrizze, hogy a Store API ki van-e véve a korlátozás alól.

Összefoglalás

  • A Store API (wc/store/v1) nyilvános, és azt tartalmazza, ami a termékoldalain is szerepel; a kosár és a pénztár blokkjainak szükségük van rá.
  • Ne írjon belső adatokat termékmezőkbe: a Store API-n keresztül láthatóvá válhatnak.
  • A WooCommerce REST API-jának (wc/v3) kulcs nélkül 401-et kell adnia; a kulcs nélkül elérhető rendelési lista lehetséges adatvédelmi incidens.
  • API-kulcsok: legkisebb jogosultság, összekapcsolásonként egy, megfelelő felhasználóhoz rendelve, titokban tartva, a nem használtakat visszavonva.
  • A webkapcsok személyes adatokat küldenek egy másik programnak: csak https-en keresztül, titkos kulccsal, az adatkezelési nyilvántartásában szereplő félnek.

Kvíz

1. Mely adatoknak kell nyilvánosnak lenniük a Store API-n keresztül?



2. Bejelentkezés nélkül megnyitja a /wp-json/wc/v3/orders címet, és rendelések listáját kapja. Mit jelent ez?



3. Egy könyvelőprogramnak csak a rendeléseket kell lekérnie. Milyen API-kulcsot hoz létre?



4. Egy biztonsági bővítmény a látogatók számára lezárja a teljes REST API-t. A vásárlók ezután nem tudnak fizetni. Miért?



5. Miért ad meg titkos kulcsot egy webkapocsnál?



Feladat

A2.4. feladat: Mit mutat meg nyilvánosan az Ön webáruháza? Adja meg a (teszt)áruháza címét és a boltban látható termékek számát. A program három lekérdezést végez, sütik és kulcs nélkül, csak olvasva:

  1. /wp-json/wc/store/v1/products?per_page=1 (a Store API, azon a REST-címen keresztül, amelyet a webhelye maga ad meg);
  2. /wp-json/wc/v3/orders?per_page=1;
  3. /wp-json/wc/v3/customers?per_page=1.

A2.4. feladat: Mit mutat meg nyilvánosan az Ön webáruháza?



Amit beír, és amit találunk, azt nem tároljuk. A böngészője megjegyzi a válaszait és azt, hogy teljesítette e a feladatot. Ha bejelentkezett, a Fiókomban csak azt tároljuk, hogy a feladat (majdnem) helyes volt; ott ezt is törölheti.

Rendben van, ha: a Store API 200-as állapotkóddal és JSON-listával válaszol; az X-WP-Total fejléc megegyezik az Ön által megadott számmal; az orders és a customers 401-et, 403-at vagy 404-et ad.

Narancssárga: az X-WP-Total eltér (a vázlat állapotú, privát vagy rejtett termékek nem számítanak bele); a Store API 401-et vagy 403-at ad, többnyire egy biztonsági bővítmény miatt, ami miatt a pénztár blokkjai nem működnek.

Piros: a Store API nem érhető el, pedig a webhelyen WooCommerce fut; vagy az orders, illetve a customers listát ad vissza. Ez utóbbi súlyos: azonnal zárja le, ellenőrizze az API-kulcsait és a bővítményeit, és mérlegelje, hogy be kell-e jelentenie adatvédelmi incidenst. A program ilyenkor csak az állapotkódot tárolja, a tartalmat soha.

Ezután nézze meg saját maga a REST API és a Webkapcsok oldalt: milyen kulcsok és webkapcsok vannak ott, és mindegyikről tudja-e, mire szolgál?

Bővebben olvasva

Egy pillanat…

Domainek beállítása

Állítsa be domainenként a névszervereket, a tárhelyhez való kapcsolást és azt, hogy ki legyen a tulajdonos.

Domainek betöltése…