Integrare Woocommerce

È possibile integrare integralmente anche il risvolto e-commerce di Wordpress, Woocommerce, sia in termini di pubblicazione di nuovi prodotti direttamente da Genropy con meccanismi analoghi a quelli della pubblicazione di post, sia in termini di lettura prodotti/ordini con il meccanismo dei webhooks.

Pubblicare un prodotto da Genropy

La pubblicazione avviene tramite una request di tipo POST, alla stregua di quanto avviene nel caso di test wootest.

Non essendo stato previsto un vero model per quanto riguarda Woocommerce, dal momento che è ragionevole presupporre che verrà integrato dallo sviluppatore su altri progetti dove è già presente un magazzino o un sistema di gestione degli ordini, si rimanda al caso specifico la trattazione nel dettaglio di come avviene la pubblicazione.

Ricevere i dati degli ordini tramite webhook

Casistica senz’altro più interessante è quella della ricezione dei dati di un ordine, o l’anagrafica di un prodotto, o una notifica di avvenuto pagamento, al fine dell’integrazione di una serie di dati in un applicativo Genropy.

A tal proposito si utilizzano i webhook di Woocommerce, configurabili nel sito da Woocommerce > Impostazioni > Avanzate > Webhook.

../_images/webhook.png

Il webhook permette di indicare un trigger (in questo caso, la creazione dell’ordine), che farà scattare l’invio della request all’entry point dell’applicativo Genropy indicato. Si noti che la Url spedizione punterà al sito dell’applicativo Genropy, in particolare alla webpage woo_hooks del package Wordpress, dove è stato definito un metodo newOrder. Stiamo infatti facendo una external call con le REST API di Genropy.

Il metodo newOrder, al momento solo definito come metodo hook, per essere ridefinito dallo sviluppatore sulla base delle sue esigenze, riceverà un oggetto data, che conterrà tutti i dati dell’ordine ricevuto:

data = json.loads(self.request.data)

order_id = data['id']
total = data['total
shipping_total = data['shipping_total']
billing_data = data['billing']
shipping_data = data['shipping']

Sarà quindi possibile rimappare l’oggetto e trasformarlo a seconda delle proprie esigenze, per esempio salvando i dati del billing_address in una tabella cliente, o ancora il total in una tabella fattura.

Autore della sezione: Davide Paci