Utilisation in_app ou latest_receipt_info pour obtenir plus tard de la réception de l'auto-renouvelable iOS 7 style transactions?
Je suis en train de vérifier que l'auto-renouvelables d'achat In-App n'a pas expiré côté serveur (pas sur un périphérique).
Je suis d'Apple pour Grand Unified Réception (iOS 7 opérations). La réponse retournée par Apple contient in_app
et latest_receipt_info
éléments avec un éventail de recettes. Le in_app
JSON élément contient MOINS recettes que latest_receipt_info
. Je m'attendais à deux éléments pour contenir le même nombre ou reçus.
Aussi, je m'attendais à ce que le in_app
élément contient TOUTES les recettes. Cependant, il semble que latest_receipt_info
contient en fait toutes les recettes. La documentation d'Apple semble suggérer d'utiliser in_app
pour trouver une dernière réception.
Je suis surpris de voir le latest_receipt_info
parce que la Documentation d'Apple état que cet élément est
"Ne retourne pour iOS 6 style reçus de transaction pour les abonnements renouvelables automatiquement." (pas l'iOS 7+).
Qui JSON élément devrais-je effectuer une itération de trouver la dernière réception de l'auto-renouvelable iOS 7 style transactions: in_app
ou latest_receipt_info
?
- avez-vous trouvé des réponses à votre problème?
- Non, je n'ai jamais trouvé une réponse ou une confirmation de ce qui JSON élément je dois parcourir pour trouver la dernière réception. J'ai fini à l'aide de la "latest_receipt_info" parce qu'il semble contenir la totalité des recettes.
- Chris, je pense que vous avez raison sur l'utilisation de
latest_receipt_info
. Merci beaucoup pour la réponse! Passé beaucoup de temps à mettre au point cette et je suis toujours à une perte 🙂 apple N'a toujours vous envoyer le latest_receipt_info? Voici ce que je reçois toujours de retour de leur service : gist.github.com/vasiliyb/23b5ac1fb36c6fd50006 - oui, j'ai constamment vu de Pomme de retour
latest_receipt_info
etlatest_receipt
. J'utiliselatest_receipt_info
pour vérifier si une auto-renouvellement est renouvelé (ou expiré). Et, je stockelatest_receipt
pour une utilisation ultérieure. Je vais envoyer la stockéeslatest_receipt
à Apple la prochaine fois que je check pour un renouvellement. - Chris, super info! Merci! Si vous n'avez pas simplement suivre les chaînes que vous obtenez à partir de téléphones d'apple, vous avez réellement store d'Apple
latest_receipt
? Je ne pense pas que je comprends le processus très bien 🙁 Donc si c'est un premier achat, et vous n'avez pas le latest_receipt en dire mongo, puis vers la chaîne de caractères que vous avez obtenu à partir du téléphone, sinon envoyer le stockés latest_receipt, et de vérifier avec la chaîne qui a été posté pour vous? - oui, la 1ère fois que l'achat j'ai envoyer le reçu (string) de l'appareil (il n'y en a pas un plus tard à réception de ma base de données). Si la validation est réussie, Apple sera de retour une réponse avec
latest_receipt
. Je vais stockerlatest_receipt
. Puis, quand un auto-renouvellement se produit (pour moi, les abonnements sont de 1 mois), je vais envoyer mes stockées réception d'Apple pour voir si une auto-renouvellement a eu lieu. Ma pensée est que je voulais toujours essayer de l'envoyer à Apple la plus à jour de la réception que je suis au courant et j'espère en faire d'Apple sera toujours me renvoyer le plus à jourlatest_receipt_info
. - Droit maintenant, le téléphone envoie NodeJS API de la réception de la chaîne à chaque fois que l'application est redémarrée/fermé/mettre en arrière-plan. Cette chaîne est la même à chaque fois (je viens de vérifier). Donc, la réponse que je reçois en retour d'apple après l'envoi de cette chaîne de caractères est toujours différent. En essayant de comprendre la réponse JSON à partir d'apple, je me suis presque cassé mon cerveau. Docs sont quasi inexistants 🙁 Ce que je ne comprends pas est pourquoi la
latest_receipt
chaîne de toujours différentes d'apple réponse JSON? Plus grande question est... comment puis-je valider si le reçu est valide. Expérience Horrible. - si vous n'avez pas toujours de l'avant apple la réception de la validation de tenter, seulement un mois après la première date d'achat de votre base de données?
- Comment souvent vous envoyer le reçu d'Apple est à vous. Pour moi, j'ai juste besoin de vérifier pour un renouvellement tous les mois. Les essais dans le bac à sable, Apple va auto renouveler fréquemment peut-être que c'est pourquoi le latest_receipt est différent (?). Apple sera de retour code d'état peut vous aider à dire si elle est valide ou pas.
- im toujours avoir horrible expérience. Le téléphone m'envoie un accusé de réception, je l'envoyer à apple. la réponse
latest_receipt
d'apple est différent de ce que le téléphone m'a envoyé. marque nouvel achat en sandbox... comment diable puis-je obtenir que cela fonctionne 🙁
Vous devez vous connecter pour publier un commentaire.
Voulais juste préciser que seul le
latest_receipt_info
champ est de retour de la dernière renouvelé réception. Ceci est basé sur ce que nous sommes en fait le retour d'Apple.La documentation pertinente est ici sur à la page 21.
Bien qu'il déclare que
latest_receipt
etlatest_receipt_info
champs sont "retournés Uniquement pour iOS 6 style reçus de transaction pour l'auto-renouvelablesles abonnements", nous avons constaté qu'ils sont retournés dans notre iOS 7 recettes. Le
in_app
à l'intérieur de l'receipt
objet est également retourné avec presque les mêmes données, mais ne contient pas la dernière réception de l'info, qui est celui qui vous intéressent dans le cas d'une auto-renouvellement.latest_receipt_info
est manquant parfois dans ma prod app.Pour vérifier qu'une auto-renouvelable abonnement n'a pas expiré vérifier la
latest_receipt_info
élément.C'est ce qui est actuellement (2017-08-09) a officiellement documenté sur le
in_app
etlatest_receipt_info
éléments:in_app
(source)
latest_receipt_info
(source)
Cette est la plus récente et la plus claire des discussions sur ce sujet. Espérons que cette aide.
Babken Vardanyan mentionné dans les réponses multiples threads qui latest_receipt_info est parfois manquante. Une chose intéressante que j'ai vu dans les recettes dans ce fil https://forums.developer.apple.com/thread/92200
a la différence de latest_receipt_info vs in_app. Lorsque l'on fait un diff, j'ai remarqué la première réception de la chaîne était manquant (contenant is_trial_period=true). Il n'a pas de générer une application à la réception de l'équivalent.
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 que "pour iOS 7 application de style reçus, la valeur de cette clé est un tableau contenant tous les achat in-app transactions".
En ce qui concerne les abonnements, vous ne devez pas utiliser in_app et utiliser uniquement latest_receipt_info.
https://www.revenuecat.com/2018/09/24/apple-subscription-notifications-are-almost-useless couvre le bord des cas comme cancellation_date où c'est un service à la clientèle fourni annulation comme vu dans cette apple developer forum: https://forums.developer.apple.com/thread/96670
Réception Des Champs(Apple Docs)
La documentation ci-dessus rend assez clair pour utiliser
in_app
.Veuillez noter que la ligne de "Touches pas documenté ci-dessous sont réservés pour une utilisation par Apple et doit être ignoré par votre application" dans la documentation.
Ainsi, même si la décodé réception a
latest_receipt_info
, nous devrions en tenir compte.Mais je suis d'accord, la documentation est très en manque et qui me rend nerveux.
Permettez-moi de savoir comment a été votre expérience de l'utilisation d'iOS 7 le style de la réception de vérification de la production.