web-dev-qa-db-fra.com

Vérification côté serveur de l'achat de la version 3 de la facturation via l'application Google Play (partie 2)

J'ai donc pensé comprendre le fonctionnement de la facturation via l'application et de la vérification côté serveur grâce à une réponse à une question précédente mais maintenant que j'y pense, je suis toujours perdu ...

Voici ce que j'ai et ce que je veux faire:

J'ai une application où les utilisateurs peuvent acheter plusieurs "articles". Chaque élément est stocké sur un serveur et doit être mis à disposition pour téléchargement dans l'application lors de l'achat. Les articles sont des articles gérés qui ne peuvent être achetés qu'une seule fois (c'est-à-dire non consommables). Je n'ai aucun problème à définir des éléments dans la console développeur de Google Play et je peux effectuer un achat réussi.

Ce que je ne comprends pas, c'est comment faire en sorte que mon serveur non seulement valide l'achat (à l'aide du jeton d'achat et de la signature), mais sache également que c'est l'article X et non l'article Y qui est acheté? Existe-t-il une API Google où le serveur peut parler à Google et demander à quel identifiant d'article appartient un certain jeton d'achat? Y a-t-il une autre façon de procéder?

24
britzl

Je déteste répondre à ma propre question, mais bon, personne d'autre ne l'a fait! Mes collègues et moi avons réexaminé le problème ce matin. La solution à mon problème m'est finalement venue après avoir jeté un nouveau coup d'œil au fonctionnement de la vérification côté client dans l'exemple TrivialDrive. Mec, avais-je envie de mettre mon "chapeau stupide", quand j'ai compris ce qui n'allait pas.

Je pensais que c'était le jeton d'achat et la signature qui étaient utilisés pour vérifier l'achat, mais de cette façon, il n'y avait aucun moyen de vérifier si c'était l'article A ou l'article B qui avait été acheté.

Si vous souhaitez effectuer une vérification côté serveur (ou tout autre type de vérification d'ailleurs) avant de mettre le contenu à la disposition de l'acheteur, il s'agit en fait des données JSON d'origine (si vous utilisez les classes IabHelper, vous obtenez le JSON d'origine de la classe Purchase) que vous êtes censé utiliser avec la signature et la clé publique. Et comme ce sont les données JSON d'origine que vous transmettez à votre serveur, elles contiennent également toutes les informations sur l'achat (telles que l'identifiant SKU, etc.).

Il est également important de définir la charge utile du développeur sur quelque chose qui identifie de manière unique votre utilisateur (pas l'appareil!). Dans notre cas, chaque utilisateur a un compte sur le serveur et j'utilise l'ID utilisateur unique comme charge utile pour le développeur.

/ M. Stupid se déconnecte!

43
britzl

Depuis juin 2013, vous pouvez vérifier les achats directement avec Google Play côté serveur à l'aide de Purchase Status API et Google APIs Client Libraries .

12
user802421