2016-08-08 31 views
24

Bis zum 20. Juni 2016 konnte ich Testkäufe in meiner App abbrechen. Durch den Einsatz mehrerer In-App-Käufe (ohne Verbrauchsmaterial) vom selben Testkonto konnte der Code ohne großen Aufwand einfach entwickelt und getestet werden.Wie storniert man einen In-App-Testkauf auf Android?

Nach dem 20. Juni 2016 wurden die Einkäufe nicht in meinem Händlerkonto angezeigt und konnte ich nicht mehr als 1 Kauf von meinem Testkonto durchführen. Alles, was ich bekam, war die Nachricht "Sie besitzen dieses Item bereits".

ich eine Anfrage an die Google-Entwickler-Support-Gruppe angemeldet und die Antwort war:

Ab 20. Juni 2016, änderten wir Testkäufe für eine einmalige In-App-Käufe (IAP). Zuvor erzeugten Testkäufe für einmalige IAPs Auftrags-IDs. Ab dem 20. Juni 2016 generieren einmalige IAPs (wenn überhaupt) keine offiziellen Bestell-IDs und erscheinen nicht im Merchant Center. Dieses Verhalten gilt bereits für Abonnement-IAPs. https://developer.android.com/google/play/billing/billing_testing.html#testing-purchases

allright .. so gehe ich zu dem genannten Link und es gibt einen Abschnitt dort: Sie können in-App-Abrechnung im Android Developers Hilfe mehr über das Testen erfahren Käufe Test abgeschlossen Annullierung , die besagt, :

Google Play akkumuliert abgeschlossene Testkäufe für jeden Benutzer, gibt sie jedoch nicht an die finanzielle Verarbeitung weiter. In einigen Fällen möchten Sie möglicherweise einen Testkauf manuell abbrechen, um den Test fortzusetzen. Öffnen Sie dazu die App-Seite im Play Store. Wenn der Testkauf, den Sie stornieren möchten, ein Abonnement ist, können Sie auch die Methode cancel() der API Purchases.subscriptions verwenden. Wichtig: Die Methoden refund() und revoke() der API Purchases.subscriptions unterstützen keine Testkäufe.

Also ich gehe auf die App-Seite im Play Store ... und was genau tun? Die Webseite gibt nicht an, was ich dort machen soll. Weiß jemand?

es heißt: Sie können auch die Methode cancel() der API Purchases.subscriptions verwenden.

die angibt, dass die Methode cancel() nicht die einzige Methode ist.

Wie löst man das, ohne zusätzlichen Code in meiner App hinzuzufügen?

+1

Hallo, hast du das gelöst ?. Ich stehe nach dem Testkauf auch vor demselben Szenario. –

+1

Sie können alle Testkäufe über den folgenden Link öffnen: https: //play.google.com/store/account?feature=gp_receipt, auf dieser Seite habe ich nur die Möglichkeit gefunden, die Schaltfläche "Problem melden" zu deaktivieren. –

+0

@Ramesh_D der Bericht ein Problem gibt mir: "Ein unerwarteter Fehler ist aufgetreten. Bitte versuchen Sie es später noch einmal." Irgendwelche anderen Ideen? – galgo

Antwort

3

Ich fand eine Lösung, die nicht sehr praktisch ist, aber funktioniert. Es scheint, als könnten Sie nicht verbrauchbare Produkte konsumieren und auf diese Weise wieder kaufen. Ich arbeite mit phonegap so dass ich nur Beispiel-Code für die cordova-Plugin-Kauf-Plugin habe:

store.when("your.product.id").updated(product => { 
    if(product.owned) { 
     var transaction = product.transaction; 
     product.transaction = null; 
     store.inappbilling.consumePurchase(
      function() { // success 
       alert("consume success"); 
      }, 
      function(err, code) { // error 
       alert("consume error " + err) 
      }, 
      product.id, 
      transaction.id 
     ); 
    } 
}); 

