Vai al contenuto

Impostazioni cookie

Scelga per ogni tipo quali cookie consente. Può modificare la sua scelta in qualsiasi momento tramite Impostazioni cookie in fondo a ogni pagina. Informativa sulla privacy

Necessari

Sempre attivi

Servono per accedere, conservare il carrello e ricordare le sue scelte. Sono sempre attivi.

Quali cookie?
  • weboke_sessie, weboke_klant, weboke_remember: la sua sessione e la permanenza dell'accesso
  • weboke_basket: il suo carrello
  • wkBtwIncl: visualizzazione dei prezzi con o senza IVA
  • wok_cookies: la sua scelta sui cookie, 12 mesi

Misurano quale annuncio porta a una visita o a un ordine, così non paghiamo annunci che non funzionano.

Quali cookie?
  • Google Ads tramite Google Tag Manager (_gcl_au, _gcl_aw), fino a 90 giorni
  • OpenAI Ads, annunci in ChatGPT
  • wok_aff: tramite quale partner è arrivato da noi (programma di affiliazione), 60 giorni

4,6

Paese e lingua

Ogni paese ha il suo sito, con i prezzi e l'IVA di quel paese.

Vedi

Che cosa mostra pubblicamente il Suo negozio

Modulo 2: Installazione e configurazione · Tempo di lettura: 10 minuti

Obiettivo della lezione: Al termine di questa lezione Lei saprà spiegare che cosa sono la Store API e l'API REST di WooCommerce, quali dati devono essere pubblici e quali no, e come utilizzare in modo sicuro le chiavi API e i webhook.

Concetti chiave: API, API REST di WordPress, Store API (wc/store/v1), API REST di WooCommerce (wc/v3), JSON, pubblico e protetto, chiave API, permessi di lettura e scrittura, privilegi minimi, webhook, chiave segreta di un webhook, X-WP-Total

Un negozio con due porte

Un visitatore vede il Suo negozio come pagine web. Ma il Suo negozio ha anche delle "porte" per i programmi: indirizzi a cui un programma può richiedere o inviare dati, senza la grafica di una pagina. Una porta di questo tipo si chiama API (application programming interface). WordPress ne ha una sotto /wp-json/, l'API REST. Il corso su WordPress ha mostrato nella lezione 7.3 che lì è possibile, ad esempio, ottenere i nomi utente se non si protegge nulla.

WooCommerce aggiunge due API proprie, con scopi molto diversi:

Store APIAPI REST di WooCommerce
Indirizzo/wp-json/wc/store/v1/.../wp-json/wc/v3/...
Per chiIl browser di un visitatore (i blocchi del carrello e del pagamento, lezione 2.2)Altri programmi: contabilità, magazzino, un'app, un collegamento con un marketplace
Serve una chiaveNo, è pubblicaSì, una chiave API di un amministratore (o un utente connesso con i permessi adeguati)
Che cosa contieneProdotti, prezzi, stato delle scorte, categorie, recensioni; il carrello e l'ordine del visitatore stessoTutto: gli ordini di chiunque, clienti, codici promozionali, impostazioni, report

La Store API è quindi l'ingresso della vetrina: ciò che nel Suo negozio compare in una pagina prodotto si trova anche lì, solo sotto forma di dati. L'API REST di WooCommerce è la porta sul retro del magazzino: deve restare chiusa a chiave.

La Store API: che cosa può richiedere un visitatore (e chiunque)

Apra nel Suo browser:

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

Riceverà un elenco in JSON, un formato di testo per i dati. Per ogni prodotto vedrà, tra l'altro, il nome, lo slug, il tipo (semplice, variabile), l'indirizzo della pagina prodotto (permalink), lo SKU, i prezzi, le immagini, le categorie, se è disponibile in magazzino e se è acquistabile. Nelle intestazioni della risposta compare X-WP-Total: il numero di prodotti che il negozio mostra ai visitatori.

Alcune cose da sapere:

  • I prezzi sono in centesimi. Una teiera da € 34,95 compare come "price": "3495" con "currency_minor_unit": 2. Va diviso per 100. Se si tratti del prezzo con o senza IVA dipende dalla Sua impostazione in "Visualizza i prezzi nel negozio" (lezione 4.1). Utilizzeremo questa caratteristica nell'esercizio della lezione 4.1.
  • Solo ciò che è visibile. I prodotti in bozza, privati o nascosti nel catalogo non vengono conteggiati dalla Store API. Per questo X-WP-Total può essere inferiore al numero che vede nel pannello di amministrazione.
  • Leggere è permesso a tutti, scrivere non liberamente. Aggiungere qualcosa al carrello o completare il pagamento tramite la Store API è possibile solo con un codice monouso (nonce) presente nella pagina, e soltanto per il carrello di quel visitatore.

