SDKs für Android / Bestellstatus tracken
  Alle Dokumentation

SDKs für Android

Bestellstatus tracken

Achtung
Mit dem SDK können Sie den Bestellstatus aufseiten Ihres Anwendungs-Clients tracken. Wir empfehlen jedoch, einen Handler für den Zahlung-Webhook einzurichten, um Bestellinformationen im Backend Ihrer Anwendung zu empfangen. Dadurch können sie zusätzlich prüfen, ob Käufe abgeschlossen sind.

Nachdem ein Benutzer etwas gekauft hat, kann Ihre Anwendung die folgenden Aktionen durchführen:

  • den Bestellstatus auf der Benutzeroberfläche anzeigen
  • das Guthaben eines Benutzers nach einer erfolgreichen Zahlung belasten
  • die gekauften Artikel nach erfolgreicher Zahlung gewähren

Wird die Logik dieser Aktionen mithilfe des SDK implementiert, können Sie den Bestellstatus auf einen der folgende Wege tracken:

Achtung

Wenn Sie in Ihrer Anwendung sowohl die Store- als auch die Payments-Bibliothek verwenden, empfehlen wir Ihnen, die Bestellung mithilfe der Store-Bibliotheksmethode zu tracken.

Wenn Sie nur die Payments-Bibliothek verwenden, abonnieren Sie die Bestellstatusänderung mithilfe der Payments-Bibliothekmethode. Verwenden Sie die Methode zur Abfrage des Bestellstatus nur als Ausweichmethode zum Datenabruf, um eine Überlastung der Xsolla-Systeme zu vermeiden.

Bestellstatusänderungen abonnieren

Store-Bibliothekmethode verwenden

Übermitteln Sie der SDK-Methode getOrderStatus aus der Store-Bibliothek die folgenden Parameter, um Bestellstatusänderungen zu abonnieren:

  • listener – Listener-Objekt vom Typ OrderStatusListener.
  • orderId – Bestell-ID, die Sie beim Kauf über den Warenkorb, beim One-Click-Kauf oder beim Kauf gegen virtuelle Währung erhalten haben, als Parameter.
SDK-Referenzdokumentation
Erfahren Sie mehr über die SDK-Methoden und ihre Parameter.

Beispielhafter Aufruf der Methode XStore.getOrderStatus:

Copy
Full screen
Small screen
XStore.getOrderStatus(object : OrderStatusListener() {

               override fun  onStatusUpdate(status: OrderResponse.Status) {

                   if(status == OrderResponse.Status.DONE) {

                       Log.d("MainActivity", "Success")

                   }

               }

               override fun  onFailure() {

                   Log.d("MainActivity", "Failure")

               }

           }, orderId)

Wir empfehlen, die Methode XStore.getOrderStatus beim Öffnen des Zahlungsportals aufzurufen.

Die Kaufmethoden kapseln mehrere Methoden zum Tracken des Bestellstatus. Das Tracking erfolgt nach dem folgenden Algorithmus:

  1. Eine Websocket-Verbindung wird hergestellt.
  2. Wenn eine Websocket-Verbindung erfolgreich hergestellt wurde und sich der Bestellstatus in done oder cancel ändert, endet das Tracking. Wenn eine Websocket-Verbindung fehlschlägt oder die Antwort falsche Daten enthält, wird der Bestellstatus per Short-polling getrackt.
  3. Das Tracking des Bestellstatus wird per Short-polling fortgesetzt. Alle drei Sekunden wird eine einfache HTTP-Bestellstatusanfrage gesendet. Das Tracking endet, wenn sich der Bestellstatus in done oder cancel ändert.

Payments-Bibliothekmethode verwenden

Verwenden Sie den Zahlungsstatus-Rückruf, um Bestellstatusänderungen mithilfe der Payments-Bibliothek zu tracken. Gehen Sie dazu wie folgt vor:
  1. Übermitteln Sie beim Erstellen des Objekts XPayments.IntentBuilder den Rückruf StatusReceivedCallback mithilfe der Methode setStatusReceivedCallback.
  2. Implementieren Sie die Methode onSuccess im Rückruf StatusReceivedCallback, der bei jeder individuellen Statusänderung aufgerufen wird.
Achtung

