{"id":137857,"date":"2022-12-15T00:00:00","date_gmt":"2022-12-15T00:00:00","guid":{"rendered":"https:\/\/adapty.io\/fr-android-in-app-purchases-part-5-server-side-purchase-validation\/"},"modified":"2022-12-15T00:00:00","modified_gmt":"2022-12-15T00:00:00","slug":"android-in-app-purchases-part-5-server-side-purchase-validation","status":"publish","type":"post","link":"https:\/\/adapty.io\/fr\/blog\/android-in-app-purchases-part-5-server-side-purchase-validation\/","title":{"rendered":"Achats int\u00e9gr\u00e9s sous Android, 5e partie : validation des achats c\u00f4t\u00e9 serveur"},"content":{"rendered":"\n
La validation c\u00f4t\u00e9 serveur peut vous aider \u00e0 valider l’authenticit\u00e9 des achats. L’appareil envoie une demande aux serveurs de Google pour savoir si l’achat a effectivement eu lieu et s’il est valable.<\/p>\n\n\n\n
Dans ce guide, nous allons voir comment configurer la validation c\u00f4t\u00e9 serveur (server-side) pour les applications (app) fonctionnant sous Android. <\/p>\n\n\n\n
Il convient de noter que la validation c\u00f4t\u00e9 serveur n’est pas obligatoire : les achats int\u00e9gr\u00e9s aux applications fonctionneront toujours sans elle. Elle pr\u00e9sente cependant des avantages non n\u00e9gligeables :<\/p>\n\n\n\n
D’apr\u00e8s notre exp\u00e9rience, le premier avantage suffit \u00e0 lui seul \u00e0 mettre en place le traitement des achats c\u00f4t\u00e9 serveur.<\/p>\n\n\n\n\n\n
Nous pouvons r\u00e9sumer la validation des paiements (purchase validation) Android avec ce sch\u00e9ma :<\/p>\n\n\n\n Pour travailler avec Google Play Developer API, vous devez d’abord g\u00e9n\u00e9rer une cl\u00e9 pour signer les demandes. Tout d’abord, vous devez relier votre compte Google Play Console (o\u00f9 vous g\u00e9rez votre application) \u00e0 votre compte Google Cloud (o\u00f9 vous g\u00e9n\u00e9rerez une cl\u00e9 pour la signature des demandes). Une fois que tout est configur\u00e9, vous devrez accorder \u00e0 l’utilisateur des droits de gestion des achats. Il faudrait un article d\u00e9di\u00e9 pour d\u00e9crire ce processus. Heureusement, nous l’avons d\u00e9j\u00e0 couvert dans un guide \u00e9tape par \u00e9tape que vous trouverez dans Adapty documentation<\/a>. <\/p>\n\n\n\n Notez que vous devrez g\u00e9n\u00e9ralement attendre 24 heures ou plus apr\u00e8s avoir g\u00e9n\u00e9r\u00e9 une cl\u00e9 pour qu’elle commence \u00e0 fonctionner. Pour \u00e9viter cela, il suffit de mettre \u00e0 jour la description de tout produit ou abonnement int\u00e9gr\u00e9 \u00e0 l’application, ce qui activera instantan\u00e9ment la cl\u00e9. <\/p>\n\n\n\n Nous utilisons la biblioth\u00e8que officielle google-api-python-client<\/a> pour travailler avec Google Play Developer API. Cette biblioth\u00e8que est disponible pour la majorit\u00e9 des langages populaires, et je recommande de l’utiliser car elle prend en charge toutes les m\u00e9thodes dont vous pourriez avoir besoin.<\/p>\n\n\n\n Contrairement \u00e0 la validation c\u00f4t\u00e9 serveur d’iOS<\/a>, sous Android, la validation des abonnements et des autres produits est mise en \u0153uvre \u00e0 l’aide de diverses m\u00e9thodes. Par cons\u00e9quent, lorsque vous validez une transaction, vous devez savoir si vous avez affaire \u00e0 un produit ou \u00e0 un abonnement. En pratique, cela signifie que vous devrez transf\u00e9rer ces donn\u00e9es \u00e0 partir de l’application mobile et conserver l’indicateur dans la base de donn\u00e9es au cas o\u00f9 une nouvelle validation du jeton serait n\u00e9cessaire.<\/p>\n\n\n\n La deuxi\u00e8me diff\u00e9rence importante est que si chaque transaction poss\u00e8de son propre jeton dans Android, toutes les transactions iOS utilisent un secret partag\u00e9 propre \u00e0 l’application pour stocker l’historique complet de la transaction. Cela signifie que si vous voulez \u00eatre en mesure de renouveler les achats de l’utilisateur \u00e0 tout moment, vous devrez stocker tous les jetons d’achat, au lieu d’en choisir un seul arbitrairement.<\/p>\n\n\n\n Pour valider l’abonnement, vous devrez invoquer la m\u00e9thode purchases.subscriptions.get<\/em><\/a>. En gros, c’est un appel \u00e0 une requ\u00eate GET :<\/p>\n\n\n\n<\/figure>\n\n\n\n
Authentification pour les demandes de Google Play Developer API<\/h3>\n\n\n\n
Validation des transaction d’abonnement :<\/h3>\n\n\n\n