Verwenden in_app oder latest_receipt_info für immer die Letzte Quittung für auto-erneuerbare-iOS-7-Stil-Transaktionen?
Ich versuche zu überprüfen, ob eine auto-erneuerbare In-App-Kauf noch nicht abgelaufen ist, server-Seite (nicht auf ein Gerät).
Bin ich mit Apple ' s Grand Unified Eingang (iOS 7 Stil-Transaktionen). Die zurückgegebene Antwort von Apple enthält in_app
und latest_receipt_info
Elemente mit einer Reihe von Quittungen. Die in_app
JSON-element enthält WENIGER Einnahmen als latest_receipt_info
. Ich hatte erwartet, beide Elemente zu enthalten, die die gleiche Anzahl oder Quittungen.
Auch, ich hatte erwartet, dass die in_app
element enthalten würde, ALLE Quittungen. Es scheint jedoch, dass latest_receipt_info
enthält eigentlich alle Quittungen. Apple-Dokumentation zu suggerieren scheint, zu verwenden in_app
für die Suche nach den neuesten Zugang.
Ich bin überrascht zu sehen, die latest_receipt_info
da Apple in der Dokumentation Stand, dass dieses element
"Nur zurückgegeben, für iOS 6 Stil transaktionsbestätigungen automatisch erneuerbare Subskriptionen". (nicht iOS 7+).
Die JSON-element sollte ich Durchlaufen, den neuesten Zugang für auto-erneuerbare-iOS-7-Stil-Transaktionen: in_app
oder latest_receipt_info
?
- haben Sie Antworten für Ihr problem?
- Nein, ich fand nie eine Antwort oder Bestätigung zu dem JSON-element sollte ich Durchlaufen für die Suche nach den neuesten Zugang. Ich habe am Ende mit der "latest_receipt_info" weil es scheint, enthalten Sie alle Belege.
- Chris, ich glaube, du hast Recht, über die Verwendung von
latest_receipt_info
. Vielen Dank für die Beantwortung! Verbrachte viel Zeit mit Debuggen und bin immer noch ratlos 🙂 Hat apple immer senden Sie die latest_receipt_info? Hier ist, was ich immer wieder aus Ihrem Dienst : gist.github.com/vasiliyb/23b5ac1fb36c6fd50006 - ja, ich habe durchweg gesehen Apple zurück
latest_receipt_info
undlatest_receipt
. Ich benutzelatest_receipt_info
zu prüfen, ob eine automatische Verlängerung erneuert hat (oder abgelaufen ist). Und, ich speichernlatest_receipt
für die spätere Verwendung. Ich werde senden Sie die gespeichertelatest_receipt
Apple das nächste mal überprüfe ich für eine Erneuerung. - Chris, hervorragende info! Danke! Damit Sie nicht einfach nach vorne die Zeichenfolgen, die Sie von der Telefone an apple, die Sie tatsächlich store von Apple
latest_receipt
? Ich glaube nicht, dass ich verstehen den Prozess sehr gut 🙁 Also, wenn Ihr eine erste Zeit zu kaufen, und Sie haben nicht die latest_receipt in sagen, mongo, und dann nach vorne die Zeichenfolge ein, die Sie in das Telefon, ansonsten senden Sie die gespeicherte latest_receipt, und überprüfen Sie die Zeichenfolge, die geschrieben wurde, um Sie? - ja, das 1. mal, Kauf ich senden Sie die Quittung (string) aus dem Gerät (es gibt nicht den neuesten Zugang in meiner Datenbank noch nicht). Wenn die Validierung erfolgreich ist, wird Apple eine Antwort zurück mit
latest_receipt
. Ich werde storelatest_receipt
. Dann, wenn eine automatische Verlängerung tritt (für mich, Abonnements 1 Monat), ich schick dir meine gespeicherten Erhalt an Apple, um zu sehen, wenn eine automatische Verlängerung eingetreten ist. Mein denken ist, dass wollte ich immer versuchen, zu senden, um Apple die meisten up-to-date Erhalt, dass ich bewusst bin und hoffentlich dadurch Apple immer schicken Sie mich zurück, die meisten bis zu Datumlatest_receipt_info
. - Jetzt das Telefon sendet NodeJS-API den Empfang Zeichenfolge jedes mal, wenn die Anwendung neu gestartet/geschlossen/put im hintergrund. Dieser string ist das gleiche jedes mal (ich habe gerade überprüft). Also die Antwort, die ich zurück bekommen von apple nach dem Absenden dieses Strings ist immer unterschiedlich. Wenn Sie versuchen, zu verstehen, die JSON-Antwort von apple, habe ich fast brach mein Gehirn. Docs sind fast nicht existent 🙁 Was ich nicht verstehe ist, warum die
latest_receipt
string immer anders in apple JSON-response? Größere Frage ist... wie kann ich überprüfen, ob der Empfang gültig ist. Schreckliche Erfahrung. - damit Sie nicht immer vorwärts apple Erhalt Validierung Versuch, nur einen Monat nach dem ersten Kauf Datum in der Datenbank?
- Wie oft Sie senden Sie die Quittung von Apple ist bis zu Ihnen. Für mich, ich brauche nur zu prüfen, für Erneuerungen, jeden Monat. Testen in der Sandbox, wird Apple autorenew Häufig, also vielleicht das ist, warum die latest_receipt anders ist (?). Apple gibt eine status-code kann Ihnen helfen, sagen, ob es gültig ist oder nicht.
- ich bin immer noch schreckliche Erfahrung. Das Telefon sendet mir eine Quittung, die ich senden Sie es an apple. die Antwort
latest_receipt
von apple ist anders als das, was das Telefon, der mich gesandt hat. Marke neue Kauf in der sandbox... wie zum Teufel bekomme ich diese zu arbeiten 🙁
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wollte damit nur deutlich machen, dass nur die
latest_receipt_info
Feld ist wieder die neueste erneuert Empfang. Dies basiert auf dem, was wir eigentlich immer wieder von Apple.Die entsprechende Dokumentation ist hier auf Seite 21.
Obwohl es besagt, dass
latest_receipt
undlatest_receipt_info
Felder sind "Nur zurückgegeben, für iOS 6 Stil transaktionsbestätigungen für auto-erneuerbareAbonnements", den wir gefunden haben, dass Sie wieder in unserem iOS 7 Einnahmen. Die
in_app
Feld innerhalb derreceipt
Objekt ist auch wieder mit fast identischen Daten, aber nicht enthalten die neuesten Eingang info, das ist die, die Sie interessieren, in die Falle einer automatischen Verlängerung.latest_receipt_info
fehlt manchmal in meinen prod-app.Um zu überprüfen, dass eine auto-erneuerbare-Abonnement noch nicht abgelaufen ist, überprüfen Sie die
latest_receipt_info
element.Dies ist, was die derzeit (2017-08-09) offiziell dokumentiert auf der
in_app
undlatest_receipt_info
Elemente:in_app
(Quelle)
latest_receipt_info
(Quelle)
Diese ist die jüngste und die meisten klare Diskussion über diese. Hoffe, das hilft.
Babken Vardanyan erwähnte in mehreren Antwort-threads, die latest_receipt_info manchmal fehlt. Eine interessante Sache ich habe gesehen in Einnahmen in diesem thread https://forums.developer.apple.com/thread/92200
war der Unterschied in latest_receipt_info vs in_app. Bei einem diff habe ich bemerkt das der erste Empfang in der Kette fehlt (mit is_trial_period=true). Es hat nicht generieren eines in-app-Zugang entspricht.
Miteinander verknüpft, die in der Dokumentation: https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573-CH104-SW4 sagt zu latest_receipt_info als "für iOS 7 style app-Einnahmen, der Wert dieses Schlüssel ist ein array mit allen in-app-Kauf-Transaktionen."
In Bezug auf Abonnements, sollten Sie nicht verwenden in_app und verwenden Sie nur latest_receipt_info.
https://www.revenuecat.com/2018/09/24/apple-subscription-notifications-are-almost-useless deckt die edge-Fällen wie cancellation_date, wo es einen Kundenservice Kündigung, wie gesehen in das apple-developer-Forums-thread: https://forums.developer.apple.com/thread/96670
Eingangs-Felder(Apple Docs)
In der Dokumentation oben macht es ziemlich klar zu verwenden
in_app
.Bitte beachten Sie die Zeile "Schlüssel nicht, die unten dokumentiert sind reserviert für die Verwendung durch Apple und müssen ignoriert werden durch Ihre app" in der Dokumentation.
Also auch wenn die entschlüsselten Empfang hat
latest_receipt_info
sollten wir ignorieren.Aber ich Stimme zu, die Dokumentation ist sehr mangelhaft und das macht mich nervös.
Lassen Sie mich wissen, wie war Ihre Erfahrung mit iOS-7-Stil Eingang Prüfung in der Produktion.