React-native-iap: Wie kann ich einen ausstehenden Kauf manuell stornieren?

Erstellt am 29. Juli 2019  ·  8Kommentare  ·  Quelle: dooboolab/react-native-iap

Version von react-native-iap

3.3.7

Version von React-Native

0,59,8

Plattformen, auf denen Sie den Fehler hatten (IOS oder Android oder beides?)

Android

Erwartetes Verhalten

Wenn ich einen Kauf anfordere, validiere ich die Quittung auf meinem Server. Wenn die Validierung fehlgeschlagen ist, möchte ich den Kauf manuell abbrechen können, anstatt die Funktion purchaseUpdatedListener, die jedes Mal ausgelöst wird, wenn ich nicht bestätige Kauf oder Konsumkauf aufrufe.

Tatsächliches Verhalten

Wenn ich den Kauf nicht abgeschlossen habe, kann ich den ausstehenden Kauf nicht stornieren. Auf Android muss ich warten, dass es automatisch abgebrochen wird.

Getestete Umgebung (Emulator? Reales Gerät?)

Echtes Gerät

Schritte zum Reproduzieren des Verhaltens

Machen Sie einen Kauf und rufen Sie nicht Bestätigungskauf oder Verbrauchskauf an.

1️⃣ good first issue ❓ question 🙏 help wanted 🤖 android

Hilfreichster Kommentar

@hyochan , Gibt es eine finishTransactionIOS aufrufen und diesen Kauf dann aus dem Kaufverlauf entfernen. Ich weiß nicht, ob es eine andere Möglichkeit gibt, zu überprüfen, ob ein Abonnement noch aktiv ist, aber jetzt überprüfe ich das Ablaufdatum für die letzte Transaktion im Belegverlauf. Wenn ein Kauf noch nicht abgeschlossen wurde, möchte ich nicht, dass er in der Kaufhistorie erfasst wird. Leider passiert im Moment genau das. Und im Gegensatz zu Android wird der unvollständige Kauf nach einiger Zeit nicht storniert und wird nie aufhören, von purchaseUpdateListener ausgelöst zu werden.

Also habe ich das gleiche Problem auf iOS und Android, ich muss einen Kauf stornieren, der noch nicht abgeschlossen wurde. Und speziell auf ios, wenn dieser Kauf nicht in der Historie erfasst wird, es sei denn, es gibt eine effizientere Möglichkeit, die Gültigkeit eines Abonnements zu überprüfen.

Alle 8 Kommentare

Selbst wenn das Ergebnis fehlschlägt, sollten Sie für die abgeschlossene Transaktion immer noch acknowledgePurchase und consumePurchase aufrufen. Sie gehen nur nicht logisch vor, z. B. keine Belohnung für Ihre eigene Datenbank. Außerdem sollten Sie consmePurchase damit es nicht in Ihrer App verbleibt.

@hyochan Wenn ich das tue, wird die Zahlung genehmigt und das Benutzerkonto wird belastet, ohne belohnt zu werden.

@tmjordan Oh, ich meintest . Was ist, wenn Sie logisch vorgehen und dann eine Belohnung geben?

@hyochan Wenn ein Nutzer ein Produkt kauft, wird die angegebene Quittung an Google Server gesendet, um die Quittung zu validieren und den Status des Kaufs
Angenommen, ich habe einen Fehler während des Validierungsprozesses, der nicht vom Google-Server (z. B. meinem Backend) stammt. Daher kann ich die Quittung nicht validieren und möchte den Kauf manuell stornieren, anstatt darauf zu warten, dass er von Google storniert wird ( Während dieser Zeit kann ich keinen weiteren Kauf tätigen, wenn ich nicht aknowledgepurchase oder Consumepurchase anrufe.
Ich weiß nicht, ob es möglich ist. Vielleicht funktioniert der Kaufprozess bei Google so.

Es wäre schön, wenn wir einen Kauf, der noch nicht bestätigt oder verbraucht wurde, manuell stornieren können. In diesem Szenario wird der Benutzer zurückerstattet, wenn die Zahlung genehmigt wurde.
Anstatt jedes Mal den gleichen Kauf auszulösen, bis er von Google storniert wird.

@tmjordan Danke für deine gute Sichtweise. Klingt sehr vernünftig, aber ich bin mir nicht ganz sicher, ob pending Einkäufe tatsächlich berechnet werden. Ich denke, die pending Einkäufe sollten nicht einmal berechnet werden, wenn acknowledged sondern diese sollten entfernt werden. Ich hoffe, wir können weitere Details zu anderen Erfahrungen besprechen.

@hyochan , Gibt es eine finishTransactionIOS aufrufen und diesen Kauf dann aus dem Kaufverlauf entfernen. Ich weiß nicht, ob es eine andere Möglichkeit gibt, zu überprüfen, ob ein Abonnement noch aktiv ist, aber jetzt überprüfe ich das Ablaufdatum für die letzte Transaktion im Belegverlauf. Wenn ein Kauf noch nicht abgeschlossen wurde, möchte ich nicht, dass er in der Kaufhistorie erfasst wird. Leider passiert im Moment genau das. Und im Gegensatz zu Android wird der unvollständige Kauf nach einiger Zeit nicht storniert und wird nie aufhören, von purchaseUpdateListener ausgelöst zu werden.

Also habe ich das gleiche Problem auf iOS und Android, ich muss einen Kauf stornieren, der noch nicht abgeschlossen wurde. Und speziell auf ios, wenn dieser Kauf nicht in der Historie erfasst wird, es sei denn, es gibt eine effizientere Möglichkeit, die Gültigkeit eines Abonnements zu überprüfen.

Ich würde gerne ein ähnliches Szenario behandeln

  1. Benutzer Starten Sie den Kauf eines (zeitkritischen) Produkts. Dieses Produkt sollte sofort zurückgegeben werden
  2. Der Server kann das Produkt nicht zurückgeben. und es kann spät sein, das Produkt durch erneutes Versuchen zurückzugeben
  3. Das purchaseUpdateListener wird viele Male ausgelöst, bis finishTransactionIOS aufgerufen wird. Dies ist jedoch nicht das gewünschte Ergebnis. Die Transaktion sollte zu diesem Zeitpunkt abgebrochen werden.

Gibt es eine Methode, um die Transaktion abzubrechen?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen