2013-04-18 14 views
24

Quindi ho pensato di capire come funziona la fatturazione in-app e la verifica lato server grazie a una risposta a uno previous question of mine ma ora che ci penso sto ancora perso ...Verifica lato server dell'acquisto versione 3 di fatturazione in-app di Google Play (parte 2)

Questo è quello che ho e quello che voglio fare:

ho un app in cui gli utenti possono acquistare diversi "oggetti". Ogni articolo è memorizzato su un server e l'articolo deve essere reso disponibile per il download all'interno dell'app al momento dell'acquisto. Gli articoli sono articoli gestiti che possono essere acquistati una sola volta (cioè non consumabili). Non ho alcun problema nel definire gli elementi nella console per gli sviluppatori di Google Play e posso effettuare un acquisto di successo.

Quello che non capisco è come posso convincere il mio server non solo a convalidare l'acquisto (usando il buyToken e la firma) ma anche sapere che è l'articolo X e non l'articolo Y che viene acquistato? Esistono alcune API di Google in cui il server può parlare con Google e chiedere a quale ID articolo appartiene un certo acquistoToken? C'è un altro modo per farlo?

risposta

42

Odio rispondere alla mia domanda, ma hey, nessun altro ha fatto! Questa mattina io e i miei colleghi abbiamo dato un'altra occhiata al problema. La soluzione al mio problema finalmente mi è venuta in mente dopo aver dato un'altra occhiata a come funziona la verifica lato client nell'esempio TrivialDrive. Amico, ho avuto voglia di indossare il mio "stupido cappello", quando ho capito cosa c'era che non andava.

Ho pensato che fosse l'purchaseToken e la firma che è stata utilizzata per verificare l'acquisto, ma in quel modo non c'era modo di verificare se fosse l'articolo A o l'oggetto B che era stato acquistato.

Se si desidera eseguire la verifica lato server (o qualsiasi altro tipo di verifica) prima di rendere il contenuto disponibile all'acquirente in realtà sono i dati JSON originali (se si utilizzano le classi IabHelper, si ottiene il JSON originale da la classe Purchase) che dovresti usare insieme alla firma e alla chiave pubblica. E poiché si tratta dei dati JSON originali che stai trasmettendo al tuo server, contiene anche tutte le informazioni sull'acquisto (come ID SKU, ecc.).

È anche importante impostare il payload dello sviluppatore su qualcosa che identifichi in modo univoco il tuo utente (non il dispositivo!). Nel nostro caso ogni utente ha un account sul server e io utilizzo l'ID utente univoco come payload dello sviluppatore.

/Mr.Stupid firma!

+0

Grazie per le informazioni! Ho trascorso 2 giorni per questo problema. –

+9

StackOverflow risponde alle tue domande, quindi non preoccuparti. – Oliver

+0

Grazie per la nota su IabHelper per usare getOriginalJson – ilovett

Problemi correlati