Prestashop Webservice – Come usare le API di PS

0
213

Andiamo a parlare del webservice di Prestashop e di come può essere usato per aiutarti in certi contesti. Cercherò di spiegartelo in modo molto semplice rendendo il più basilare possibile alcuni concetti un po’ più difficili. Al fondo troverai il perchè sono andato a sbattere la testa in questo argomento 😉

Ma che cos’è il webservice di Prestashop?

Sono delle API e fanno in modo che servizi di terze parti possano accedere ai dati presenti nel tuo database (db). Con applicazioni di terze parti intendo gestionali, script e tutto ciò che potrebbe aver bisogno di aver accesso ai dati del tuo negozio. Possono esserti utili anche a te, per esempio, se ti servisse mettere in relazione dati diversi che si trovano in posti differenti e costruirti una tabella.

Ma facciamo un esempio

Qualche giorno fa avevo la necessità di ottenere una tabella del tipo:

 Nome cliente | Cognome Cliente |  Numero Telefono 1 | Numero Telefono 2 | email | Città | Paese

Una tabella costruita in questo modo non la trovi nel database già fatta perchè devi mettere in relazione i dati. Potevo intervenire creando uno script in PHP che leggesse i dati dal db, ma non l’ho potuto fare perchè l’hosting mi bloccava l’accesso esterno.

Quindi ecco un altro punto a favore nell’utilizzo delle API di Prestashop. Dovrai solo avere una chiave per accedere a Prestashop e fare le varie operazioni. Ovviamente, le autorizzazioni sono decise a monte da chi te la fornisce.

In poche parole puoi andare a fare operazioni di lettura, creazione, aggiornamento, modifica e cancellazione (CRUD) senza però dover intervenire direttamente a livello di db.

Certo, nulla ti vieta di fare le stesse operazioni direttamente dal tuo database, anzi, probabilmente avresti più flessibilità ma come ti dirò fra qualche riga, usare il webservice rende alcune dinamiche molto più semplici.

Come si attiva il Webservice in Prestashop

Andando nel backoffice del negozio, nella barra laterale cerca “Parametri Avanzati”. Cliccando si apre un sotto menù. Clicca su “Webservice”.

Nella finestra che si è aperta clicca sul “+”. A questo punto dovrai dare un nome alla tua chiave, decidere gli accessi da consentire e cliccare su “genera”. Ovviamente, se hai uno script che legge solo dati, non devi per forza dare i permessi in scrittura.

Le chiamate verso il webservice

Passiamo alla parte un po’ più manuale. Come posso accedere ai dati tramite API? Esistono due tipologie di chiamate con URL, leggermente differenti ma che raggiungono lo stesso risultato. Puoi usare l’una o l’altra anche in base al linguaggio di programmazione che stai utilizzando. Per il test, simuliamo le chiamate da un semplice browser.

Ecco gli url che fanno chiamate verso le API di Prestashop

  • https://CHIAVESEGRETA@iltuosito.com/api/
  • https://iltuosito.com/api?ws_key=CHIAVESEGRETA

Nel caso tu non andassi ad inserire la chiave segreta nell’url, ti verrà chiesto l’accesso e dovrai usare la key come nome utente per poter accedere.

Ovviamente, parto dal presupposto che tu in questo momento ne abbia una per fare qualche prova.

Digitando sul browser uno degli url a tua scelta, l’output sarà in formato XML. Se hai già avuto modo di lavorare con feed o dati, questo formato è molto utilizzato. Perchè si usa? In poche parole…è un linguaggio molto semplice per rappresentare i dati. Vengono definiti dei tag a scelta che fanno capire di che cosa si stia parlando.

Ogni tag, rappresenta una tabella. Nell’esempio qua sopra trovi ad esempio categories, addresses, contacts…abbinati ad altri URL. Andando a digitare quegli URL nel browser accedi alle singole tabelle. Ecco cosa succede per la tabella categories.

https://www.sitotest.it/api/categories

e volendo accedere ai dati di una categoria (con id 29 ad esempio) https://www.sitotest.it/api/categories/29

Se stai scrivendo il tuo script ed hai bisogno di un output JSON, alla fine dell’url inserisci il parametro ?output_format=JSON per avere un risultato del tipo:

{"customers":[{"id":2},{"id":4},{"id":6},{"id":8},{"id":9},{"id":10},{"id":11},{"id":12},{"id":13},{"id":14},{"id":15},{"id":16},{"id":17},{"id":18},{"id":19},{"id":20},{"id":21},{"id":22},{"id":23},{"id":24},{"id":25},{"id":28},{"id":31},{"id":32},{"id":33},{"id":34},{"id":35},{"id":36},{"id":37},{"id":38},{"id":39},{"id":40},{"id":41},{"id":42},{"id":43},{"id":44},{"id":45},{"id":46},{"id":47},{"id":48},{"id":49},{"id":50},{"id":51},{"id":52},{"id":53},{"id":54},{"id":55},{"id":56},{"id":57},{"id":58},{"id":59},{"id":60},{"id":61},{"id":62},{"id":63},{"id":64},{"id":65},{"id":66},{"id":67},{"id":68},{"id":69},{"id":70},{"id":71},{"id":72},{"id":73},{"id":74},{"id":75},{"id":76},{"id":77},{"id":78},{"id":79},{"id":80},{"id":81},{"id":82},{"id":83},{"id":84},{"id":85},{"id":86},{"id":87},{"id":88},{"id":89},{"id":90},{"id":91},{"id":92},{"id":93},{"id":94},{"id":95},{"id":96},{"id":97},{"id":98},{"id":99},{"id":100},{"id":101},{"id":102},{"id":103},{"id":104},{"id":105},{"id":106},{"id":107},{"id":108},{"id":109},{"id":110},{"id":111},{"id":112},{"id":113},{"id":114},{"id":115},{"id":116},{"id":117},{"id":118},{"id":119},{"id":120},{"id":121},{"id":122},{"id":123},{"id":124},{"id":125},{"id":126},{"id":127},{"id":128},{"id":129},{"id":130},{"id":131},{"id":132},{"id":133},{"id":134},

Sia XML che JSON sono due tipologie di output molto utilizzate dagli applicativi. Con degli semplici script in PHP e qualche ciclo puoi creare dei vettori di dati da sfruttare a tuo piacimento.

Ricapitolando…

  • per avere accesso ai dati di Prestashop tramite API devi usare una delle due tipologie di chiamate.
  • Per accedere ad una singola tabella devi completare l’url, quindi se inizialmente avevi https://iltuosito.com/api e vuoi accedere alla lista clienti, completi con /customers. Vuoi leggere i dettagli di un singolo cliente? Inserisci l’id alla fine dell’url https://iltuosito.com/customers/id

Vantaggi del webservice di Prestashop

  • Facilità di accesso ai dati
  • Non avere a che fare con il database in modo diretto
  • Non devi chiedere al gestore dell’hosting di abilitarti all’uso del db da un IP esterno
  • Sono universali

Ma perché sono andato a sbatterci la testa?

Avevo la necessità di segmentare le mail degli utenti iscritti a PS. L’unico modo è quello di usare due tabelle a livello di db, ma mi occorreva uno script universale che riuscisse ad esportare in un file nome cognome città numero di telefono e paese del cliente. Usando uno script in PHP, le API e qualche ciclo for….missione compiuta…ma questo è un altro capitolo 😉 che magari ti racconterò più avanti.

Se hai altre domande o dubbi ti lascio il riferimento alla guida ufficiale di Prestashop riguardo i webservices.

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui