In-app billing per comuni mortali – puntata 1

Iniziamo questa nuova serie di articoli a puntate dedicata all’utilizzo del nuovo servizio di in-app billing di google per i telefonini android che ci consente di ricevere pagamenti direttamente all’interno della nostra applicazione.  Inizialmente questa guida avrei voluto farla in un unico post, ma arrivato alla decima pagina e ancora non avevo finito, mi sono reso conto che forse sarebbe stato meglio suddividerla in piú articoli. E quindi iniziamo questa prima puntata introducendo le caratteristiche del servizio, vedendo quali pacchetti andranno installati e quali sono i primi passi da fare per abilitarlo all’interno della nostra applicazione.

Il billing in-app per le applicazioni android come detto precedentemente permette all’utente di effettuare degli acquisti direttamente dalla nostra applicazione, utilizzando i servizi del Play store senza doverci piú preoccupare della gestione delle transazioni, il tutto avverrá in maniera molto simile a quanto accade gia per l’acquisto di un app, utilizzando anche le stesse informazioni finanziarie, fornendo cosí anche agli utenti una discreta sicurezza sul sistema che si sta adottando per gestire le transazioni. Come tutte le cose ci sono dei pro e dei contro, vediamoli brevemente:

PRO:

  1. Fornisce all’utente un ambiente familiare per fare i propri acquisti
  2. L’utente se ha gia effettuato degli acquisti tramite il play store non é costretto a inserire nuovamente le informazioni finanziare.
  3. Un unica contabilizzazione degli introiti per le app in vendita e le componenti vendute tramite la nostra applicazione
  4. Libera il programmatore dall’impellenza di implementare tutto un protocollo per le tranasazioni sicure, gestione delle carte di credito, gestione degli ordini.

CONTRO:

  1. Si pagano le stesse commmissioni che per la vendita di applicazioni
  2. L’implementazione da zero  non é immediata richiede un pó di codice.
  3. Non é supportato il pagamento con paypal Comunque a meno che non abbiamo intenzione di creare una nostra infrastruttura per le nostre applicazioni android di gestione transazioni, questo servizio vale la pena utilizzarlo soprattutto se siamo piccoli sviluppatori (anche perche chi si fiderebbe a lasciare i propri dati finanziari in un acquisto tramite un applicazione scritta da un perfetto sconosciuto?).
Una screenshot di come compare l’inapp billing:

La guida seguente é ispirata dalla guida ufficiale dell’in-app billing, cercando di semplificarla ove possibile e renderla piú comprensibile (e soprattutto in italiano 🙂 ). Se volete la guida ufficiale in inglese: http://developer.android.com/guide/market/billing/index.htmlComunque per poter utilizzare i servizi di google checkouit vi sono alcuni requisiti:

  1. L’app deve essere venduta nel play store
  2. Bisogna possedere un account merchant per poter utilizzarlo.
  3. Per poter essere utilizzato, l’applicazione deve girare almeno su android 1.6
  4. Ovviamente serve una connessione attiva per gestire le varie transazioni.

Il modo migliore per avere questo servizio nella nostra applicazione dovremo creare:

  • Un servizio, che si occuperá di gestire  i messaggi di acquisto, e li spedisce le richieste di acquisto al servizio di Google Play e che enterá nel merito delle transazioni che sono state eseguite.
  • Un BroadcastReceiver, che invece servirá per smistare i messaggi che google play invierá alla nostra applicazione riguardanti lo stato della nostra transazione.
  • Una classe che conterrá alcuni metodi relativi alla decifratura dei messaggi cifrati che sono stati ricevuti dalla nostra applicazione.
  • Nel manifest dell’applicazione dobbiamo aggiungerel a permission per il BILLING
Un piccolo suggerimento per seguire al meglio questa guida vi conviene avere un minimo di padronanza con i seguenti aspetti della programmazione Android: i servizi, i BroadcastReceiver, le Intent e avere una buona comprensione del Manifest dell’applicazione.
Passiamo ora a vedere passo passo come implementare queste classi.

Setup eclipse e applicazione

Prima di tutto se non lo abbiamo gia fatto dobbiamo installare il supporto all’in-app in eclipse, per farlo lanciamo l’Android SDK Manager e nella sezione extras installare  le Google Play Billing Library.

Passiamo ora alla nostra applicazione. Prima di tutto dobbiamo creare un package. Prima di tutto dobbiamo creare il seguente package:

com.android.vending.billing

Nel quale andremo a copiare il file IMarketBillingService.aidl, che possiamo trovare nell’applicazione di esempio, nella cartella android-sdk-linux/extras/google/play_billing/src/com/android/vending/billing/(android-sdk-linux é la cartella che contiene il l’sdk per android, quindi dove trovarla dipende da come e dove lo avete installato. Se proprio non avete idea di dove lo avete installato potete farvi aiutare dal menu preferences di Eclipse. Andate su Window->Preferences e selezionate la voce Android, li troverete fra le varie opzioni anche quella relativa al path del SDK (SDK Location). Il file IMarketBillingService.aidl definisce un interfaccia fra l’applicazione e Google Play, una volta inserito nel package, verrá aggiunta un interfaccia all’interno della cartella gen (che vi ricordo contiene alcune classi/interfacce generate automaticamente dal plugin android per il nostro progetto). Dopo di ché dobbiamo modificare il Manifest dell’applicazione per aggiungere:

  •  I permessi di utilizzo del billing
  • Il BroadCastReceiver che andremo ad implementare
  • Il servizio che andremo ad aggiungere

Nel nostro esempio creeremo:

  • ItalialinuxBillingReceiver  sará il BroadCastReceiver per tutti i messaggi asincroni che arriveranno da google play.
  • ItalialinuxBillingService invecé sará il servizio che si occuperá di smistare i messaggi verso google play.

Vediamo quindi cosa dobbiamo aggiungere nel nostro manifest: Per abilitare la nostra applicazione ad utilizzare i servizi del Billing:

<uses-permission android:name="com.android.vending.BILLING" />

E ovviamente dobbiamo definire il servizio e il broadcast receiver:

<service android:name=".billing.ItalialinuxBillingService" />
 
<receiver android:name=".billing.ItalialinuxBillingReceiver">
<intent-filter>
<action android:name="com.android.vending.billing.IN_APP_NOTIFY" />
<action android:name="com.android.vending.billing.RESPONSE_CODE" />
<action android:name="com.android.vending.billing.PURCHASE_STATE_CHANGED" />
</intent-filter>
</receiver>

Come vedete la nostra applicazione dovra ricevere le seguenti azioni:

  • IN_APP_NOTIFY (lanciata quando avviene un cambio di stato nella transazione)
  • RESPONSE_CODE ricevuta nell’appliaczione a seguito di richieste fatte al market.
  • PURCHASE_STATE_CHANGED usata da google play per spedire le informaizoni della transazione.

(Nel dettaglio le vedremo piú avanti). La nostra implementazione offrirá tre tipi di richieste:

  • Controllo supporto in-app billing
  • Richiesta di acquisto
  • Lettura delle transazioni precedenti se disponibile.

Per ognunga di queste vedremo la sequenza di messaggi scambiati con lo store e come implementarle. Ma prima vedremo i metodi base da implementare per gestire lo scambio di messaggi, la sicurezza etc.

Per ora ci fermiamo, la prossima volta vedremo come avviene la comunicazione fra l’applicazione e l’in-app billing.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.