Prijeđite na sadržaj

Postavke kolačića

Za svaku vrstu odaberite koje kolačiće dopuštate. Svoj odabir uvijek možete promijeniti putem poveznice Postavke kolačića na dnu svake stranice. Izjava o privatnosti

Nužni

Uvijek uključeni

Potrebni za prijavu, čuvanje košarice i pamćenje Vaših odabira. Uvijek su uključeni.

Koji kolačići?
  • weboke_sessie, weboke_klant, weboke_remember: Vaša sesija i to da ostanete prijavljeni
  • weboke_basket: Vaša košarica
  • wkBtwIncl: prikaz cijena s PDV-om ili bez njega
  • wok_cookies: Vaš odabir kolačića, 12 mjeseci

Mjeri koji oglas dovodi do posjeta ili narudžbe, kako ne bismo plaćali oglase koji ništa ne donose.

Koji kolačići?
  • Google Ads putem Google Tag Managera (_gcl_au, _gcl_aw), do 90 dana
  • OpenAI Ads, oglasi u ChatGPT-u
  • wok_aff: preko kojeg ste partnera došli k nama (partnerski program), 60 dana

4,6

Država i jezik

Svaka država ima vlastitu stranicu, s cijenama i PDV-om te države.

Pogledajte

Što Vaša trgovina javno prikazuje

Modul 2: Instalacija i postavljanje · Vrijeme čitanja: 10 minuta

Cilj učenja: Nakon ove lekcije moći ćete objasniti što su Store API i REST API WooCommercea, koji podaci trebaju biti javni a koji ne, te kako sigurno koristiti API ključeve i webhookove.

Ključni pojmovi: API, REST API WordPressa, Store API (wc/store/v1), REST API WooCommercea (wc/v3), JSON, javno i zaštićeno, API ključ, prava čitanja i pisanja, najmanja potrebna prava, webhook, tajni ključ webhooka, X-WP-Total

Trgovina s dvoja vrata

Posjetitelj vidi Vašu trgovinu kao web-stranice. No Vaša trgovina ima i „vrata” za programe: adrese na kojima program može zatražiti ili poslati podatke, bez izgleda stranice. Takva se vrata zovu API (application programming interface). WordPress ima jedan pod /wp-json/, a to je REST API. Tečaj o WordPressu u lekciji 7.3 pokazao je da ondje, primjerice, možete dohvatiti korisnička imena ako ništa ne zaštitite.

WooCommerce dodaje dva vlastita API-ja, s vrlo različitom svrhom:

Store APIREST API WooCommercea
Adresa/wp-json/wc/store/v1/.../wp-json/wc/v3/...
Za kogaPreglednik posjetitelja (blokovi košarice i plaćanja, lekcija 2.2)Drugi programi: knjigovodstvo, zalihe, aplikacija, povezivanje s tržnicom (marketplace)
Potreban ključNe, javnoDa, API ključ administratora (ili prijavljeni korisnik s pravima)
Što sadržiProizvode, cijene, stanje zaliha, kategorije, recenzije; košaricu i narudžbu samog posjetiteljaSve: narudžbe svih kupaca, kupce, kupone, postavke, izvješća

Store API je dakle ulaz kroz izlog: ono što u Vašoj trgovini stoji na stranici proizvoda nalazi se i ondje, samo u obliku podataka. REST API WooCommercea su stražnja vrata skladišta: ona moraju biti zaključana.

Store API: što posjetitelj (i bilo tko) može dohvatiti

U pregledniku otvorite:

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

Dobit ćete popis u formatu JSON, tekstualnom formatu za podatke. Za svaki proizvod vidjet ćete, među ostalim, naziv, slug, vrstu (jednostavan, varijabilan), adresu stranice proizvoda (permalink), SKU, cijene, slike, kategorije, je li na zalihi i može li se kupiti. U zaglavljima odgovora nalazi se X-WP-Total: broj proizvoda koje trgovina prikazuje posjetiteljima.

Nekoliko stvari koje je dobro znati:

  • Cijene su u centima. Čajnik od € 34,95 zapisan je kao "price": "3495" uz "currency_minor_unit": 2. Podijelite s 100. Je li to cijena s PDV-om ili bez njega, ovisi o Vašoj postavci za prikaz cijena u trgovini (lekcija 4.1). Tu ćemo značajku koristiti u zadatku lekcije 4.1.
  • Samo ono što je vidljivo. Proizvode koji su u skici, privatni ili skriveni u katalogu Store API ne broji. Zato X-WP-Total može biti manji od broja u Vašem administracijskom sučelju.
  • Čitati smije svatko, pisati ne baš tako lako. Stavljanje nečega u košaricu ili plaćanje putem Store API-ja moguće je samo s jednokratnim kodom (nonce) sa stranice, i to samo za vlastitu košaricu tog posjetitelja.