Bestellstatusinformationen werden an die Methode onSuccess in einem Objekt vom Typ InvoicesDataResponse übermittelt. Das Objekt enthält ein Array von InvoiceData-Objekten. Jedes InvoiceData-Objekt entspricht einer bestimmten Bestellabwicklungsphase und enthält den Status dieser Phase.

Wenn der Nutzer beispielsweise bei der Bestellung zunächst ungültige Daten eingegeben hat, erscheint in der Liste InvoiceData ein Objekt mit dem Status InvoicesDataResponse.CANCELED. Wenn der Nutzer dann die Daten korrigiert und die Bestellung erfolgreich bezahlt, erscheint ein neues InvoiceData-Objekt im Array, diesmal mit dem Status InvoicesDataResponse.Status.DONE.

Das Status-Tracking endet, wenn der finale Zahlungsstatus (InvoicesDataResponse.Status.DONE oder InvoicesDataResponse.Status.ERROR) empfangen wird.

Beispiel:

Copy
Full screen
Small screen
val intent = XPayments.createIntentBuilder(this)
               .accessToken(<accessToken>)
               .isSandbox(<isSandbox>)
           	.setStatusReceivedCallback(object : StatusReceivedCallback {
               	override fun onSuccess(data: InvoicesDataResponse) {
                   		Log.d(TAG, "StatusReceivedCallback is fired. Result data = $data")
               	}
           	})
           	.build()

Bestellstatus abfragen

  1. Rufen Sie die Methode getOrder aus der Login-Bibliothek auf, und übermitteln Sie die folgenden Parameter, um den aktuellen Zahlungsstatus abzurufen:
  • orderId – die Bestell-ID, die beim Kauf über den Warenkorb, beim One-Click-Kauf oder beim Kauf gegen virtuelle Währung empfangen wurde.
  • callback – der Rückruf bei einem erfolgreichen Abruf der Bestellinformationen. Nutzen Sie die GetStatusCallback-Schnittstelle, und implementieren Sie die beiden Methoden onSuccess und onError, um den Rückruf zu implementieren.
Achtung

Bestellstatusinformationen werden an die Methode onSuccess in einem Objekt vom Typ InvoicesDataResponse übermittelt. Das Objekt enthält ein Array von InvoiceData-Objekten. Jedes InvoiceData-Objekt entspricht einer bestimmten Bestellabwicklungsphase und enthält den Status dieser Phase.

Wenn der Nutzer beispielsweise bei der Bestellung zunächst ungültige Daten eingegeben hat, erscheint in der Liste InvoiceData ein Objekt mit dem Status InvoicesDataResponse.CANCELED. Wenn der Nutzer dann die Daten korrigiert und die Bestellung erfolgreich bezahlt, erscheint ein neues InvoiceData-Objekt im Array, diesmal mit dem Status InvoicesDataResponse.Status.DONE.

Das Status-Tracking endet, wenn der finale Zahlungsstatus (InvoicesDataResponse.Status.DONE oder InvoicesDataResponse.Status.ERROR) empfangen wird.

Beispiel:

Copy
Full screen
Small screen

XPayments.getStatus(<token>, <isSandbox>, object : GetStatusCallback {
            override fun onSuccess(data: InvoicesDataResponse?) {
                Log.d(TAG, "onSuccess is fired. Result data = $data")
            }

           override fun onError(throwable: Throwable?, errorMessage: String?) {
                Log.d(TAG, "onError is fired. ErrorMessage = $errorMessage")
            }

})
War dieser Artikel hilfreich?
Vielen Dank!
Gibt es etwas, das wir verbessern können? Nachricht
Das tut uns leid
Bitte erläutern Sie, weshalb dieser Artikel nicht hilfreich ist. Nachricht
Vielen Dank für Ihr Feedback!
Wir werden Ihr Feedback aufgreifen und dazu nutzen, Ihr Erlebnis verbessern.

Nützliche Links

Letztmalig aktualisiert: 5. September 2024

Haben Sie einen Tippfehler oder einen anderen Textfehler gefunden? Wählen Sie den Text aus und drücken Sie Strg+Eingabe.

Problem melden
Wir überprüfen unsere Inhalte ständig. Ihr Feedback hilft uns, sie zu verbessern.
Geben Sie eine E-Mail-Adresse an, damit wir Sie erreichen können
Vielen Dank für Ihr Feedback!