Hoppa till innehållet

Cookieinställningar

Välj vilka typer av cookies du tillåter. Du kan alltid ändra ditt val via Cookieinställningar längst ned på varje sida. Integritetspolicy

Nödvändiga

Alltid på

Behövs för att logga in, spara din varukorg och komma ihåg dina val. De är alltid på.

Vilka cookies?
  • weboke_sessie, weboke_klant, weboke_remember: din session och att du förblir inloggad
  • weboke_basket: din varukorg
  • wkBtwIncl: visa priser med eller utan moms
  • wok_cookies: ditt cookieval, 12 månader

Mäter vilken annons som leder till ett besök eller en beställning, så att vi inte betalar för annonser som inte ger något.

Vilka cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), upp till 90 dagar
  • OpenAI Ads, annonser i ChatGPT
  • wok_aff: via vilken partner du kom till oss (affiliateprogram), 60 dagar

4,6

Land och språk

Varje land har en egen webbplats med landets priser och moms.

Visa

Vad din butik visar offentligt

Modul 2: Installera och konfigurera · Lästid: 10 minuter

Lärandemål: Efter den här lektionen kan du förklara vad Store API och REST API i WooCommerce är, vilka uppgifter som ska vara offentliga och vilka som inte ska det, och hur du använder API-nycklar och webhooks säkert.

Nyckelbegrepp: API, REST API i WordPress, Store API (wc/store/v1), REST API i WooCommerce (wc/v3), JSON, offentligt och skyddat, API-nyckel, läs- och skrivbehörighet, minsta behörighet, webhook, hemlig nyckel för en webhook, X-WP-Total

En butik med två dörrar

En besökare ser din butik som webbsidor. Men din butik har också "dörrar" för program: adresser där ett program kan hämta eller skicka uppgifter, utan sidans layout. En sådan dörr kallas API (application programming interface). WordPress har en under /wp-json/, REST API. WordPress-kursen visade i lektion 7.3 att du där till exempel kan hämta användarnamn om du inte skyddar något.

WooCommerce lägger till två egna API:er, med helt olika syften:

Store APIREST API i WooCommerce
Adress/wp-json/wc/store/v1/.../wp-json/wc/v3/...
För vemEn besökares webbläsare (blocken för varukorg och kassa, lektion 2.2)Andra program: bokföring, lager, en app, en koppling till en marknadsplats
Kräver nyckelNej, offentligtJa, en API-nyckel från en administratör (eller en inloggad användare med behörighet)
Vad som finns därProdukter, priser, lagerstatus, kategorier, recensioner; varukorgen och beställningen för besökaren självAllt: allas beställningar, kunder, kuponger, inställningar, rapporter

Store API är alltså skyltfönstret: det som står på en produktsida i din butik finns också där, fast som data. REST API i WooCommerce är lagrets bakdörr: den ska vara låst.

Store API: vad en besökare (och vem som helst) kan hämta

Öppna i din webbläsare:

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

Du får en lista i JSON, ett textformat för data. För varje produkt ser du bland annat namnet, slugen, typen (enkel, variabel), adressen till produktsidan (permalink), artikelnumret (SKU), priserna, bilder, kategorier, om produkten finns i lager och om den går att köpa. I svarets rubrikrader står X-WP-Total: antalet produkter som butiken visar för besökare.

Några saker att känna till:

  • Priserna anges i cent. En tekanna för € 34,95 (≈ 384 kr) står som "price": "3495" med "currency_minor_unit": 2. Du delar med 100. Om priset är med eller utan moms beror på din inställning för "Visa priser i butiken" (lektion 4.1). Den egenskapen använder vi i uppgiften i lektion 4.1.
  • Bara det som är synligt. Produkter som är utkast, privata eller dolda i katalogen räknar Store API inte med. Därför kan X-WP-Total vara lägre än antalet i din administration.
  • Alla får läsa, men inte skriva hur som helst. Att lägga något i varukorgen eller gå till kassan via Store API går bara med en engångskod (nonce) från sidan, och då bara för just den besökarens egen varukorg.