Je li problem što je to javno? Nije: to su isti podaci koji stoje na Vašim stranicama proizvoda. Konkurent koji želi pratiti Vaše cijene može to učiniti i preko običnih stranica. Ipak je dobro imati na umu: sve što upišete u polje proizvoda može završiti u Store API-ju. Nikada ne upisujte nabavne cijene, imena dobavljača ili interne bilješke u kratki ili dugi opis „jer tema to polje ionako ne prikazuje”.

Nemojte ni zatvarati Store API. Blokovima košarice i plaćanja on je potreban (lekcija 2.2). Sigurnosni dodaci koji „isključuju REST API za posjetitelje” zbog toga ponekad pokvare plaćanje. Želite li ograničiti REST API, izuzmite Store API.

Zlouporaba Store API-ja ipak postoji, ali na strani pisanja: napadači koji s ukradenim brojevima kartica pokušavaju tisuće malih narudžbi. To se zove card testing; o tome govori lekcija 6.3.

REST API WooCommercea: uvijek iza ključa

Sada otvorite, bez prijave:

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

Ispravan odgovor je poruka o pogrešci sa statusom 401 (niste prijavljeni) i kodom poput woocommerce_rest_cannot_view. Vaša trgovina poručuje: „ovo ne smijete vidjeti”. Tako i treba biti. Dobijete li ovdje popis narudžbi, nešto ozbiljno nije u redu: dodatak koji otvara prava, prilagođeni kod u temi ili ključ koji se nalazi u javnoj adresi. Tada imate moguću povredu osobnih podataka (tečaj o WordPressu, lekcija 7.5, i baza znanja 6749).

Programi koji trebaju pristup Vašim narudžbama dobivaju API ključ. Izrađujete ga u WooCommerce > Postavke > Napredno > REST API (Advanced > REST API). Ključ se sastoji od dva dijela (consumer key i consumer secret) i pripada jednom korisniku WordPressa. Odabirete prava:

  • Čitaj: program smije dohvaćati podatke;
  • Piši: program smije stvarati i mijenjati podatke;
  • Čitaj/Piši: oboje.

Pravila kojih se uvijek pridržavate:

  1. Najmanja potrebna prava. Povezivanje s knjigovodstvom koje samo dohvaća narudžbe dobiva samo čitanje. Povezivanje za zalihe koje ažurira stanje zaliha treba pisanje, ali alat za izvješća ne treba.
  2. Jedan ključ po povezivanju, s jasnim opisom („Knjigovodstvo, samo čitanje, 2026”). Prestane li neko povezivanje, opozovete samo taj ključ.
  3. Povežite ključ s korisnikom odgovarajućih prava. Ključ administratora može sve što može administrator. Radije izradite zasebnog korisnika s ulogom Voditelj trgovine (lekcija 6.2).
  4. Tajnu polovicu čuvajte na sigurnom. Vidite je samo jednom, prilikom izrade. Ona pripada u postavke programa ili u upravitelj lozinki, a ne u e-poruku, dijeljeni dokument ili javno spremište koda.
  5. Raščistite. U odjeljku REST API za svaki ključ vidite kada je posljednji put korišten. Ključ koji mjesecima nije korišten opozovite.

Webhookovi: Vaša trgovina zove drugi program

API čeka da ga netko nešto pita. Webhook radi obrnuto: kod nekog događaja u Vašoj trgovini (nova narudžba, izmijenjeni proizvod) WooCommerce sam šalje poruku na adresu koju Vi navedete. Tako Vaš program za dostavu odmah saznaje da postoji narudžba, bez da svake minute provjerava. Postavljate ih u WooCommerce > Postavke > Napredno > Webhooks.

Tri stvari na koje treba paziti:

  • Poruka sadrži osobne podatke. Webhook kod nove narudžbe šalje ime, adresu i naručene proizvode. Šaljite to samo na adresu putem https i strani koja je navedena u Vašoj izjavi o privatnosti i evidenciji aktivnosti obrade (lekcija 5.5).
  • Tajni ključ. Kod webhooka upisujete tajni ključ. S njim program koji prima poruku može provjeriti da poruka zaista dolazi iz Vaše trgovine, a ne od nekoga tko je pogodio adresu. Ne ostavljajte ga praznim i dijelite ga samo s primateljem.
  • Neuspjela dostava. Ako je adresa primatelja neko vrijeme nedostupna, WooCommerce može nakon ponovljenih pogrešaka isključiti webhook. Nakon prekida rada provjerite u odjeljku Webhooks jesu li još aktivni.