È un problema che questi dati siano pubblici? No: sono gli stessi dati presenti nelle Sue pagine prodotto. Un concorrente che vuole monitorare i Suoi prezzi può farlo anche con le pagine normali. È però bene sapere che tutto ciò che inserisce in un campo del prodotto può finire nella Store API. Non inserisca mai prezzi di acquisto, nomi di fornitori o note interne nella descrizione breve o lunga "perché tanto il tema non mostra quel campo".

Non disattivi nemmeno la Store API. I blocchi del carrello e del pagamento ne hanno bisogno (lezione 2.2). I plugin di sicurezza che "disattivano l'API REST per i visitatori" a volte bloccano così il pagamento. Se desidera limitare l'API REST, escluda la Store API da tale limitazione.

Gli abusi della Store API esistono, ma riguardano il lato della scrittura: aggressori che tentano migliaia di piccoli ordini con numeri di carta rubati. Si chiama card testing; ne parla la lezione 6.3.

L'API REST di WooCommerce: sempre protetta da una chiave

Ora apra, senza aver effettuato l'accesso:

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

La risposta corretta è un messaggio di errore con stato 401 (non autenticato) e un codice come woocommerce_rest_cannot_view. Il Suo negozio dice: "Lei non è autorizzato a vedere questo contenuto". È così che deve essere. Se qui riceve un elenco di ordini, c'è qualcosa di gravemente sbagliato: un plugin che apre i permessi, del codice personalizzato nel tema o una chiave inserita in un indirizzo pubblico. In tal caso si tratta di una possibile violazione dei dati personali (corso su WordPress, lezione 7.5, e articolo 6749 della base di conoscenza).

I programmi che devono accedere ai Suoi ordini ricevono una chiave API. La crea in WooCommerce > Impostazioni > Avanzate > API REST (Advanced > REST API). Una chiave è composta da due parti (una consumer key e un consumer secret) ed è associata a un utente WordPress. Lei sceglie i permessi:

  • Leggi: il programma può richiedere dati;
  • Scrivi: il programma può creare e modificare dati;
  • Leggi/Scrivi: entrambe le cose.

Regole da seguire sempre:

  1. Privilegi minimi. Un collegamento con la contabilità che si limita a scaricare gli ordini riceve solo la lettura. Un collegamento di magazzino che aggiorna le scorte ha bisogno della scrittura, uno strumento di reportistica no.
  2. Una chiave per ogni collegamento, con una descrizione chiara ("Contabilità, solo lettura, 2026"). Se un collegamento viene dismesso, revoca soltanto quella chiave.
  3. Associ la chiave a un utente con permessi adeguati. La chiave di un amministratore può fare tutto ciò che può fare un amministratore. È preferibile creare un utente separato con il ruolo Gestore negozio (lezione 6.2).
  4. Conservi al sicuro la parte segreta. La vede una sola volta al momento della creazione. Va inserita nelle impostazioni del programma o in un gestore di password, non in un'email, in un documento condiviso o in un repository di codice pubblico.
  5. Faccia pulizia. In API REST vede per ogni chiave quando è stata utilizzata l'ultima volta. Una chiave che non viene usata da mesi va revocata.

Webhook: il Suo negozio chiama un altro programma

Un'API attende che qualcuno faccia una richiesta. Un webhook funziona al contrario: quando nel Suo negozio si verifica un evento (un nuovo ordine, un prodotto modificato), è WooCommerce stesso a inviare un messaggio a un indirizzo da Lei indicato. In questo modo il Suo programma di spedizione sa subito che c'è un ordine, senza doverlo chiedere ogni minuto. Li configura in WooCommerce > Impostazioni > Avanzate > Webhook.

Tre aspetti a cui prestare attenzione:

  • Il messaggio contiene dati personali. Un webhook per un nuovo ordine invia nome, indirizzo e prodotti ordinati. Invii questi dati solo a un indirizzo https e a un soggetto indicato nella Sua informativa sulla privacy e nel Suo registro dei trattamenti (lezione 5.5).
  • La chiave segreta. In un webhook si inserisce una chiave segreta. Con essa il programma che riceve può verificare che il messaggio provenga davvero dal Suo negozio e non da qualcuno che ha indovinato l'indirizzo. Non la lasci vuota e la condivida solo con il destinatario.
  • Consegna non riuscita. Se l'indirizzo di destinazione resta irraggiungibile per un certo tempo, WooCommerce può disattivare il webhook dopo ripetuti errori. Dopo un guasto, verifichi in Webhook che siano ancora attivi.

