Les codes promotionnels d’achat intégrés à l’application annulent-ils la vérification du serveur à distance?

La publication de codes promotionnels pour des achats intégrés semble empêcher une application d’effectuer (encore et toujours) une vérification d’achat à distance du serveur!

Lorsqu’un code promo est utilisé pour un achat in-app (diffusion PURCHASES_UPDATED ), il contournera complètement le stream d’achat afin que l’application n’ait aucune chance de fournir un “developerPayload” , utilisé pour la vérification à distance.

Plus tard, lorsque l’application appelle getPurchases () pour obtenir / vérifier les produits propriétaires, les données d’achat pour les achats promotionnels ne contiendront pas de "developerPayload" bien sûr, mais pas de "orderId" également utile pour la vérification à distance avec l’ API développeur Google Play. .

Comment une application est-elle censée vérifier les achats intégrés dans les codes promotionnels?

Autoriser les utilisateurs à échanger des codes promotionnels via l’application / le site Google Play Store, contournant ainsi le stream d’achat, semble constituer un oubli majeur qui ne devrait pas être possible.

Rapports de problème:

  • https://code.google.com/p/android/issues/detail?id=200722 (fermé WrongForum)
  • https://github.com/googlesamples/android-play-billing/issues/7

Articles similaires:

  • Les achats intégrés via les codes promotionnels renvoient une chaîne de charge utile de développeur vide

C’est en effet un problème de sécurité connu du côté de Google, donc je vais suggérer une solution de contournement.

Avec le code promotionnel, fournissez aux utilisateurs un identifiant de serveur généré par votre serveur, lors de l’achat d’un achat promotionnel, validez l’identifiant du serveur et acceptez l’achat une seule fois.

Lors de l’utilisation du marché, envoyez l’ID avec le référent. Lorsque vous utilisez l’application depuis votre propre logique pour fournir l’identifiant du serveur.

En bout de ligne, il n’y a pas d’autre solution, mais certains identifient les utilisateurs avec une sorte d’ID.