Är det illa att detta är offentligt? Nej: det är samma uppgifter som står på dina produktsidor. En konkurrent som vill bevaka dina priser kan göra det med de vanliga sidorna också. Men tänk på det här: allt du skriver i ett produktfält kan hamna i Store API. Lägg aldrig inköpspriser, namn på leverantörer eller interna anteckningar i den korta eller långa beskrivningen "eftersom temat ändå inte visar det fältet".

Stäng inte heller av Store API. Blocken för varukorg och kassa behöver det (lektion 2.2). Säkerhetstillägg som "stänger av REST API för besökare" förstör därför ibland kassan. Vill du begränsa REST API, undanta då Store API.

Missbruk av Store API förekommer, men då på skrivsidan: angripare som med stulna kortnummer försöker göra tusentals små beställningar. Det kallas card testing; det handlar lektion 6.3 om.

REST API i WooCommerce: alltid bakom en nyckel

Öppna nu, utan att vara inloggad:

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

Rätt svar är ett felmeddelande med status 401 (inte inloggad) och en kod som woocommerce_rest_cannot_view. Din butik säger: "det här får du inte se". Så ska det vara. Får du här en lista med beställningar är något allvarligt fel: ett tillägg som öppnar behörigheter, anpassad kod i temat eller en nyckel som står i en offentlig adress. Då har du en möjlig personuppgiftsincident (WordPress-kursen, lektion 7.5, och kunskapsbasen 6749).

Program som behöver komma åt dina beställningar får en API-nyckel. Den skapar du under WooCommerce > Inställningar > Avancerat > REST API (Advanced > REST API). En nyckel består av två delar (en consumer key och en consumer secret) och hör till en WordPress-användare. Du väljer behörighet:

  • Läs: programmet får hämta uppgifter;
  • Skriv: programmet får skapa och ändra uppgifter;
  • Läs/skriv: båda.

Regler du alltid följer:

  1. Minsta behörighet. En bokföringskoppling som bara hämtar beställningar får bara läsbehörighet. En lagerkoppling som uppdaterar lagersaldon behöver skrivbehörighet, men ett rapportverktyg gör det inte.
  2. En nyckel per koppling, med en tydlig beskrivning ("Bokföring, bara läsa, 2026"). Upphör en koppling återkallar du bara den nyckeln.
  3. Koppla nyckeln till en användare med lämplig behörighet. En administratörs nyckel kan allt som en administratör kan. Skapa hellre en separat användare med rollen Butiksägare (lektion 6.2).
  4. Förvara den hemliga halvan säkert. Du ser den en enda gång när du skapar den. Den hör hemma i programmets inställningar eller i en lösenordshanterare, inte i ett mejl, ett delat dokument eller ett offentligt kodförråd.
  5. Städa. Under REST API ser du för varje nyckel när den senast användes. En nyckel som inte har använts på flera månader återkallar du.

Webhooks: din butik ringer ett annat program

Ett API väntar tills någon frågar. En webhook fungerar tvärtom: vid en händelse i din butik (en ny beställning, en ändrad produkt) skickar WooCommerce själv ett meddelande till en adress som du anger. Så får ditt fraktprogram direkt veta att det finns en beställning, utan att fråga varje minut. Du ställer in dem under WooCommerce > Inställningar > Avancerat > Webhooks.

Tre saker att tänka på:

  • Meddelandet innehåller personuppgifter. En webhook vid en ny beställning skickar med namn, adress och beställda produkter. Skicka det bara till en adress via https och till en part som finns med i din integritetspolicy och ditt register över behandlingar (lektion 5.5).
  • Den hemliga nyckeln. För en webhook fyller du i en hemlig nyckel. Med den kan det mottagande programmet kontrollera att meddelandet verkligen kommer från din butik och inte från någon som har gissat adressen. Lämna den inte tom och dela den bara med mottagaren.
  • Misslyckad leverans. Är den mottagande adressen onåbar en tid kan WooCommerce stänga av webhooken efter upprepade fel. Kontrollera efter en störning under Webhooks att de fortfarande är aktiva.