Non confonda questo con il webhook del Suo fornitore di pagamento (lezione 4.4). Quello funziona al contrario: il fornitore comunica al Suo negozio che un pagamento è andato a buon fine.

In pratica: ecco come appare in WooCommerce

Con altri provider di hosting funziona allo stesso modo; si tratta di componenti di WooCommerce stesso.

  1. Apra in una finestra privata /wp-json/wc/store/v1/products sul Suo negozio (di prova). Cerchi un prodotto e converta il prezzo.
  2. Apra nella stessa finestra privata /wp-json/wc/v3/orders. Dovrebbe vedere lo stato 401.
  3. Vada su WooCommerce > Impostazioni > Avanzate > API REST. Controlli quali chiavi esistono, a quale utente sono associate e con quali permessi. Revochi le chiavi che non riconosce (più).
  4. In Webhook controlli quali webhook esistono e a quale indirizzo inviano.
  5. Se utilizza un plugin di sicurezza che limita l'API REST, verifichi che la Store API sia esclusa.

Riepilogo

  • La Store API (wc/store/v1) è pubblica e contiene ciò che compare anche nelle Sue pagine prodotto; i blocchi del carrello e del pagamento ne hanno bisogno.
  • Non inserisca dati interni nei campi del prodotto: possono diventare visibili tramite la Store API.
  • L'API REST di WooCommerce (wc/v3) senza chiave deve restituire un 401; un elenco di ordini senza chiave è una possibile violazione dei dati personali.
  • Chiavi API: privilegi minimi, una per collegamento, associata a un utente adeguato, conservata in segreto, revocata se non utilizzata.
  • I webhook inviano dati personali a un altro programma: solo tramite https, con una chiave segreta, a un soggetto presente nel Suo registro dei trattamenti.

Quiz

1. Quali dati devono essere pubblici tramite la Store API?



2. Apre senza effettuare l'accesso /wp-json/wc/v3/orders e riceve un elenco di ordini. Che cosa significa?



3. Un programma di contabilità deve soltanto scaricare gli ordini. Quale chiave API crea?



4. Un plugin di sicurezza chiude l'intera API REST ai visitatori. Da quel momento i clienti non riescono più a completare il pagamento. Perché?



5. Perché in un webhook si inserisce una chiave segreta?



Esercizio

Esercizio A2.4: Che cosa mostra pubblicamente il Suo negozio? Inserisca l'indirizzo del Suo negozio (di prova) e il numero di prodotti visibili nel negozio. Il programma esegue tre richieste, senza cookie e senza chiave, in sola lettura:

  1. /wp-json/wc/store/v1/products?per_page=1 (la Store API, tramite l'indirizzo REST indicato dal Suo sito stesso);
  2. /wp-json/wc/v3/orders?per_page=1;
  3. /wp-json/wc/v3/customers?per_page=1.

Esercizio A2.4: Che cosa mostra pubblicamente il Suo negozio?



Quello che inserisce e quello che rileviamo non vengono salvati. Il Suo browser ricorda le Sue risposte e se ha superato l'esercizio. Se ha effettuato l'accesso, conserviamo in I miei corsi solo il fatto che l'esercizio era (quasi) corretto; anche lì può eliminarlo.

Corretto significa: la Store API risponde con stato 200 e un elenco JSON; l'intestazione X-WP-Total corrisponde al numero da Lei inserito; orders e customers restituiscono 401, 403 o 404.

Arancione: X-WP-Total non corrisponde (i prodotti in bozza, privati o nascosti non vengono conteggiati); la Store API restituisce 401 o 403, di solito a causa di un plugin di sicurezza, per cui i blocchi del pagamento non funzionano.

Rosso: la Store API non è raggiungibile mentre il Suo sito utilizza WooCommerce; oppure orders o customers restituiscono un elenco. Quest'ultimo caso è grave: chiuda subito l'accesso, controlli le Sue chiavi API e i plugin e valuti se deve notificare una violazione dei dati. In questo caso il programma conserva solo il codice di stato, mai il contenuto.

Controlli poi di persona in API REST e Webhook: quali chiavi e webhook sono presenti, e sa per ciascuno a che cosa serve?

Per saperne di più

Un momento…

Configuri i suoi domini

Per ogni dominio imposti i nameserver, il collegamento al suo hosting e chi ne diventa l'intestatario.

Caricamento dei suoi domini…