Preskoči na vsebino

Nastavitve piškotkov

Za vsako vrsto izberite, katere piškotke dovolite. Svojo izbiro lahko kadar koli spremenite prek povezave Nastavitve piškotkov na dnu vsake strani. Izjava o zasebnosti

Nujni

Vedno vklopljeno

Potrebni so za prijavo, shranjevanje košarice in pomnjenje Vaših izbir. Vedno so vklopljeni.

Kateri piškotki?
  • weboke_sessie, weboke_klant, weboke_remember: Vaša seja in ohranjanje prijave
  • weboke_basket: Vaša košarica
  • wkBtwIncl: prikaz cen z DDV ali brez DDV
  • wok_cookies: Vaša izbira glede piškotkov, 12 mesecev

Meri, kateri oglas vodi do obiska ali naročila, da ne plačujemo za oglase, ki ne prinesejo ničesar.

Kateri piškotki?
  • Google Ads prek Google Tag Manager (_gcl_au, _gcl_aw), do 90 dni
  • OpenAI Ads, oglasi v ChatGPT
  • wok_aff: prek katerega partnerja ste prišli k nam (partnerski program), 60 dni

4,6

Država in jezik

Vsaka država ima svojo spletno stran, s cenami in DDV za to državo.

Prikaži

Kaj Vaša spletna trgovina javno prikazuje

Modul 2: Namestitev in nastavitev · Čas branja: 10 minut

Učni cilj: Po tej lekciji boste znali razložiti, kaj sta Store API in REST API WooCommerce, kateri podatki naj bodo javni in kateri ne ter kako varno uporabljate ključe API in webhooke.

Ključni pojmi: API, REST API WordPressa, Store API (wc/store/v1), REST API WooCommerce (wc/v3), JSON, javno in zaščiteno, ključ API, pravice za branje in pisanje, najmanjše potrebne pravice, webhook, skrivni ključ webhooka, X-WP-Total

Trgovina z dvojimi vrati

Obiskovalec vidi Vašo trgovino kot spletne strani. Vendar ima Vaša trgovina tudi »vrata« za programe: naslove, na katerih lahko program pridobi ali pošlje podatke, brez oblikovanja strani. Takšna vrata se imenujejo API (application programming interface). WordPress jih ima pod /wp-json/, to je REST API. Tečaj o WordPressu je v lekciji 7.3 pokazal, da lahko tam na primer pridobite uporabniška imena, če ničesar ne zaščitite.

WooCommerce doda dva lastna API-ja z zelo različnim namenom:

Store APIREST API WooCommerce
Naslov/wp-json/wc/store/v1/.../wp-json/wc/v3/...
Za kogaBrskalnik obiskovalca (bloki za košarico in zaključek nakupa, lekcija 2.2)Drugi programi: računovodstvo, zaloga, aplikacija, povezava s spletno tržnico
Potreben ključNe, javnoDa, ključ API skrbnika (ali prijavljen uporabnik z ustreznimi pravicami)
Kaj vsebujeIzdelke, cene, stanje zaloge, kategorije, ocene; košarico in naročilo obiskovalca samegaVse: naročila vseh strank, stranke, kupone, nastavitve, poročila

Store API je torej vhod skozi izložbo: kar je v Vaši trgovini na strani izdelka, je tudi tam, le v obliki podatkov. REST API WooCommerce pa so zadnja vrata skladišča: ta morajo biti zaklenjena.

Store API: kaj lahko pridobi obiskovalec (in kdor koli)

V brskalniku odprite:

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

Dobite seznam v obliki JSON, besedilni zapis podatkov. Za vsak izdelek med drugim vidite ime, slug, vrsto (enostaven, spremenljiv), naslov strani izdelka (permalink), SKU, cene, slike, kategorije, ali je na zalogi in ali ga je mogoče kupiti. V glavi odgovora je X-WP-Total: število izdelkov, ki jih trgovina prikazuje obiskovalcem.

Nekaj stvari, ki jih je dobro vedeti:

  • Cene so v centih. Čajnik za € 34,95 je zapisan kot "price": "3495" z "currency_minor_unit": 2. Delite s 100. Ali je to cena z DDV ali brez, je odvisno od Vaše nastavitve »Prikaz cen v trgovini« (lekcija 4.1). To lastnost uporabimo v nalogi lekcije 4.1.
  • Samo tisto, kar je vidno. Izdelkov v osnutku, zasebnih ali skritih v katalogu Store API ne šteje. Zato je X-WP-Total lahko nižji od števila v Vašem skrbniškem delu.
  • Brati sme vsak, pisati pa ne kar tako. Dodajanje v košarico ali zaključek nakupa prek Store API je mogoče le z enkratno kodo (nonce) s strani in le za lastno košarico tega obiskovalca.

