Also habe ich ein automatisch verlängerbares Abonnement für meine App mit einem Zeitraum von 1 Monat eingerichtet, was ungefähr 5 Minuten in der Sandbox entspricht. In der Client-App, die ich abonniere, sende ich die Quittung an meinen Server, es wird verifiziert und ich lege einen Datensatz in meine Datenbank, dass dieser Benutzer ein Abonnement hat.Wie kann eine Verlängerung für ein automatisch verlängerbares Abonnement erkannt und überprüft werden?
Meine Frage ist, wie überprüfe ich, ob dieses Abonnement erneuert wurde? Ich habe die Dokumente gelesen und kann nicht herausfinden, was ich tun soll.
Hier ist, wo ich so weit bin:
- Der erste Eingang, die zu meinem Server gesendet wird mit einem Status überprüft
0
, groß. Ich bekomme auchlatest_receipt
, die ich in meiner Datenbank durch den ältesten Beleg ersetze. - Nach 6 Minuten, wenn ich versuche, die
latest_receipt
, um zu überprüfen, ich Status21006
(abgelaufene Quittung) und diese:
{ receipt:
{ original_purchase_date_pst: '2013-08-06 11:58:04 America/Los_Angeles',
unique_identifier: '------------',
original_transaction_id: '----------',
expires_date: '1376129825000',
transaction_id: '------------',
quantity: '1',
product_id: 'subscription',
item_id: '--------',
bid: 'com.--------',
unique_vendor_identifier: '---------',
web_order_line_item_id: '---------',
bvrs: '2.0',
expires_date_formatted: '2013-08-10 10:17:05 Etc/GMT',
purchase_date: '2013-08-10 10:12:05 Etc/GMT',
purchase_date_ms: '1376129525000',
expires_date_formatted_pst: '2013-08-10 03:17:05 America/Los_Angeles',
purchase_date_pst: '2013-08-10 03:12:05 America/Los_Angeles',
original_purchase_date: '2013-08-06 18:58:04 Etc/GMT',
original_purchase_date_ms: '1375815484000' },
latest_expired_receipt_info:
{ original_purchase_date_pst: '2013-08-06 11:58:04 America/Los_Angeles',
unique_identifier: '-------',
original_transaction_id: '-',
expires_date: '1376129825000',
transaction_id: '-',
quantity: '1',
product_id: 'subscription',
item_id: '-',
bid: 'com.-',
unique_vendor_identifier: '--',
web_order_line_item_id: '-',
bvrs: '2.0',
expires_date_formatted: '2013-08-10 10:17:05 Etc/GMT',
purchase_date: '2013-08-10 10:12:05 Etc/GMT',
purchase_date_ms: '1376129525000',
expires_date_formatted_pst: '2013-08-10 03:17:05 America/Los_Angeles',
purchase_date_pst: '2013-08-10 03:12:05 America/Los_Angeles',
original_purchase_date: '2013-08-06 18:58:04 Etc/GMT',
original_purchase_date_ms: '1375815484000' },
status: 21006 }
Das zweite Element in dem Array verwendet latest_receipt_info
sein, aber jetzt ist es latest_EXPIRED_receipt_info
. Hier ist, was die Dokumentation sagt:
Zusätzlich zum Feld receipt_data kann die Antwort auch zwei neue Felder enthalten. Wenn das Abonnement des Benutzers aktiv ist und wurde durch eine Transaktion erneuert, die nach dem Empfang, Ihre Server an den App Store gesendet nahm das
latest_receipt
Feld enthält eine Base64-codierte Quittung für die Verlängerung der Zulassung für dieses Abonnement . Die entschlüsselten Daten für diesen neuen Beleg sind ebenfalls im Feldlatest_expired_receipt_info
enthalten. Ihr Server kann diesen neuen Beleg verwenden, um eine Aufzeichnung der letzten Erneuerung beizubehalten.
Also, wenn der Unter erneuert wurde seit meinem Server zuletzt geprüft, die decodierte Quittung für die Verlängerung sollte in latest_expired_receipt_info
sein. In diesem Objekt ist die expires_date
die gleiche wie die ursprüngliche Quittung expires_date
.
Was zur Hölle? Ich möchte nur überprüfen, ob das Sub aktiv ist. Kann mir jemand in einfachen Worten erklären, wie ich das mache?
Vielen Dank!
Und die unmittelbare Frage - warum erneuert die Sandbox das Abonnement nicht automatisch? Oder wie erneuere ich es selbst? Momentan läuft die Quittung nach 5 Minuten ab und das ist alles. Ich muss meinen Code irgendwie testen. –
In Sandbox arbeiten Sie mit Testkonten. Sie können das Testkonto nicht verwenden, um sich bei iTunes anzumelden und die automatische Verlängerung Ihres Abonnements zu deaktivieren. Damit Sie die Situation testen können, wenn Ihr automatisch verlängerbares Abonnement abgelaufen und inaktiv ist, führt Apple nur 5 Erneuerungen in der Sandbox durch (dh Sie haben eine erste Transaktion und 5 Verlängerungen danach -> die Länge der gesamten Abonnementwarteschlange beträgt das 6-fache Ihres Abonnements Länge). Dies wird nach 8 Stunden aktualisiert. Oder Sie können ein anderes Testkonto verwenden. –
Ok, ich habe es herausgefunden. Hier ist eine einfachere Erklärung: http://stackoverflow.com/questions/8033673/ios-sandbox-environment-auto-renewal-subscription –