Esercitazione all'uso delle API di eBay


1. Preparazione dell'ambiente

Ebay Developer Account. Nel corso dell'esercitazione utilizzeremo le API di eBay che richiedono una utenza viluppatore registrata. Accedere quindi al portale di registrazione sviluppatori per ottenere le keys per l'ambiente Sandbox.

2. Familiarizzare con le Web API

Abbiamo visto come fruire dello strumento di ricerca di eBay tramite http e non avremmo difficoltà ad ottenere lo stesso risultato con applicazioni custom, ma una volta ottenuta la pagina HTML di risposta, come la interpretiamo per ottenere i dati che ci interessano?

È chiaro che il formato HTML non è adatto a questo scopo. Per questo eBay espone una serie di Web API per consentire agli sviluppatori l'integrazione delle proprie applicazioni.

Le Web API di Ebay sono divise per categorie d'uso. Quelle che utilizzeremo in questa esercitazione sono:

Vediamo un esempio d'uso della Finding API con l'operazione findItemsByKeywords utilizzando cURL oppure, per una più semplice lettura, un Browser:

curl "http://svcs.sandbox.ebay.com/services/search/FindingService/v1?SECURITY-APPNAME=*****CHANGE-ME******&OPERATION-NAME=findItemsByKeywords&keywords=Android&paginationInput.entriesPerPage=1"

[Nota] Nota

SECURITY-APPNAME : la Sandbox Application Key fornito da eBay, da sostituire con la propria.

OPERATION-NAME : l'operazione richiesta, nel nostro caso findItemsByKeywords

keywords : parametro per l'operazione findItemsByKeywords per fornire la chiave di ricerca Android.

paginationInput.entriesPerPage : parametro per l'operazione findItemsByKeywords per indicare il numero di risultati per pagina, nel nostro caso 1.

In risposta otteniamo i risultati della ricerca in formato standard XML, facilmente interpretabile da un'applicazione. È anche possibile avere lo stesso risultato in formato JSON semplicemente appendendo alla richiesta il parametro RESPONSE-DATA-FORMAT=JSON . Per una facile lettura del risultato potete usare uno dei tanti visualizzatori JSON online, come JSON Editor Online , selezionare Open URL ed inserire la URL della richiesta.

Abbiamo visto come fare richieste tramite GET, ma possiamo anche farle tramite POST, fornendo i parametri in formato strutturato.

[Suggerimento] Suggerimento

Nella documentazione sono indicati i parametri accessori alle richieste . Alcuni di questi sono obbligatori e possono essere indicati sia nella query string, come visto nell'esempio SOAP, sia come header HTTP. Scegliamo di proseguire con gli esempi utilizzando la seconda soluzione per motivi di leggibilità dei comandi. Ricordiamo per aggiungere un header in cURL si utilizza la sintassi -H "NomeHeader: Valore"

Prendiamo ad esempio la seguante richiesta XML e salviamola sul file findItemsByKeywords.request.xml :

<findItemsByKeywordsRequest xmlns="http://www.ebay.com/marketplace/search/v1/services">
   <keywords>Samsung</keywords>
   <paginationInput>
      <entriesPerPage>1</entriesPerPage>
   </paginationInput>
</findItemsByKeywordsRequest>

ed inviamola tramite cURL

curl -o findItemsByKeywords.response.xml -H "X-EBAY-SOA-SECURITY-APPNAME: -----CHANGEME-------" -H "X-EBAY-SOA-OPERATION-NAME: findItemsByKeywords" -X POST -T findItemsByKeywords.request.xml http://svcs.sandbox.ebay.com/services/search/FindingService/v1

3. Esercizio Web API

Proviamo a simulare una vendita ed un acquisto su eBay utilizzando le Web API appena introdotte. Ebay mette a disposizione un ambiente di test chiamato Ebay Sandbox dove possiamo creare utente e simulare compravendite con le applicazioni da noi sviluppate.

[Nota] Nota

Abbiamo già un account sviluppatore per utilizzare le Shopping API. Per utilizzare le Trading API ci serve un account utente ed il relativo Token. Creiamo quindi una nuova utenza acquirente , accediamo alla pagina di generazione User Token , selezioniamo l'ambiente Sandbox ed il keyset del nostro account sviluppatore (l'unico disponibile). Procediamo nella creazione ed inseriamo, quando richiesto, le credenziali dell'account utente creato in precedenza. Al termine del processo ci viene comunicato il Token da utilizzare. Copiamolo e salviamolo per utilizzarlo per il resto del corso.

Obiettivo dell'esercitazione. Questa esercitazione si svolge a coppie. Ciascun membro della coppia deve mettere in vendita un oggetto e acquistare quello del compagno. Le interazioni con le Web API devono essere eseguite tramite l'uso del cURL.

STEP 1. Individuare l'identificativo della categoria. L'oggetto che vogliamo mettere in vendita è uno Smartwatch. Dobbiamo quindi trovare l'identificativo della giusta categoria per la messa in vendita. La Shopping API mette a disposizione il metodo GetCategoryInfo per navigare la gerarchia delle categorie. Studiare la documentazione per capire come utilizzarla correttamente. Quella di nostro interesse si trova seguendo il path ROOT > Cell Phones > Smart Watches

[Suggerimento] Suggerimento

