In-App billing per comuni mortali – puntata 4 CHECK_BILLING_SUPPORTED

In questa lezione effettueremo la nostra prima richiesta al servizio in-app di android, per la precisone utilizzeremo la richiesta CHECK_BILLING_SUPPORTED  che ci permetterá di sapere se il device è abilitato o meno a questa tipologia di pagamento (non tutte le versioni di android supportano l’in-app billing).

Le richieste disponibili – Numero 1: CHECK_BILLING_SUPPORTED

La prima richiesta che andiamo a vedere, é anche la piú semplice, ed é quella per verificare che l’in-app billing sia supportato dal telefonino. Questa richiesta non genera delle risposte asincrone, ma bensí solo un risposta sincrona. con il RESPONSE_CODE il cui valore ci dirá se possiamo fare o meno le richieste in-app.  Nell’immagine seguente vedete come é la sequenza di chiamate risposte per questo comando (l’immagine é stata presa dalla documentazione android di google)
.

Come possiamo vedere dall’immagine la sequenza di messaggi per il metodo CHECK_BILLING_SUPPORTED é estremamente semplice:

  • Creiamo un Bundle di richiesta con il comando CHECK_BILLING_SUPPORTED utilizzando il metodo makeRequestBundle (in questo caso non avremo bisogno di passare valori aggiuntivi alla richiesta)
    Bundle request =  makeRequestBundle("CHECK_BILLING_SUPPORTED");
  • Effettuiamo la richiesta al servizio in-app tramite il metodo sendBillingRequest che ci ritorna il Bundle di risposta con il RESPONSE_CODE,
    Bundle response = mService.sendBillingRequest(request);
  • Leggiamo il valore del “RESPONSE_CODE” dal Bundle di risposta ricevuto, che ci indicherá se il servizio é supportato o meno:
    int code = response.getInt("RESPONSE_CODE");

I possibili valori per i response code sono:

  • RESULT_OK (0) L’in-app billing é supportato, quindi possiamo procedere con le richieste.
  • RESULT_BILLING_UNAVAILABLE (3) Il servizio non é supportato dal device, quindi non si potranno fare acquisti in-app
  • RESULT_DEVELOPER_ERROR (5) Puo indicare diverse cose: che l’applicazione non ha dichiarato BILLING nel manifest, oppure che l ‘applicazione non é correttamente firmata, o che la richiesta é malformata.
  • RESULT_ERROR (6) – Un errore inaspettato. Puo anche essere causato dal tentativo di acquistarsi un componente con lo stesso account di chi vende, che non é consentito.

 

>Quindi il risultato che ci aspettiamo nel caso di In-app billing supportato é RESULT_OK.  Creiamo per esempio un metodo checkBilling all’interno della nostra classe ItalialinuxBillingService che tornerá true se il servizio é supportato e false in caso contrario.

    public boolean checkBilling(){
    	try {
    		Bundle request = makeRequestBundle("CHECK_BILLING_SUPPORTED");
		Bundle response = mService.sendBillingRequest(request);
		int code = response.getInt("RESPONSE_CODE");
		if(code==0){
			return true;
		}
		return false;
	} catch (Exception e) {
		e.printStackTrace();
		return false;
	}
    }

Ovviamente questa richiesta potrá partire solo se ci saremo connessi giá con il market, e quindi la variabile mService deve essere stata valorizzata.  Con questo abbiamo concluso la nostra prima iterazione reale dell’in-app billing.

Nella prossima puntata entreremo nel vivo della transazione. Spiegheremo come effettuare le richieste.

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.