Nemojte to brkati s webhookom Vašeg pružatelja usluga plaćanja (lekcija 4.4). On radi obrnuto: pružatelj javlja Vašoj trgovini da je plaćanje uspjelo.

U praksi: ovako to izgleda u WooCommerceu

Kod drugih pružatelja hostinga radi jednako; ovo su dijelovi samog WooCommercea.

  1. U privatnom prozoru otvorite /wp-json/wc/store/v1/products na svojoj (testnoj) trgovini. Pronađite proizvod i preračunajte cijenu.
  2. U istom privatnom prozoru otvorite /wp-json/wc/v3/orders. Trebali biste vidjeti status 401.
  3. Idite na WooCommerce > Postavke > Napredno > REST API. Pogledajte koji ključevi postoje, za kojeg korisnika i s kojim pravima. Opozovite ključeve koje ne prepoznajete (ili više ne trebate).
  4. U odjeljku Webhooks pogledajte koji webhookovi postoje i na koju adresu idu.
  5. Imate li sigurnosni dodatak koji ograničava REST API, provjerite je li Store API izuzet.

Sažetak

  • Store API (wc/store/v1) je javan i sadrži ono što stoji i na Vašim stranicama proizvoda; blokovima košarice i plaćanja on je potreban.
  • Ne upisujte interne podatke u polja proizvoda: putem Store API-ja mogu postati vidljivi.
  • REST API WooCommercea (wc/v3) bez ključa treba vratiti 401; popis narudžbi bez ključa moguća je povreda osobnih podataka.
  • API ključevi: najmanja potrebna prava, jedan po povezivanju, uz odgovarajućeg korisnika, tajno čuvanje, opoziv nekorištenih.
  • Webhookovi šalju osobne podatke drugom programu: samo putem https, s tajnim ključem, strani iz Vaše evidencije aktivnosti obrade.

Kviz

1. Koji podaci trebaju biti javni putem Store API-ja?



2. Bez prijave otvorite /wp-json/wc/v3/orders i dobijete popis narudžbi. Što to znači?



3. Knjigovodstveni program treba samo dohvaćati narudžbe. Kakav API ključ izrađujete?



4. Sigurnosni dodatak zatvori cijeli REST API za posjetitelje. Kupci nakon toga više ne mogu platiti. Zašto?



5. Zašto kod webhooka upisujete tajni ključ?



Zadatak

Zadatak A2.4: Što Vaša trgovina javno prikazuje? Upišite adresu svoje (testne) trgovine i broj proizvoda koji su vidljivi u Vašoj trgovini. Program šalje tri upita, bez kolačića i bez ključa, samo za čitanje:

  1. /wp-json/wc/store/v1/products?per_page=1 (Store API, putem REST adrese koju Vaša stranica sama navodi);
  2. /wp-json/wc/v3/orders?per_page=1;
  3. /wp-json/wc/v3/customers?per_page=1.

Zadatak A2.4: Što Vaša trgovina javno prikazuje?



Ono što unesete i što pronađemo ne spremamo. Vaš preglednik pamti Vaše odgovore i je li zadatak položen. Ako ste prijavljeni, u Moji tečajevi čuvamo samo podatak da ste zadatak (gotovo) uspješno riješili; ondje to možete i izbrisati.

Dobro je: Store API odgovara statusom 200 i JSON popisom; zaglavlje X-WP-Total jednako je broju koji ste upisali; orders i customers vraćaju 401, 403 ili 404.

Narančasta: X-WP-Total odstupa (proizvodi u skici, privatni ili skriveni ne broje se); Store API vraća 401 ili 403, najčešće zbog sigurnosnog dodatka, zbog čega blokovi plaćanja ne rade.

Crvena: Store API nije dostupan iako Vaša stranica koristi WooCommerce; ili orders ili customers vraćaju popis. Ovo drugo je ozbiljno: odmah to zatvorite, provjerite svoje API ključeve i dodatke te procijenite morate li prijaviti povredu osobnih podataka. Program u tom slučaju sprema samo statusni kod, nikada sadržaj.

Zatim sami pogledajte u odjeljcima REST API i Webhooks: koji ključevi i webhookovi postoje i znate li za svaki čemu služi?

Daljnje čitanje

Trenutak…

Postavite svoje domene

Za svaku domenu odredite nameservere, povezivanje s hostingom i tko postaje vlasnik.

Učitavanje Vaših domena…