La Shopping API prevede un diverso set di parametri obbligatori, come indicato nella documentazione:

  • X-EBAY-API-APP-ID : la Application Id per l'ambiente Sandbox collegata al nostro account sviluppatore

    X-EBAY-API-CALL-NAME : il nome dell'operazione richiesta

    X-EBAY-API-REQUEST-ENCODING : la codifica della richeista (eg. XML)

    X-EBAY-API-VERSION : la versione delle API che si vogliono usare (eg. 867)

ricordando che cambia anche la URL del servizio in http://open.api.sandbox.ebay.com/shopping

Individuata la categoria di vostro interesse, memorizzatene l'Identificativo per il prossimo step.

STEP 2. Mettere in vendita un nuovo oggetto. Per la messa in vendita di un oggetto, utilizziamo la Trading API ed il partivolare il metodo AddItem .

[Suggerimento] Suggerimento

Come definito nella documentazione, questi gli header richiesti dalla libreria:

  • X-EBAY-API-DEV-NAME : la Development Id per l'ambiente Sandbox collegata al nostro account sviluppatore

    X-EBAY-API-CALL-NAME : il nome dell'operazione richiesta

    X-EBAY-API-COMPATIBILITY-LEVEL : la versione delle API che si vogliono usare (eg. 867)

    X-EBAY-API-SITEID : la nazione dove si commercializza (eg. 0 United State)

ricordando che la URL da invocare è https://api.sandbox.ebay.com/ws/api.dll che, essendo in https richiede in cURL di aggiungere l'opzione -k per trustare il certificato server (argomento si sicurezza trattato nelle future lezioni).

Dalla documentazione potete verificare che i dettagli per l'inserimento di una nuova richiesta sono numerosi, ma molti opzionali. Per aiutarvi nell'impresa di costruirne una valida, vi viene fornito di seguito un template di richiesta con i soli campi obbligatori, nel quale dovrete inserire l' IdCategoria trovato in precedenza, un ID univoco per questa richiesta (un MD5, stringa di 32 caratteri esadecimali) ed il vostro eBayAuthToken :

<?xml version="1.0" encoding="utf-8"?>
<AddItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">
	<Item>
		<Title>Smartwatch Clementoni</Title>
		<Description>Lo Smartwatch dei tuoi sogni!</Description>
		<PrimaryCategory>
			<CategoryID>---ID CATEGORIA TROVATO ALLO STEP 1 ---</CategoryID>
		</PrimaryCategory>
		<StartPrice>1.00</StartPrice>
		<ConditionID>3000</ConditionID>
		<CategoryMappingAllowed>true</CategoryMappingAllowed>
		<Country>US</Country>
		<Currency>USD</Currency>
		<DispatchTimeMax>3</DispatchTimeMax>
		<ListingDuration>Days_7</ListingDuration>
		<PaymentMethods>PayPal</PaymentMethods>
		<PayPalEmailAddress>magicalbookseller@yahoo.com</PayPalEmailAddress>
		<PostalCode>95125</PostalCode>
		<Quantity>1</Quantity>
		<ReturnPolicy>
			<ReturnsAcceptedOption>ReturnsAccepted</ReturnsAcceptedOption>
			<RefundOption>MoneyBack</RefundOption>
			<ReturnsWithinOption>Days_30</ReturnsWithinOption>
			<Description>
				Condizioni ottime!
			</Description>
			<ShippingCostPaidByOption>Buyer</ShippingCostPaidByOption>
		</ReturnPolicy>
		<ShippingDetails>
			<ShippingType>Flat</ShippingType>
			<ShippingServiceOptions>
				<ShippingServicePriority>1</ShippingServicePriority>
				<ShippingService>USPSMedia</ShippingService>
				<ShippingServiceCost>2.50</ShippingServiceCost>
			</ShippingServiceOptions>
		</ShippingDetails>
		<Site>US</Site>
		<UUID>-----32 CARATTERI TRA CIFRE E LETTERE DA A AD F----</UUID>
	</Item>
	<RequesterCredentials>
		<eBayAuthToken>---- Lo User Token acquisito in precedenza ----</eBayAuthToken>
	</RequesterCredentials>
	<WarningLevel>High</WarningLevel>
</AddItemRequest>

Se la pubblicazione dell'articolo si completa con successo, dalla risposta recuperate l'identificativo dell'Item creato e comunicarlo al compagno d'esercitazione per procedere allo Step 3.

STEP 3. Fare un'offerta. Utilizziamo sempre la Trading API per fare un'offerta per l'asta creata dal vostro compagno con il metodo PlaceOffer . Completiamo quindi la richiesta che segue con l'identificativo dell'oggetto creato dal nostro compagno:

<?xml version="1.0" encoding="utf-8"?>
<PlaceOfferRequest xmlns="urn:ebay:apis:eBLBaseComponents">
	<ItemID>---ID ITEM DEL COMPAGNO ---</ItemID>
	<Offer>
		<Action>Bid</Action>
		<MaxBid>20.00</MaxBid>
		<Quantity>1</Quantity>
	</Offer>
	<EndUserIP>10.0.0.1</EndUserIP>
	<RequesterCredentials>
		<eBayAuthToken>---- Lo User Token acquisito in precedenza ----</eBayAuthToken>
	</RequesterCredentials>
</PlaceOfferRequest>

Se l'acquisto si completa con successo, recuperare dalla risposta l'identificativo dell'Item creato e comunicarlo al compagno d'esercitazione.

Footer BGFooter BG
Tito Flagella - © 2007-2015