web-dev-qa-db-fra.com

Utilisez in_app ou latest_receipt_info pour obtenir le dernier reçu pour les transactions de style iOS 7 auto-renouvelables?

J'essaie de vérifier qu'un achat intégré auto-renouvelable n'a pas expiré côté serveur (pas sur un appareil).

J'utilise le Grand Unified Receipt d'Apple (transactions de style iOS 7). La réponse renvoyée par Apple contient des éléments in_app Et latest_receipt_info Avec un tableau de reçus. L'élément JSON in_app Contient MOINS reçus que latest_receipt_info. Je m'attendais à ce que les deux éléments contiennent le même nombre ou les mêmes reçus.

De plus, je m'attendais à ce que l'élément in_app Contienne TOUS les reçus. Cependant, il semble que latest_receipt_info Contient en fait tous les reçus. Apple semble suggérer d'utiliser in_app Pour trouver un dernier reçu.

Je suis surpris de voir le latest_receipt_info Car la documentation d'Apple indique que cet élément est "Renvoyé uniquement pour les reçus de transaction de style iOS 6 pour les abonnements auto-renouvelables." (pas iOS 7+).

Quel élément JSON dois-je répéter pour trouver le dernier reçu pour les transactions de style iOS 7 auto-renouvelables: in_app Ou latest_receipt_info?

49
Chris

Pour vérifier qu'un abonnement auto-renouvelable n'a pas expiré, cochez la case latest_receipt_info élément.

C'est ce qui est actuellement (2017-08-09) officiellement documenté sur le in_app et latest_receipt_info éléments:

in_app

Dans le fichier JSON, la valeur de cette clé est un tableau contenant tous les reçus d'achat in-app basés sur les transactions d'achat in-app présentes dans les données de réception en base 64 d'entrée. Pour les reçus contenant des abonnements renouvelables automatiquement, vérifiez la valeur de la clé latest_receipt_info pour obtenir l'état du renouvellement le plus récent.

( source )

latest_receipt_info

Renvoyé uniquement pour les reçus contenant des abonnements renouvelables automatiquement. Pour les reçus de transaction de style iOS 6, il s'agit de la représentation JSON du reçu pour le renouvellement le plus récent. Pour les reçus d'application de style iOS 7, la valeur de cette clé est un tableau contenant toutes les transactions d'achat dans l'application. Cela exclut les transactions pour un produit consommable qui ont été marquées comme terminées par votre application.

( source )

10
jox

This est la discussion la plus récente et la plus claire à ce sujet. J'espère que cela t'aides.

3

Babken Vardanyan a mentionné dans plusieurs fils de réponse que latest_receipt_info est parfois manquant. Une chose intéressante que j'ai vue dans les reçus de ce fil https://forums.developer.Apple.com/thread/922 était la différence entre latest_receipt_info et in_app. En faisant un diff, j'ai remarqué que le premier reçu de la chaîne était manquant (contenant is_trial_period = true). Il n'a pas généré d'équivalent de réception dans l'application.

Comme lié dans la documentation: https://developer.Apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//Apple_ref/doc/uid/TP40010573-CH104-SW4 dit d'utiliser latest_receipt_info comme "pour les reçus d'applications de style iOS 7, la valeur de cette clé est un tableau contenant toutes les transactions d'achat dans l'application".

En ce qui concerne les abonnements, vous ne devez pas utiliser in_app et uniquement utiliser latest_receipt_info.

https://www.revenuecat.com/2018/09/24/Apple-subscription-notifications-are-almost-useless couvre les cas Edge comme annulation_date où il s'agit d'un service client fourni une annulation comme vu dans ce Apple: https://forums.developer.Apple.com/thread/9667

1
Kevin King

Champs de réception (Apple Docs)

La documentation ci-dessus rend assez clair l'utilisation de in_app. Veuillez noter que la ligne "Les clés non documentées ci-dessous sont réservées à l'utilisation par Apple et doivent être ignorées par votre application" dans la documentation. Donc, même si le reçu décodé a latest_receipt_info, nous devons ignorer cela.

Mais je suis d'accord, la documentation fait très défaut et cela me rend nerveux. Faites-moi savoir quelle a été votre expérience en utilisant la vérification des reçus de style iOS 7 en production.

0
Taher Saeed