Je hudo, da je to javno? Ne: to so isti podatki, kot so na Vaših straneh izdelkov. Konkurent, ki želi spremljati Vaše cene, lahko to stori tudi z običajnimi stranmi. Vseeno se zavedajte: vse, kar vpišete v polje izdelka, se lahko pojavi v Store API. Nikoli ne vpisujte nabavnih cen, imen dobaviteljev ali internih opomb v kratek ali dolg opis, »ker tema tega polja tako ali tako ne prikaže«.

Store API tudi ne zaprite. Bloki za košarico in zaključek nakupa ga potrebujejo (lekcija 2.2). Varnostni vtičniki, ki »izklopijo REST API za obiskovalce«, zato včasih pokvarijo zaključek nakupa. Če želite REST API omejiti, Store API izvzemite.

Zloraba Store API sicer obstaja, a na strani pisanja: napadalci, ki z ukradenimi številkami kartic poskušajo na tisoče majhnih naročil. Temu pravimo card testing; o tem govori lekcija 6.3.

REST API WooCommerce: vedno za ključem

Zdaj odprite, ne da bi bili prijavljeni:

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

Pravilen odgovor je napaka s statusom 401 (niste prijavljeni) in koda, kot je woocommerce_rest_cannot_view. Vaša trgovina pravi: »tega ne smete videti«. Tako mora biti. Če tukaj dobite seznam naročil, je nekaj resno narobe: vtičnik, ki odpira pravice, prilagojena koda v temi ali ključ, ki je v javnem naslovu. Takrat gre lahko za kršitev varstva osebnih podatkov (tečaj o WordPressu, lekcija 7.5, in baza znanja 6749).

Programi, ki morajo dostopati do Vaših naročil, dobijo ključ API. Ustvarite ga v WooCommerce > Nastavitve > Napredno > REST API (Advanced > REST API). Ključ je sestavljen iz dveh delov (consumer key in consumer secret) in pripada uporabniku WordPressa. Izberete pravice:

  • Branje: program sme pridobivati podatke;
  • Pisanje: program sme podatke ustvarjati in spreminjati;
  • Branje/pisanje: oboje.

Pravila, ki se jih vedno držite:

  1. Najmanjše potrebne pravice. Povezava z računovodstvom, ki samo prenaša naročila, dobi samo branje. Povezava za zalogo, ki posodablja zalogo, potrebuje pisanje, orodje za poročila pa ne.
  2. En ključ na povezavo, z jasnim opisom (»Računovodstvo, samo branje, 2026«). Ko povezava preneha, prekličete samo ta ključ.
  3. Ključ povežite z uporabnikom z ustreznimi pravicami. Ključ skrbnika zmore vse, kar zmore skrbnik. Raje ustvarite ločenega uporabnika z vlogo Upravitelj trgovine (lekcija 6.2).
  4. Skrivni del hranite varno. Vidite ga samo enkrat, ob ustvarjanju. Spada v nastavitve programa ali v upravitelja gesel, ne v e-sporočilo, deljen dokument ali javno shrambo kode.
  5. Pospravljajte. V REST API za vsak ključ vidite, kdaj je bil nazadnje uporabljen. Ključ, ki ga mesece niste uporabili, prekličite.

Webhooki: Vaša trgovina pokliče drug program

API čaka, da ga nekdo vpraša. Webhook deluje obratno: ob dogodku v Vaši trgovini (novo naročilo, spremenjen izdelek) WooCommerce sam pošlje sporočilo na naslov, ki ga določite. Tako Vaš program za pošiljanje takoj izve za naročilo, ne da bi spraševal vsako minuto. Nastavite jih v WooCommerce > Nastavitve > Napredno > Webhooki.

Na tri stvari bodite pozorni:

  • Sporočilo vsebuje osebne podatke. Webhook ob novem naročilu pošlje ime, naslov in naročene izdelke. To pošiljajte samo na naslov prek https in partnerju, ki je naveden v Vaši politiki zasebnosti in evidenci dejavnosti obdelave (lekcija 5.5).
  • Skrivni ključ. Pri webhooku vpišete skrivni ključ. Z njim lahko program prejemnik preveri, da sporočilo res prihaja iz Vaše trgovine in ne od nekoga, ki je naslov uganil. Ne puščajte ga praznega in ga delite samo s prejemnikom.
  • Neuspešna dostava. Če je naslov prejemnika nekaj časa nedosegljiv, lahko WooCommerce webhook po ponavljajočih se napakah onemogoči. Po izpadu v Webhooki preverite, ali so še aktivni.

