Bestellstatus-Tracking einrichten
Die Zahlung muss erfolgreich gewesen sein, bevor Sie dem Nutzer Artikel gewähren können.
Wählen Sie eine Methode für das Tracken des Bestellstatus aus:
Wählen Sie die für Ihr Projekt am besten geeignete Methode für den Zugriff auf Xsolla-Daten:
Wenn Sie keinen Server haben oder die Logik für die Kaufabwicklung clientseitig implementieren möchten, stehen folgende Möglichkeiten offen:
Xsolla Event API
Die Xsolla Event API stellt eine Alternative zu Webhooks dar. Mit der API können Sie Informationen über Zahlungsvorgänge direkt vom Anwendungs-Client per Anfrage an den Xsolla-Server empfangen. Die Einrichtung und Wartung eines eigenen Servers, der Webhooks verarbeitet, ist somit nicht mehr notwendig. Ausführliche Informationen zur Xsolla Event API finden Sie in unserer Dokumentation.
Bestellstatus mithilfe der WebSocket API clientseitig abrufen
Die Lösung verwendet Websockets, um den Bestellstatus abzurufen, ohne detaillierte Informationen über die Bestellung zu erhalten. Diese Methode ist vorzuziehen, da nur eine Verbindung zwischen dem Client (z. B. Ihrer Website oder App) und dem Xsolla-Server hergestellt wird und somit die Auslastung des Clients oder des Servers nicht weiter steigt.
Gehen Sie wie folgt vor:
- Damit der Xsolla-Websocket-Server und Ihr Client die Bestellstatusmeldungen erkennen können, müssen Sie eine Verbindung herstellen:
- javascript
1const client = new Centrifuge(
2connectionURL,
3{
4data: {
5 user_external_id: user_external_id,
6 auth: auth,
7 project_id: project_id
8}
9}
10)
11connectionURL - wss://ws-store.xsolla.com/connection/websocket
12auth - user JWT token
- Abonnieren Sie die Ereignisse mithilfe der Funktion
client.on, um neue Meldungen über den Bestellstatus zu erhalten:
- javascript
1client.on('publication', (ctx) => {
2 //handle the status
3});
- Triggern Sie die eigentliche Verbindungsherstellung:
- javascript
1client.connect()
- Nutzen Sie die history method der API, um den Bestellstatus-Änderungsverlauf zu erhalten:
- javascript
1client.on('subscribed', function (ctx) {
2 client.history(ctx.channel, { limit: -1, since: { offset: 0 }, reverse: false }).then(function (resp) {
3resp.publications.forEach((ctx) => {
4 /handle the status
5});
6
7 }, function (err) {
8 //handle the status
9 });
10});
Nachrichtenrumpf (Beispiel):
- javascript
1{
2order_id: 59614241,
3status: "new"
4}
Folgende Bestellstatus sind möglich:
New– Bestellung angelegt, aber noch nicht bezahltPaid– Bestellung bezahltDone– Bestellung ausgeliefert (alle Belege gesendet, Auslieferung durch Xsolla, externe Plattformen usw. ist erfolgt)Canceled– Bestellung ist storniert und die Zahlung wurde dem Nutzer erstattet
Empfehlung für die Websocket-Nutzung:
- Beim Websocket-Protokoll beträgt die maximale Wartezeit auf eine Antwort fünf Minuten.
- Die Verbindung sollte beim Öffnen des Zahlungsportals hergestellt werden.
- Die Verbindung sollte getrennt werden, sobald der endgültige Bestellstatus (
CanceledoderDone) empfangen wurde. - Verwenden Sie Short-polling, wenn die Websocket-Lebensdauer abläuft oder Verbindungsprobleme auftreten.
Short-polling
Nutzen Sie den API-Aufruf Bestellung abrufen, um nach einer Bestellstatusänderung detaillierte Informationen über die Artikel in der Bestellung zu erhalten.
Die Methode XsollaCatalog.Purchase kapselt mehrere Methoden zum Tracken des Bestellstatus. Der Tracking-Mechanismus ist in der Dokumentation des SDK für Unity ausführlich beschrieben.
Zusätzlich können Sie den Bestellstatus und den Bestellinhalt an die Kaufmethoden-Rückruffunktion onSuccess übermitteln.
Den Bestellstatus können Sie mit der SDK-Methode CheckPendingOrder tracken. Übermitteln Sie dazu die folgenden Parameter an die Methode:
AccessToken– den beim Kauf des Artikels erhaltenen Zahlungstoken.OrderId– die beim Kauf des Artikels erhaltene Bestell-ID.SuccessCallback– der Rückruf bei einer erfolgreichen Zahlung.ErrorCallback– der Rückruf bei einem Anfragefehler.bIsUserInvolvedToPayment– inwiefern der Nutzer am Bezahlvorgang beteiligt ist. Übermitteln Sie beim Kauf gegen echte Währungtrue, und beim Erhalt eines kostenlosen Artikels sowie beim Kauf gegen virtuelle Währungfalse.
Der Tracking-Mechanismus ist in der Dokumentation des SDK für Unreal Engine auf Unternehmensebene ausführlich beschrieben.
Rufen Sie die SDK-Methode CheckOrder auf, und übermitteln Sie die folgenden Parameter, um den Status und den Inhalt einer Bestellung abzufragen:
AccessToken– den beim Kauf des Artikels erhaltenen Zahlungstoken.OrderId– die beim Kauf des Artikels erhaltene Bestell-ID.SuccessCallback– der Rückruf bei einer erfolgreichen Bestellüberprüfung. Die Antwort enthält den Bestellstatus.ErrorCallback– der Rückruf bei einem Anfragefehler.
Um den Status der angelegten Bestellungen zu tracken und diese zu validieren, müssen Sie die Webhook-Verarbeitung aufseiten Ihres Anwendungsservers konfigurieren.
Bei Xsolla gibt es zwei Möglichkeiten, Webhooks im Falle eines Artikelkaufs und einer Erstattung zu empfangen: Informationen mit Zahlungs- und Transaktionsdaten sowie Informationen zu gekauften Artikeln können entweder separat gesendet oder in einem einzigen Webhook zusammengefasst werden. Standardmäßig werden in allen neuen Projekten kombinierte Webhooks empfangen.
Um zur neuen Option mit dem Empfang von kombinierten Webhooks zu wechseln, wenden Sie sich an Ihren Customer Success Manager oder senden Sie eine E-Mail an csm@xsolla.com.
Weitere Informationen in Bezug auf Empfangsoptionen von Webhooks
Empfang von Informationen in kombinierten Webhooks:
Wenn Sie sich nach dem 22. Januar 2025 im Kundenportal registriert haben, erhalten Sie alle Informationen in den Webhooks Erfolgreiche Bezahlung der Bestellung (order_paid) und Stornierung der Bestellung (order_canceled). In diesem Fall müssen Sie die Webhooks Zahlung (payment) und Erstattung (refund) nicht verarbeiten.
Empfang von Informationen in separaten Webhooks:
Wenn Sie sich am oder vor dem 22. Januar 2025 im Kundenportal registriert haben, erhalten Sie die folgenden Webhooks:
- Zahlung (
payment) und Erstattung (refund) mit Informationen über die Zahlungsdaten und den Transaktionsdetails. - Erfolgreiche Bezahlung der Bestellung (
order_paid) und Stornierung der Bestellung (order_canceled) mit Informationen über gekaufte Artikel.
Sie müssen alle eingehenden Webhooks verarbeiten.
Für die volle Operation des In-Game Stores und Zahlungsmanagements ist es notwendig, die Verarbeitung des Hauptwebhooks zu implementieren:
| Webhook-Name | Beschreibung |
|---|---|
Beutzervalidierung > Benutzervalidierung (user_validation) | Wird während der verschiedenen Phasen des Bezahlvorgangs gesendet, um sicherzustellen, dass der Nutzer im Spiel registriert ist. |
Spieledienste > Kombinierte Webhooks > Erfolgreiche Bezahlung der Bestellung (order_paid) | Es enthält Zahlungsdaten, Transaktionsdetails und Informationen über gekaufte Artikel. Nutzen Sie die Daten des Webhooks, um Artikel zum Benutzer hinzuzufügen. |
Spieledienste > Kombinierte Webhooks > Stornierung der Bestellung (order_canceled) | Es enthält Daten von der stornierten Zahlung, Transaktionsdetails und Informationen über gekaufte Artikel. Nutzen Sie die Daten des Webhooks, um die gekauften Gegenstände zu entfernen. |
Das folgende Schema zeigt Ablauf beim Kauf und bei der Rückgabe von Artikeln mithilfe von kombinierten Webhooks.
sequenceDiagram
participant User
participant GameClient as Game Client
participant Xsolla
participant GameServer as Game Server
%% Item Purchase
Note over User, GameServer: Item purchase
User ->> GameClient: Logs in
GameClient ->> Xsolla: Sends user authentication request
Xsolla -->> GameClient: Returns JWT / OAuth 2.0 token
GameClient ->> Xsolla: Sends JWT, project ID, pagination parameters
Xsolla -->> GameClient: Returns array of items
GameClient -->> User: Displays storefront
User ->> GameClient: Selects item and clicks Buy
GameClient ->> Xsolla: Creates order request
Xsolla -->> GameClient: Returns payment token
GameClient ->> Xsolla: Opens payment UI URL with received token
Xsolla ->> GameServer: Sends User validation webhook
GameServer -->> Xsolla: Returns success status code
Xsolla -->> User: Displays payment UI
User ->> Xsolla: Chooses payment method and clicks Pay
Xsolla ->> GameServer: Sends Successful payment for order webhook
GameServer ->> GameServer: Grants purchases to user
GameServer -->> Xsolla: Returns success status code
Xsolla -->> User: Shows successful purchase screen
%% Refund / Chargeback
Note over User, GameServer: Refund / Chargeback
User ->> Xsolla: Requests refund or chargeback
Xsolla ->> GameServer: Sends Order cancellation webhook
GameServer ->> GameServer: Removes items from user inventory
GameServer -->> Xsolla: Returns success status code
Xsolla -->> User: Refunds the payment
Ist die Artikelkatalog personalisierung aufseiten Ihrer Anwendung implementiert, richten Sie die Verarbeitung der Katalogpersonalisierung aufseiten des Partners ein.
- Zahlung, Erfolgreiche Bezahlung der Bestellung und Benutzervalidierung, sofern Sie separate Webhooks empfangen
- Erfolgreiche Bezahlung der Bestellung und Benutzervalidierung, sofern Sie kombinierte Webhooks empfangen
Eine vollständige Liste der Webhooks und allgemeine Informationen zu deren Nutzungsmöglichkeiten finden Sie in der Webhooks-Dokumentation.
Webhook-Versand einrichten
So konfigurieren Sie Webhooks bei Xsolla:
- Navigieren Sie im Kundenportal zum Menüpunkt Einstellungen > Webhooks.
- Geben Sie im Feld Webhook-Server die URL Ihres Servers an, auf dem Sie die Webhooks im Format
https://example.comempfangen wollen. Sie können auch eine URL aus einem Webhook-Testtool angeben.
- Standardmäßig wird ein geheimer Schlüssel zum Signieren von Projekt-Webhooks generiert. Wenn Sie einen neuen geheimen Schlüssel generieren möchten, klicken Sie auf das Aktualisieren-Symbol.
- Klicken Sie auf Webhooks aktivieren.
Webhook-Listener hinzufügen
Ein Webhook-Listener ist ein Programmcode, der es ermöglicht, eingehende Webhooks unter einer bestimmten URL-Adresse zu empfangen, eine Signatur zu generieren und dem Xsolla-Webhook-Server zu antworten.
Signatur generieren
Beim Empfang eines Webhooks ist die Sicherheit der Datenübermittlung zu gewährleisten. Dazu muss aus den Webhook-Daten eine Signatur generiert und danach überprüft werden, ob sie mit der im HTTP-Anfrage-Header gesendeten Signatur übereinstimmt.
So generieren Sie eine Signatur:
- Verketten Sie das JSON aus dem Anfragerumpf mit dem geheimen Schlüssel des Projekts.
- Wenden Sie die kryptografische Hash-Algorithmus SHA-1 auf den im ersten Schritt erhaltenen String an.
Dem Webhook antworten
Um den Empfang eines Webhooks zu bestätigen, muss Ihr Server wie folgt antworten:
- HTTP-Statuscode
200,201oder204ohne Nachrichtenrumpf im Falle einer positiven Antwort. - HTTP-Statuscode
400samt Problembeschreibung, sofern der angegebene Benutzer nicht gefunden oder eine ungültige Signatur übermittelt wurde.
Ihr Webhook-Handler kann ebenso mit einem HTTP-Statuscode 5xx antworten, falls Ihr Server vorübergehend Probleme hat.
Erhält der Xsolla-Server keine Antwort auf die Webhooks Erfolgreiche Bezahlung der Bestellung und Stornierung der Bestellung oder er empfängt eine Antwort mit dem Code 5xx, werden die Webhooks nach folgendem Zeitplan erneut gesendet:
- Zwei Versuche im Abstand von 5 Minuten
- Sieben Versuche im Abstand von jeweils 15 Minuten
- Zehn Versuche im Abstand von jeweils 60 Minuten
Innerhalb von 12 Stunden nach dem ersten Versuch werden maximal 20 Versuche unternommen, Webhooks zu senden.
Die Wiederholungslogik für die beiden Webhooks Zahlung und Erstattung ist auf der jeweiligen Webhook-Seite beschrieben.
Erhält der Xsolla-Server keine Antwort auf den Webhook Benutzervalidierung oder empfängt eine Antwort mit dem Code 400 oder 5xx, wird der Webhook Benutzervalidierung nicht erneut gesendet.
In diesem Fall wird dem Benutzer ein Fehler angezeigt und die Webhooks Zahlung und Erfolgreiche Bezahlung der Bestellung werden nicht gesendet.
Konfigurieren von Artikelinformationen in Webhooks
Sie können konfigurieren, welche Artikeldaten in den Webhooks Erfolgreiche Bezahlung der Bestellung und Stornierung der Bestellung über den Array items integriert sind.
Aktivierung der Integration zusätzlicher Parameter
Aktivieren Sie die Integration von zusätzlichen Parametern die Folgendes angeben:
- ob der Artikel kostenlos ist (
is_free) - ob der Artikel ein Bonus ist (
is_bonus) - ob der Artikel ein Teil eines Bundles ist (
is_bundle_content)
Um diese Parameter zu erhalten, müssen Sie Ihre Webhooks auf die Version 2 mithilfe des API-Aufrufs Informationen zu Webhook-Einstellungen aktualisieren umschalten. In der Version 1 (Standard) sind diese Parameter nicht verfügbar.
Beispiel eines Arrays von Artikeln mit zusätzlichen Parametern:
- json
1"items": [
2 {
3 "sku": "com.xsolla.item_new_1",
4 "type": "bundle",
5 "is_pre_order": false,
6 "is_free": false,
7 "is_bonus": false,
8 "is_bundle_content": false,
9 "quantity": 1,
10 "amount": "1000",
11 "promotions": []
12 },
13 {
14 "sku": "com.xsolla.gold_1",
15 "type": "virtual_currency",
16 "is_pre_order": false,
17 "is_free": false,
18 "is_bonus": false,
19 "is_bundle_content": true,
20 "quantity": 1500,
21 "amount": "[null]",
22 "promotions": []
23 }
24 ]
Deaktivierung der Integration von Bundle-Inhalten
Standardmäßig enthalten Webhooks alle Elemente aus dem Bundle als Liste einzelner Artikel. Sie können den Webhook so konfigurieren, dass er nur das Bundle selbst enthält, ohne dessen Inhalt aufzulisten.
In diesem Fall werden die im Bundle enthaltenen Artikel nicht im Array der items einbezogen. Im oben angezeigten Array wird der Artikel mit dem SKU-com.xsolla.gold_1, der Teil des Bundles ist, ausgeschlossen.
Beispiel eines Arrays von Artikeln, wenn Bundle-Inhalte deaktiviert sind:
- json
1
2"items": [
3 {
4 "sku": "com.xsolla.item_new_1",
5 "type": "bundle",
6 "is_pre_order": false,
7 "is_free": false,
8 "is_bonus": false,
9 "is_bundle_content": false,
10 "quantity": 1,
11 "amount": "1000",
12 "promotions": []
13 }
14 ]
Um die Integration des Bundle-Contents zu deaktivieren, kontaktieren Sie Ihren Customer Success Manager oder senden Sie eine E-Mail an csm@xsolla.com
Haben Sie einen Tippfehler oder einen anderen Textfehler gefunden? Wählen Sie den Text aus und drücken Sie Strg+Eingabe.