Pereiti prie turinio

Slapukų nustatymai

Pasirinkite, kokių rūšių slapukus leidžiate. Pasirinkimą bet kada galite pakeisti per „Slapukų nustatymai“ kiekvieno puslapio apačioje. Privatumo pareiškimas

Būtinieji

Visada įjungti

Reikalingi prisijungti, išsaugoti krepšelį ir įsiminti Jūsų pasirinkimus. Jie visada įjungti.

Kokie slapukai?
  • weboke_sessie, weboke_klant, weboke_remember: Jūsų sesija ir prisijungimo išlaikymas
  • weboke_basket: Jūsų krepšelis
  • wkBtwIncl: kainų rodymas su PVM arba be PVM
  • wok_cookies: Jūsų slapukų pasirinkimas, 12 mėnesių

Matuoja, kuri reklama atveda prie apsilankymo ar užsakymo, kad nemokėtume už neveiksmingas reklamas.

Kokie slapukai?
  • Google Ads per Google Tag Manager (_gcl_au, _gcl_aw), iki 90 dienų
  • OpenAI Ads, reklamos ChatGPT
  • wok_aff: per kurį partnerį atėjote pas mus (partnerių programa), 60 dienų

4,6

Šalis ir kalba

Kiekviena šalis turi savo svetainę su tos šalies kainomis ir PVM.

Peržiūrėti

Ką Jūsų e. parduotuvė rodo viešai

2 modulis: Įdiegimas ir sąranka · Skaitymo laikas: 10 min.

Mokymosi tikslas: Po šios pamokos galėsite paaiškinti, kas yra WooCommerce Store API ir REST API, kurie duomenys turi būti vieši, o kurie ne, ir kaip saugiai naudoti API raktus ir webhook'us.

Pagrindinės sąvokos: API, WordPress REST API, Store API (wc/store/v1), WooCommerce REST API (wc/v3), JSON, viešas ir apsaugotas, API raktas, skaitymo ir rašymo teisės, mažiausios būtinos teisės, webhook'as, slaptasis webhook'o raktas, X-WP-Total

Parduotuvė su dvejomis durimis

Lankytojas mato Jūsų e. parduotuvę kaip tinklalapius. Tačiau Jūsų e. parduotuvė turi ir „duris“ programoms: adresus, kuriais programa gali užklausti arba siųsti duomenis be puslapio apipavidalinimo. Tokios durys vadinamos API (application programming interface). WordPress turi tokią sąsają adresu /wp-json/, tai REST API. WordPress kurso 7.3 pamokoje parodyta, kad ten, pavyzdžiui, galima užklausti naudotojų vardų, jei nieko neapsaugote.

WooCommerce prideda dvi savo API, kurių paskirtis visiškai skirtinga:

Store APIWooCommerce REST API
Adresas/wp-json/wc/store/v1/.../wp-json/wc/v3/...
Kam skirtaLankytojo naršyklei (krepšelio ir atsiskaitymo blokams, 2.2 pamoka)Kitoms programoms: buhalterijai, atsargų apskaitai, programėlei, sąsajai su prekyvietėmis
Ar reikia raktoNe, viešaTaip, administratoriaus API rakto (arba prisijungusio naudotojo su teisėmis)
Kas joje yraPrekės, kainos, atsargų būsena, kategorijos, atsiliepimai; paties lankytojo krepšelis ir užsakymasViskas: visų užsakymai, klientai, kuponai, nustatymai, ataskaitos

Taigi Store API yra vitrinos įėjimas: kas Jūsų e. parduotuvėje matyti prekės puslapyje, tas yra ir joje, tik duomenų pavidalu. WooCommerce REST API yra sandėlio galinės durys: jos turi būti užrakintos.

Store API: ką gali užklausti lankytojas (ir bet kas)

Naršyklėje atidarykite:

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