Ne zamenjujte tega z webhookom Vašega ponudnika plačil (lekcija 4.4). Ta deluje obratno: ponudnik sporoči Vaši trgovini, da je plačilo uspelo.

V praksi: tako je videti v WooCommerce

Pri drugih ponudnikih gostovanja deluje enako; to so deli samega WooCommerce.

  1. V zasebnem oknu odprite /wp-json/wc/store/v1/products v svoji (testni) trgovini. Poiščite izdelek in preračunajte ceno.
  2. V istem zasebnem oknu odprite /wp-json/wc/v3/orders. Videti morate status 401.
  3. Pojdite v WooCommerce > Nastavitve > Napredno > REST API. Preverite, kateri ključi obstajajo, pri katerem uporabniku in s katerimi pravicami. Prekličite ključe, ki jih ne poznate (več).
  4. V Webhooki preverite, kateri webhooki obstajajo in na kateri naslov pošiljajo.
  5. Če imate varnostni vtičnik, ki omejuje REST API, preverite, da je Store API izvzet.

Povzetek

  • Store API (wc/store/v1) je javen in vsebuje to, kar je tudi na Vaših straneh izdelkov; bloki za košarico in zaključek nakupa ga potrebujejo.
  • V polja izdelkov ne vpisujte internih podatkov: prek Store API lahko postanejo vidni.
  • REST API WooCommerce (wc/v3) mora brez ključa vrniti 401; seznam naročil brez ključa pomeni morebitno kršitev varstva osebnih podatkov.
  • Ključi API: najmanjše potrebne pravice, en ključ na povezavo, pri ustreznem uporabniku, skrivni del varno shranjen, neuporabljene prekličite.
  • Webhooki pošiljajo osebne podatke drugemu programu: samo prek https, s skrivnim ključem, partnerju iz Vaše evidence dejavnosti obdelave.

Kviz

1. Kateri podatki naj bodo javno dostopni prek Store API?



2. Brez prijave odprete /wp-json/wc/v3/orders in dobite seznam naročil. Kaj to pomeni?



3. Računovodski program mora samo prenašati naročila. Kakšen ključ API ustvarite?



4. Varnostni vtičnik za obiskovalce zapre celoten REST API. Stranke nato ne morejo več zaključiti nakupa. Zakaj?



5. Zakaj pri webhooku vpišete skrivni ključ?



Naloga

Naloga A2.4: Kaj Vaša spletna trgovina javno prikazuje? Vpišite naslov svoje (testne) trgovine in število izdelkov, ki so vidni v Vaši trgovini. Program izvede tri poizvedbe, brez piškotkov in brez ključa, samo branje:

  1. /wp-json/wc/store/v1/products?per_page=1 (Store API, prek naslova REST, ki ga navaja Vaše spletno mesto);
  2. /wp-json/wc/v3/orders?per_page=1;
  3. /wp-json/wc/v3/customers?per_page=1.

Naloga A2.4: Kaj Vaša spletna trgovina javno prikazuje?



Tega, kar vnesete, in tega, kar najdemo, ne shranjujemo. Vaš brskalnik si zapomni Vaše odgovore in to, ali ste nalogo opravili. Če ste prijavljeni, v Moji tečaji shranimo samo podatek, da ste nalogo (skoraj) pravilno opravili; tudi to lahko tam izbrišete.

Dobro je: Store API odgovori s statusom 200 in seznamom JSON; glava X-WP-Total je enaka številu, ki ste ga vpisali; orders in customers vrneta 401, 403 ali 404.

Oranžno: X-WP-Total se razlikuje (izdelki v osnutku, zasebni ali skriti se ne štejejo); Store API vrne 401 ali 403, navadno zaradi varnostnega vtičnika, zato bloki za zaključek nakupa ne delujejo.

Rdeče: Store API ni dosegljiv, čeprav Vaše spletno mesto poganja WooCommerce; ali pa orders ali customers vrneta seznam. Slednje je resno: takoj ga zaprite, preverite svoje ključe API in vtičnike ter presodite, ali morate kršitev varstva osebnih podatkov prijaviti. Program v tem primeru shrani samo statusno kodo, nikoli vsebine.

Nato sami preverite REST API in Webhooki: kateri ključi in webhooki obstajajo in ali za vsakega veste, čemu služi?

Za nadaljnje branje

Trenutek…

Nastavite svoje domene

Za vsako domeno uredite imenske strežnike, povezavo z gostovanjem in kdo bo imetnik.

Nalaganje Vaših domen…