Blanda inte ihop detta med betalleverantörens webhook (lektion 4.4). Den fungerar åt andra hållet: leverantören meddelar din butik att en betalning har gått igenom.

I praktiken: så ser det ut i WooCommerce

Hos andra webbhotell fungerar det likadant; det här är delar av WooCommerce självt.

  1. Öppna /wp-json/wc/store/v1/products i ett privat fönster på din (test)butik. Leta upp en produkt och räkna om priset.
  2. Öppna /wp-json/wc/v3/orders i samma privata fönster. Du ska se status 401.
  3. Gå till WooCommerce > Inställningar > Avancerat > REST API. Se vilka nycklar som finns, för vilken användare och med vilken behörighet. Återkalla nycklar som du inte känner igen (längre).
  4. Se under Webhooks vilka webhooks som finns och till vilken adress de går.
  5. Har du ett säkerhetstillägg som begränsar REST API, kontrollera då att Store API är undantaget.

Sammanfattning

  • Store API (wc/store/v1) är offentligt och innehåller det som också står på dina produktsidor; blocken för varukorg och kassa behöver det.
  • Lägg inga interna uppgifter i produktfält: de kan bli synliga via Store API.
  • REST API i WooCommerce (wc/v3) ska ge 401 utan nyckel; en lista med beställningar utan nyckel är en möjlig personuppgiftsincident.
  • API-nycklar: minsta behörighet, en per koppling, till en lämplig användare, förvaras hemligt, oanvända återkallas.
  • Webhooks skickar personuppgifter till ett annat program: bara via https, med en hemlig nyckel, till en part i ditt register över behandlingar.

Quiz

1. Vilka uppgifter ska vara offentliga via Store API?



2. Du öppnar /wp-json/wc/v3/orders utan att logga in och får en lista med beställningar. Vad betyder det?



3. Ett bokföringsprogram behöver bara hämta beställningar. Vilken API-nyckel skapar du?



4. Ett säkerhetstillägg stänger hela REST API för besökare. Efter det kan kunderna inte längre gå till kassan. Varför?



5. Varför fyller du i en hemlig nyckel för en webhook?



Uppgift

Uppgift A2.4: Vad visar din butik offentligt? Fyll i adressen till din (test)butik och antalet produkter som är synliga i din butik. Programmet gör tre förfrågningar, utan cookies och utan nyckel, bara läsning:

  1. /wp-json/wc/store/v1/products?per_page=1 (Store API, via den REST-adress som din webbplats själv anger);
  2. /wp-json/wc/v3/orders?per_page=1;
  3. /wp-json/wc/v3/customers?per_page=1.

Uppgift A2.4: Vad visar din butik offentligt?



Det du fyller i och det vi hittar sparar vi inte. Din webbläsare kommer ihåg dina svar och om du klarade uppgiften. Är du inloggad sparar vi bara att du klarade uppgiften (nästan) i Mina kurser; där kan du också ta bort det.

Bra är: Store API svarar med status 200 och en JSON-lista; rubrikraden X-WP-Total är lika med antalet du fyllde i; orders och customers ger 401, 403 eller 404.

Orange: X-WP-Total avviker (produkter som är utkast, privata eller dolda räknas inte med); Store API ger 401 eller 403, oftast på grund av ett säkerhetstillägg, vilket gör att kassablocken inte fungerar.

Röd: Store API går inte att nå fast din webbplats kör WooCommerce; eller orders eller customers returnerar en lista. Det senare är allvarligt: stäng det direkt, kontrollera dina API-nycklar och tillägg, och bedöm om du måste anmäla en personuppgiftsincident. Programmet sparar i så fall bara statuskoden, aldrig innehållet.

Titta sedan själv under REST API och Webhooks: vilka nycklar och webhooks finns där, och vet du vad var och en är till för?

Läs mer

Ett ögonblick…

Ställ in dina domäner

Ställ in namnservrar, koppling till ditt webbhotell och vem som blir innehavare för varje domän.

Hämtar dina domäner…