2015-10-22 7 views
5

Ich versuche, Upgrades/Downgrade-Abonnements in meiner Android App zu implementieren. Ich glaube, ich habe alles korrekt implementiert, aber es scheint nicht korrekt zu laufen während meiner Tests.Android IAP getBuyIntentToReplaceSkus storniert nicht das alte Abonnement

Meine App hat drei Optionen: Monats-, 3-Monats- und 6-Monats-Abonnementoptionen. Wenn ich eine Option abonniere, rufe ich die folgende Funktion auf: 'sku' ist der Sku für den gekauften Artikel und 'oldSkus' ist der Skus für die anderen Artikel.

buyIntentBundle = mService.getBuyIntentToReplaceSkus(5, 
      mContext.getPackageName(), oldSkus, sku, itemType, extraData); 

Als ich in die 3-Monats-Option subscribe es funktioniert großartig und die App korrekt empfangen einen 3-Monats-Abonnement Kauf aus dem Play Store. Wenn ich an die 6-Monats-Abonnement zu aktualisieren versuchen, die folgenden Fluss auftritt:

  1. Dialog ‚Abonnement ändern‘ ist mein ‚Current-Plan‘ aufgefordert, die Bereitstellung und den ‚Neuen Plan‘ -> Klicken Sie auf ‚Weiter‘
  2. Plandetails sind umrissen. Klicken Sie auf -> 'Abonnieren' -> 'Bestätigen'
  3. Die Transaktion ist erfolgreich und Kaufdaten werden an die App zurückgegeben.
  4. Erhalte E-Mail behauptet Abonnement mit Details wurde aktualisiert:
    • Zurück-Plan: 3 - Monate: Cancelled
    • Neuer Plan: 6 - Monate: sofort aktiv
  5. Go Store-Account zu spielen und Ausblick Abonnements
    • 3 Monat Plan - Abonnierte mit Abbrechen-Taste
    • 6 Monate Plan - Abonnierte mit Cance l Taste
  6. App starten und Beobachter GetInventory Ergebnisse
    • 3-Monats-Plan - Benutzer
    • abonniert
    • 6 Monate Plan - Benutzer abonniert ist

Soweit ich kann sagen Sie, dass das alte Abonnement vom Play Store nicht korrekt abgebrochen wurde. Meine Hoffnung ist, dass dies nur passiert, weil ich ein Tester-Konto benutze und der $/Tag, der beim Testen von Abonnements auftritt, verursacht einige Probleme mit der Pro-Bewertung.

UPDATE: Google hat auf mein Ticket geantwortet und mir mitgeteilt, dass sie das Problem eskaliert haben. Ich werde wieder aktualisieren, wenn ich eine weitere Antwort bekomme.

+0

Ich teste das jetzt auch. Ich habe ähnliches Verhalten. – gswierczynski

+0

Anruf beim Google Play-Entwickler Api gibt das Abonnement zurück, das abgebrochen werden soll. Returns autoRenewing = true. Hinweis: https://developer.android.com/google/play/billing/billing_subscriptions.html gibt an, dass das Abonnement storniert wurde (und gemäß https://developers.google.com/android-publisher/api-ref/Käufe/Abonnements/Kündigungen storniert (nicht widerrufen) Abonnements sind bis zum Ende des Abonnements gültig, obwohl es im Upgrade-Szenario nicht sinnvoll ist). Ich würde gerne etwas Google dazu lesen. – gswierczynski

+0

Haben Sie es vielleicht in der Produktion versucht? – gswierczynski

Antwort

0

Ich habe es mit echtem Geld getestet. Das alte Abonnement wurde gekündigt (ich denke, es wurde widerrufen, wie es Google Play versteht). Nach dem Upgrade ist das alte Abonnement nicht mehr in den App-Details in Google Play App sichtbar - nur das neue ist.

Obwohl ich nicht sicher bin, wie man es mit Google Play Developer API Anruf erkennen - wie zu erkennen, dass dieses alte Abonnement nicht mehr gültig ist. Die Get-Methode für Einkäufe.Die Subskriptionsressource gibt autoRenew als false zurück (was gut ist), aber es reicht nicht zu erkennen, dass Features für dieses Abonnement nicht länger für Benutzer verfügbar sein sollten, da das gleiche geschieht, wenn Benutzer Subskriptionen kündigen und wenn Benutzer Subskriptionen kündigen verfügbar bis zur Ablauffrist.

Leider hat der Ablauf, der vom get-Aufruf zurückgegeben wird, immer noch den gleichen Wert - also kann ich das nicht verwenden.

UPDATE: Die GetPurchases-Methode auf dem Android-Client gibt das alte Abonnement nach dem Upgrade nicht zurück. Ich frage mich, ob es eine Möglichkeit gibt, sie über den Google Play Developer API-Aufruf zu erkennen.

Verwandte Themen