Gausite sąrašą JSON formatu, tai tekstinis duomenų formatas. Kiekvienai prekei matysite, be kita ko, pavadinimą, nuorodos pavadinimą (slug), tipą (paprasta, kintama), prekės puslapio adresą (permalink), SKU, kainas, paveikslėlius, kategorijas, ar prekė yra sandėlyje ir ar ją galima pirkti. Atsakymo antraštėse yra X-WP-Total: prekių, kurias parduotuvė rodo lankytojams, skaičius.

Keletas dalykų, kuriuos verta žinoti:

  • Kainos pateikiamos centais. 34,95 € kainuojantis arbatinukas ten nurodytas kaip "price": "3495" su "currency_minor_unit": 2. Padalykite iš 100. Ar tai kaina su PVM, ar be jo, priklauso nuo Jūsų nustatymo „Rodyti kainas parduotuvėje“ (4.1 pamoka). Šią savybę naudosime 4.1 pamokos užduotyje.
  • Tik tai, kas matoma. Prekių, kurios yra juodraščiai, privačios arba paslėptos kataloge, Store API neskaičiuoja. Todėl X-WP-Total gali būti mažesnis už skaičių, kurį matote administravimo srityje.
  • Skaityti gali visi, rašyti ne bet kaip. Įdėti ką nors į krepšelį arba atsiskaityti per Store API galima tik su vienkartiniu kodu (nonce) iš puslapio ir tik to lankytojo krepšeliui.

Ar blogai, kad tai vieša? Ne: tai tie patys duomenys, kurie yra Jūsų prekių puslapiuose. Konkurentas, norintis sekti Jūsų kainas, gali tai daryti ir per įprastus puslapius. Vis dėlto verta žinoti: viskas, ką įrašote į prekės lauką, gali patekti į Store API. Niekada nerašykite pirkimo kainų, tiekėjų pavadinimų ar vidinių pastabų į trumpąjį ar ilgąjį aprašymą „nes tema šio lauko vis tiek nerodo“.

Store API taip pat neuždarykite. Krepšelio ir atsiskaitymo blokams jos reikia (2.2 pamoka). Saugumo papildiniai, kurie „išjungia REST API lankytojams“, dėl to kartais sugadina atsiskaitymą. Jei norite apriboti REST API, Store API palikite kaip išimtį.

Piktnaudžiavimas Store API vis dėlto pasitaiko, bet rašymo pusėje: užpuolikai, turintys pavogtų kortelių numerių, bando atlikti tūkstančius smulkių užsakymų. Tai vadinama kortelių tikrinimu (card testing); apie tai kalbama 6.3 pamokoje.

WooCommerce REST API: visada už rakto

Dabar neprisijungę atidarykite:

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

Teisingas atsakymas yra klaidos pranešimas su būsena 401 (neprisijungta) ir kodu, pavyzdžiui, woocommerce_rest_cannot_view. Jūsų e. parduotuvė sako: „Jums to matyti negalima.“ Taip ir turi būti. Jei čia gaunate užsakymų sąrašą, kažkas rimtai negerai: papildinys, atveriantis teises, pakeistas kodas temoje arba raktas, esantis viešame adrese. Tuomet galimas duomenų saugumo pažeidimas (WordPress kursas, 7.5 pamoka, ir žinių bazės straipsnis 6749).

Programos, kurioms reikia prieigos prie Jūsų užsakymų, gauna API raktą. Jį sukuriate skiltyje WooCommerce > Nustatymai > Papildoma > REST API (Advanced > REST API). Raktą sudaro dvi dalys (consumer key ir consumer secret), ir jis priklauso WordPress naudotojui. Pasirenkate teises:

  • Peržiūrėti: programa gali užklausti duomenų;
  • Atnaujinti: programa gali kurti ir keisti duomenis;
  • Peržiūrėti ir atnaujinti: abu.

Taisyklės, kurių visada laikykitės:

  1. Mažiausios būtinos teisės. Buhalterijos sąsaja, kuri tik parsisiunčia užsakymus, gauna tik skaitymo teisę. Atsargų sąsajai, kuri atnaujina atsargas, reikia rašymo teisės, o ataskaitų įrankiui ne.
  2. Vienas raktas vienai sąsajai, su aiškiu aprašymu („Buhalterija, tik skaitymas, 2026“). Kai sąsaja nebenaudojama, atšaukiate tik tą raktą.
  3. Susiekite raktą su naudotoju, turinčiu tinkamas teises. Administratoriaus raktas gali viską, ką gali administratorius. Geriau sukurkite atskirą naudotoją su vaidmeniu Parduotuvės valdytojas (6.2 pamoka).
  4. Saugiai laikykite slaptąją dalį. Ją matote tik vieną kartą, kai kuriate raktą. Ji turi būti programos nustatymuose arba slaptažodžių tvarkyklėje, o ne el. laiške, bendrinamame dokumente ar viešoje kodo saugykloje.
  5. Tvarkykite. Skiltyje REST API kiekvienam raktui matote, kada jis paskutinį kartą naudotas. Raktą, kuris nenaudotas kelis mėnesius, atšaukite.

Webhook'ai: Jūsų e. parduotuvė pati praneša kitai programai

API laukia, kol kas nors paklaus. Webhook'as veikia atvirkščiai: įvykus kokiam nors įvykiui Jūsų e. parduotuvėje (naujas užsakymas, pakeista prekė), WooCommerce pati siunčia pranešimą Jūsų nurodytu adresu. Taip Jūsų siuntimo programa iš karto sužino apie užsakymą ir jai nereikia klausinėti kas minutę. Juos nustatote skiltyje WooCommerce > Nustatymai > Papildoma > Webhook'ai.

Trys dalykai, į kuriuos verta atkreipti dėmesį:

  • Pranešime yra asmens duomenų. Naujo užsakymo webhook'as siunčia vardą, adresą ir užsakytas prekes. Siųskite tai tik https adresu ir tik šaliai, nurodytai Jūsų privatumo politikoje ir duomenų tvarkymo veiklos įrašuose (5.5 pamoka).
  • Slaptasis raktas. Kurdami webhook'ą įrašote slaptąjį raktą. Juo gaunančioji programa gali patikrinti, ar pranešimas tikrai atėjo iš Jūsų e. parduotuvės, o ne iš ko nors, kas atspėjo adresą. Nepalikite jo tuščio ir bendrinkite jį tik su gavėju.
  • Nepavykęs pristatymas. Jei gaunantysis adresas kurį laiką nepasiekiamas, po pasikartojančių klaidų WooCommerce gali webhook'ą išjungti. Po sutrikimo patikrinkite skiltyje Webhook'ai, ar jie vis dar aktyvūs.

Nepainiokite to su mokėjimų paslaugų teikėjo webhook'u (4.4 pamoka). Jis veikia atvirkščiai: teikėjas praneša Jūsų e. parduotuvei, kad mokėjimas pavyko.

Praktikoje: taip tai atrodo WooCommerce

Pas kitus talpinimo paslaugų teikėjus tai veikia taip pat; tai pačios WooCommerce dalys.

  1. Privačiame naršyklės lange atidarykite /wp-json/wc/store/v1/products savo (bandomojoje) parduotuvėje. Suraskite prekę ir perskaičiuokite jos kainą.
  2. Tame pačiame privačiame lange atidarykite /wp-json/wc/v3/orders. Turėtumėte matyti būseną 401.
  3. Eikite į WooCommerce > Nustatymai > Papildoma > REST API. Peržiūrėkite, kokie raktai yra, kuriam naudotojui jie priklauso ir kokias teises turi. Atšaukite raktus, kurių nežinote (arba kurie nebereikalingi).
  4. Skiltyje Webhook'ai peržiūrėkite, kokie webhook'ai yra ir kokiu adresu jie siunčiami.
  5. Jei turite saugumo papildinį, kuris riboja REST API, patikrinkite, ar Store API palikta kaip išimtis.