Der aktualisierte Rückruf, wenn Sie store.refresh() rufen aufgerufen wird oder das Produkt kaufen. Abhängig von Ihrem Anwendungsfall sollten Sie eine zusätzliche Methode implementieren, um zu überprüfen, wann das Produkt konsumiert wird.

Ich habe keine Erfahrung mit den nativen Android In-App-Zahlungen, aber natürlich können Sie die Produkte dort auch konsumieren.

Bearbeiten: Sorry, ich habe gerade gelesen, dass Sie keinen zusätzlichen Code in Ihr Projekt aufnehmen wollten.Ich denke nicht, dass das im Moment möglich ist, aber ich möchte meine Antwort hier behalten, weil es anderen Leuten helfen könnte, In-App-Zahlungen zu testen.

+0

Was ist 'store.inappbilling.consumePurchase' in Java? –

+0

Zweitens die Cordova-Lösung. Ich ändere einfach den Typ in CONSUMABLE, führe die App aus, lasse sie konsumieren, schließe sie, ändere sie zurück und führe sie erneut aus. – trueicecold

0

Keine Lösung dafür gefunden. Meine Problemumgehung ist, einfach den aktuellen Testbenutzer aus der Liste der Testbenutzer zu entfernen, einen echten Kauf durchzuführen und ihn dann über die Handelskonsole abzubrechen.

+0

Wo bist du noch in der Beta/Alpha? – powder366

+0

Nein, Produktion. – Eli

+0

Nur ein FYI, Sie können einen echten Kauf mit einer Alpha oder Beta-Version machen. Ich bin mir nicht sicher, welche Richtlinien von Google in Bezug auf echte Käufe gelten, und annulliere sie dann zum Testen, sodass ich das nicht empfehlen kann. –

9

Alle verwalteten In-App-Produkte sind Verbrauchsmaterialien.

wie in der docs angegeben.

Das bedeutet, dass Sie einen im Besitz befindlichen Artikel konsumieren können, anstatt den Kauf zu stornieren und erneut zu kaufen. Ich schlage vor, die Abfrage der Bestandsaufnahme in der App Einführungszeit:

mIabHelper.queryInventoryAsync(this);

Anschließend können Sie verbrauchen den Besitz Element in der Rückruf:

@Override 
public void onQueryInventoryFinished(IabResult result, Inventory inventory) { 
    Purchase purchase = inventory.getPurchase(MY_SKU); 
    boolean isBought = (purchase != null && verifyDeveloperPayload(purchase)); 
    if (isBought) { 
     mIabHelper.consumeAsync(purchase, new OnConsumeFinishedListener() { 
      @Override 
      public void onConsumeFinished(Purchase purchase, IabResult result) { 
       //Clear the purchase info from persistent storage 
      } 
     }); 
    } 
} 

Das ist in Ordnung für den IAB-Flow zu testen, aber stellen Sie sicher, um diesen Code aus der Release-Version zu entfernen.

+0

das hat geholfen! danke –

+0

Was meinst du mit ** // Löschen Sie die Kaufinformationen aus dem dauerhaften Speicher **? –

+1

Es hängt von Ihrer Implementierung ab. In meinem Fall hatte ich die Kaufdetails in den gemeinsamen Einstellungen gespeichert, so dass ich von anderen Aktivitäten überprüfen kann. –

4

Ich ging auf die Hauptseite der Google Play Console und klickte auf Order Management. Darunter konnte ich alle Testkäufe auswählen und zurückerstatten. Ich bin der Hauptentwickler der App, also habe ich Zugriff. Wenn Sie Tester sind, müssen Sie sich wahrscheinlich an das Support-Team wenden und die Rückerstattung Ihrer Bestellung anfordern.

+1

Brilliante, brillante Antwort! Funktioniert perfekt. Sobald die Transaktion als "Refunded" gekennzeichnet wurde, erzwang ich den Play Store und löschte dessen Cache- und Anwendungsdaten. Dann wurde ich nicht abonniert und konnte das Abonnement erneut erwerben. –