Santrauka

  • Store API (wc/store/v1) yra vieša ir joje yra tai, kas matyti ir Jūsų prekių puslapiuose; krepšelio ir atsiskaitymo blokams jos reikia.
  • Nerašykite vidinių duomenų į prekių laukus: per Store API jie gali tapti matomi.
  • WooCommerce REST API (wc/v3) be rakto turi grąžinti 401; užsakymų sąrašas be rakto yra galimas duomenų saugumo pažeidimas.
  • API raktai: mažiausios būtinos teisės, vienas vienai sąsajai, susietas su tinkamu naudotoju, laikomas slaptai, nenaudojami atšaukiami.
  • Webhook'ai siunčia asmens duomenis kitai programai: tik per https, su slaptuoju raktu, šaliai iš Jūsų duomenų tvarkymo veiklos įrašų.

Testas (quiz)

1. Kurie duomenys per Store API turi būti vieši?



2. Neprisijungę atidarote /wp-json/wc/v3/orders ir gaunate užsakymų sąrašą. Ką tai reiškia?



3. Buhalterijos programai reikia tik parsisiųsti užsakymus. Kokį API raktą sukuriate?



4. Saugumo papildinys uždaro visą REST API lankytojams. Po to klientai nebegali atsiskaityti. Kodėl?



5. Kodėl kurdami webhook'ą įrašote slaptąjį raktą?



Užduotis

Užduotis A2.4: Ką Jūsų e. parduotuvė rodo viešai? Įveskite savo (bandomosios) parduotuvės adresą ir prekių, matomų Jūsų parduotuvėje, skaičių. Programa atlieka tris užklausas be slapukų ir be rakto, tik skaitymui:

  1. /wp-json/wc/store/v1/products?per_page=1 (Store API, per REST adresą, kurį nurodo pati Jūsų svetainė);
  2. /wp-json/wc/v3/orders?per_page=1;
  3. /wp-json/wc/v3/customers?per_page=1.

Užduotis A2.4: Ką Jūsų e. parduotuvė rodo viešai?



Ko, ką įvedate ir ką randame, nesaugome. Jūsų naršyklė atsimena Jūsų atsakymus ir tai, ar užduotį atlikote. Jei esate prisijungę, skiltyje Mano kursai išsaugome tik tai, kad užduotis buvo atlikta (ar beveik atlikta); ten tai galite ir pašalinti.

Gerai: Store API atsako būsena 200 ir JSON sąrašu; antraštė X-WP-Total sutampa su Jūsų įvestu skaičiumi; orders ir customers grąžina 401, 403 arba 404.

Oranžinė: X-WP-Total skiriasi (juodraščių, privačių ar paslėptų prekių neskaičiuojama); Store API grąžina 401 arba 403, dažniausiai dėl saugumo papildinio, todėl atsiskaitymo blokai neveikia.

Raudona: Store API nepasiekiama, nors Jūsų svetainėje veikia WooCommerce; arba orders ar customers grąžina sąrašą. Pastarasis atvejis rimtas: nedelsdami uždarykite prieigą, patikrinkite savo API raktus ir papildinius ir įvertinkite, ar turite pranešti apie duomenų saugumo pažeidimą. Tokiu atveju programa išsaugo tik būsenos kodą, niekada ne turinį.

Po to patys peržiūrėkite skiltis REST API ir Webhook'ai: kokie raktai ir webhook'ai ten yra ir ar žinote, kam skirtas kiekvienas iš jų?

Platesniam skaitymui

Akimirką…

Nustatykite domenus

Kiekvienam domenui nustatykite vardų serverius, susiejimą su talpinimu ir tai, kas taps valdytoju.

Įkeliami Jūsų domenai…