Webhooks sind Benachrichtigungen über Ereignisse im System. Wenn ein bestimmtes Ereignis eintritt, sendet Xsolla eine HTTP-Anfrage mitsamt den Ereignisdaten an Ihre Anwendung. In der Regel handelt es sich dabei um eine POST-Anfrage im JSON- Format.
Ereignisbeispiele:
Wenn ein bestimmtes Ereignis eintritt, benachrichtigt Xsolla Ihr System per Webhook. Infolgedessen können Sie Aktionen einleiten, wie zum Beispiel:
Beispielhafter Webhook-Ablauf bei der Zahlungsabwicklung:
Videoanleitung für die Xsolla-Webhook-Integration:
Webhooks-Einstellungen beim Arbeiten mit Xsolla-Produkten und ‑Lösungen:
Produkt/Lösung | Erforderlich/Optional | Wozu die Webhooks verwendet werden |
---|---|---|
Payments | Erforderlich |
|
In-Game Store | Erforderlich |
|
Game Sales | Optional | Für den Verkauf von Spielschlüsseln sind keine Benutzervalidierung und keine Gewährung von Artikeln erforderlich. Dennoch können Sie Webhooks nutzen, wenn Sie Informationen über Ereignisse erhalten möchten, z. B., wenn eine Bestellung bezahlt oder storniert wird. Wenn Sie sich für Webhooks entscheiden, ist es wichtig, alle eingehenden erforderlichen Webhooks zu verarbeiten. |
Subscriptions | Optional | Receiving information about creation, update, or cancellation of a subscription. Alternatively, you can request information via the API. |
Web Shop | Erforderlich |
|
Digital Distribution Hub | Erforderlich |
Refer to the documentation for detailed information on setting up webhooks for the Digital Distribution Hub. |
If you use products and solutions that require working with webhooks, enable and test the webhooks in your Publisher Account and set up their processing. When specific events occur, webhooks are sent sequentially. Therefore, if you do not process one of the webhooks, subsequent webhooks will not be sent. The list of required webhooks is presented below.
2 webhook sending options have been set up on Xsolla’s side when purchasing and returning items on the site — information with payment and transaction data and information about purchased items can come separately or can be combined into one webhook.
Receiving information in combined webhooks:
If you registered in Publisher
Account after January 22, 2025, you receive all the information in the Successful payment of the
order (order_paid
) and Order cancellation (order_canceled
) webhooks. In this case,
you do not need to process the Payment (payment
) and Refund (refund
) webhooks.
Receiving information in separate webhooks:
If you registered in Publisher Account on or before January 22, 2025, you receive the following webhooks:
payment
) and Refund (refund
) with information about
payment data and transaction details.order_paid
) and Order cancellation (order_canceled
) with
information about purchased items.You need to process all incoming webhooks. To switch to the new option with receiving combined webhooks, contact your Customer Success Managers or email to csm@xsolla.com.
For the full operation of the in-game store and payment management, it is necessary to implement the processing of the main webhooks.
If you receive combined webhooks:
Webhook name and type | Beschreibung |
---|---|
User validation > User validation (user_validation ) |
Is sent at different stages of the payment process to ensure the user is registered in the game. |
Game services > Combined webhooks > Successful payment of the order (order_paid ) |
It contains payment data, transaction details, and information about purchased items. Use the data from the webhook to add items to the user. |
Game services > Combined webhooks > Order cancellation (order_canceled ) |
It contains data of the canceled payment, transaction details, and information about purchased items. Use the data from the webhook to remove the purchased items. |
If you receive separate webhooks:
Webhook name and type | Beschreibung |
---|---|
User validation > User validation (user_validation ) |
Is sent at different stages of the payment process to ensure the user is registered in the game. |
Payments > Payment (payment ) |
It contains payment data and transaction details. |
Game services > Separate webhooks > Successful payment of the order (order_paid ) |
It contains information about purchased items and the transaction details. Use the data from the webhook to add items to the user. |
Payments > Refund (refund ) |
It contains payment data and transaction details. |
Game services > Separate webhooks > Order cancellation (order_canceled ) |
It contains information about the purchased items and the ID of the canceled transaction. Use the data from the webhook to remove the purchased items. |
Falls die Artikelkatalogpersonalisierung aufseiten Ihrer Anwendung implementiert ist, müssen Sie den Webhook Katalogpersonalisierung aufseiten des Partners einrichten.
Note
To receive real payments, you only need to sign the licensing agreement and implement processing of the webhooks:
Um Abo-Modelle automatisch zu verwalten, muss die Verarbeitung der wichtigsten Webhooks implementiert sein:
user_validation
) – wird in verschiedenen Phasen des Bezahlvorgangs gesendet,
um sicherzustellen, dass der Nutzer im Spiel registriert ist.payment
) – wird gesendet,
wenn eine Bestellung bezahlt wird, und enthält Zahlungsdaten sowie
Transaktionsdetails.create_subscription
) – wird gesendet, wenn ein Webhook vom
Typ Zahlung erfolgreich verarbeitet
wurde oder der Nutzer ein Probeabo abgeschlossen hat. Der Webhook enthält
Details über das abgeschlossene Abonnement und die Nutzerdaten. Verwenden Sie
die Webhook-Daten, um das Abonnement für den Nutzer zu aktivieren.update_subscription
) – wird gesendet, wenn ein Abonnement
verlängert oder geändert und Webhook vom Typ Zahlung
erfolgreich verarbeitet wurde. Der Webhook enthält Details über das
abgeschlossene Abonnement und die Nutzerdaten. Verwenden Sie die Webhook-Daten,
um das Abonnement des Nutzers zu verlängern oder die Abonnementparameter zu
ändern.refund
) – wird gesendet,
wenn eine Bestellung storniert wird und enthält die Daten der stornierten
Zahlung sowie Transaktionsdetails.cancel_subscription
) – wird gesendet, wenn ein Webhook vom Typ Erstattung erfolgreich verarbeitet oder
das Abonnement aus einem anderen Grund gekündigt wurde. Der Webhook enthält
Informationen über das Abonnement und die Nutzerdaten. Verwenden Sie die
Webhook-Daten, um die vom Nutzer abgeschlossenen Abonnements zu kündigen.So aktivieren Sie den Empfang von Webhooks:
https://example.com
empfangen möchten. Sie können auch
eine URL aus einem Tool, mit dem sich Webhooks testen lassen, angeben.Hinweis:
Für die Datenübertragung wird das HTTPS-Protokoll verwendet; das HTTP-Protokoll wird nicht unterstützt.
Hinweis
Webhooks können Sie auch über eine beliebige zweckbestimmte Website (z. B. webhook.site) oder Plattform (z. B. ngrok) testen.
Hinweis
Sie können Webhooks nicht gleichzeitig an verschiedene URLs senden. Im Kundenportal können Sie jedoch zunächst eine URL zum Testen angeben und diese dann durch die echte URL ersetzen.
So deaktivieren Sie den Empfang von Webhooks:
For the webhooks in the Payment and store section, advanced settings are available. They will automatically appear under the General settings block after you click the Get webhooks button.
Note
If the advanced settings are not displayed, make sure that webhook reception is connected in the general settings and you are on the Testing > Payment and store tab.
In this section, you can set up the receipt of additional information in webhooks. To do this, set the corresponding switches to the active position. The line of each permission indicates the webhooks that will be affected by changing the settings.
Schalter | Description |
---|---|
Infos über das gespeicherte Zahlungskonto anzeigen | Informationen über die gespeicherte Zahlungsmethode werden in dem benutzerdefinierten Objekt payment_account übermittelt. |
Infos über Transaktionen anzeigen, die mit gespeicherten Zahlungsmethoden getätigt wurden | Informationen werden in den folgenden benutzerdefinierten Parametern des Webhooks übermittelt.
|
Bestellobjekt dem Webhook hinzufügen | Die Informationen über die Bestellung werden im order -Objekt des Zahlung-Webhooks übermittelt. |
Nur notwendige Nutzerparameter ohne vertrauliche Daten senden | Im Webhook werden nur die folgenden Nutzerinformationen übermittelt:
|
Individuelle Parameter senden | Informationen über individuelle Tokenparameter werden in dem Webhook übermittelt. |
BLZ und Endziffern von Karten anzeigen | Im Webhook werden nur die folgenden Informationen über die Bankkartennummer übermittelt:
|
Kartenmarke anzeigen | Die Marke der Karte, mit der die Zahlung getätigt wurde. Zum Beispiel: Mastercard oder Visa. |
Webhooks zu testen, hilft dabei, sicherzustellen, dass das Projekt sowohl bei Ihnen als auch aufseiten von Xsolla korrekt eingerichtet ist.
Sind die Webhooks erfolgreich eingerichtet, wird unterhalb des Einrichtungsbereichs ein Bereich zum Testen von Webhooks angezeigt.
The testing section in the Publisher Account varies depending on the webhook receiving option.
If you receive combined webhooks:
Tab name for webhook testing | Webhook name and type |
---|---|
Payments and store | User validation > User validation (user_validation ) |
Game services > Combined webhooks > Successful payment of the order (order_paid ) |
|
Game services > Combined webhooks > Order cancellation (order_canceled ) |
|
Subscriptions | User validation > User validation (user_validation ) |
Payments > Payment (payment ) |
If you receive separate webhooks:
Tab name for webhook testing | Webhook name and type |
---|---|
Store | Game services > Separate webhooks > Successful payment of the order (order_paid ) |
Game services > Separate webhooks > Order cancellation (order_canceled ) |
|
Payments | User validation > User validation (user_validation ) |
Payments > Payment (payment ) |
|
Subscriptions | User validation > User validation (user_validation ) |
Payments > Payment (payment ) |
Hinweis
Wird im Testbereich eine Fehlermeldung angezeigt, wonach der Test nicht erfolgreich war, sollten Sie in den Einstellungen Ihres Webhook-Listener prüfen, wie dieser auf Webhooks antwortet. Die Gründe für den fehlgeschlagenen Test sind in den Testergebnissen ersichtlich.
Beispiel:
Sie haben eine spezielle Website (z. B. webhook.site) zum Testen verwendet.
Im Abschnitt Test: Antwort auf eine ungültige Signatur wird ein Fehler angezeigt.
Das liegt daran, dass Xsolla einen Webhook mit falscher Signatur gesendet hat und nun erwartet, dass Ihr Handler mit dem HTTP-Statuscode 4xx
und dem Fehlercode INVALID_SIGNATURE
antwortet.
webhook.site antwortet allen Webhooks mit dem HTTP-Statuscode 200
, selbst solchen Webhooks mit ungültiger Signatur. Weil der HTTP-Statuscode 4xx
nicht wie erwartet empfangen wurde, ist das Testergebnis fehlerhaft.
The process of testing for the scenario with combined webhooks is described below.
In the Payment and store tab, you can test the following webhooks:
user_validation
)order_paid
)order_canceled
)So testen Sie die Webhooks:
In the webhooks testing section, go to the Payment and store tab.
Wählen Sie im Drop-down-Menü einen Artikeltyp aus. Ist der ausgewählte Artikeltyp im Kundenportal nicht eingerichtet, klicken Sie auf:
Fill in the necessary fields:
Click Test webhooks.
User validation, Successful payment of the order and Order cancellation webhooks with the specified data are sent to the provided URL. The results of testing each webhook type are displayed below the Test webhooks button.
If public user ID is enabled in your project, you will also see the results of a user search check.
Für jeden Webhook müssen Sie die Verarbeitung beider Szenarien, also erfolgreich und fehlerbehaftet, konfigurieren.
Auf der Registerkarte Subscriptions können Sie die folgenden Webhooks testen:
user_validation
)payment
)Hinweis
Im Kundenportal können Sie nur die grundlegenden Webhooks vom Typ "Benutzervalidierung" und "Zahlung" testen. Wie Sie andere Webhook-Typen testen, erfahren Sie unter:
Hinweis
Damit Sie Webhooks testen können, müssen Sie unter Kundenportal > Subscriptions > Abo-Modelle mindestens eine Abo-Modell erstellt haben.
To test:
0
.Unter der angegebenen URL erhalten Sie Webhooks mit ausgefüllten Daten. Die Testergebnisse jedes Webhooks, sowohl für ein erfolgreiches Szenario als auch für ein Fehlerszenario, werden unter der Schaltfläche Webhooks testen angezeigt.
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.
Hinweis
Sie können die Pay Station PHP SDK-Bibliothek verwenden, die vorgefertigte Klassen für die Verarbeitung von Webhooks enthält.
Implementieren Sie aufseiten Ihrer Anwendung, dass Webhooks von den folgenden
IP-Adressen empfangen werden können: 185.30.20.0/24
, 185.30.21.0/24
,
185.30.23.0/24
, 34.102.38.178
, 34.94.43.207
, 35.236.73.234
,
34.94.69.44
, 34.102.22.197
.
Einschränkungen:
Während des Empfangs eines Webhooks sollten Sie die Sicherheit der Datenübertragung gewährleisten. Dazu muss aus den Webhook-Daten eine Signatur generiert und gegen die Signatur im HTTP-Anfrage-Header abgeglichen werden. So generieren Sie eine Signatur:
POST /your_uri HTTP/1.1
Host: your.host
Accept: application/json
Content-Type: application/json
Content-Length: 165
Authorization: Signature 52eac2713985e212351610d008e7e14fae46f902
{
"notification_type":"user_validation",
"user":{
"ip":"127.0.0.1",
"phone":"18777976552",
"email":"email@example.com",
"id":1234567,
"name":"Xsolla User",
"country":"US"
}
}
curl -v 'https://your.hostname/your/uri' \
-X POST \
-H 'Authorization: Signature 52eac2713985e212351610d008e7e14fae46f902' \
-d '{
"notification_type":
"user_validation",
"user":
{
"ip": "127.0.0.1",
"phone": "18777976552",
"email": "email@example.com",
"id": 1234567,
"name": "Xsolla User",
"country": "US"
}
}'
Ihr Server muss wie folgt antworten, um den Empfang eines Webhooks zu bestätigen:
If the Xsolla server did not receive a response to Successful payment of the order and Order cancellation webhooks
or received a response with a 5xx
code, the webhooks are resent according to
the following schedule:
Maximum of 20 attempts to send webhooks are made within 12 hours from the first
attempt. If the Xsolla server did not receive a response to Payment webhook or the Refund webhook, or received a response
with a 5xx
code, webhooks are also resent with an increased time interval. A
maximum of 12 attempts are made within 12 hours.
Hinweis
Wurde die Zahlungserstattung von Xsolla veranlasst und dem Webhook Erstattung mit einem HTTP-Statuscode 5xx geantwortet, wird die Zahlung trotzdem erstattet.
If the Xsolla server did not receive a response to the User validation webhook or
received a response with a code of 400
or 5xx
, the User validation webhook is not
resent. In this case, the user sees an error and the Payment and Successful payment of the order webhooks are not
sent.
Fehlercodes für den HTTP-Code 400:
Code | Nachricht |
---|---|
INVALID_USER | Ungültiger Benutzer |
INVALID_PARAMETER | Ungültiger Parameter |
INVALID_SIGNATURE | Unzulässige Signatur |
INCORRECT_AMOUNT | Ungültiger Betrag |
INCORRECT_INVOICE | Ungültige Rechnung |
HTTP/1.1 400 Bad Request
{
"error":{
"code":"INVALID_USER",
"message":"Invalid user"
}
}
Hinweis
Der Benachrichtigungstyp wird im Parameter notification_type
gesendet.
Webhook | Benachrichtigungstyp | Description |
---|---|---|
Benutzervalidierung | user_validation |
Wird versendet, um zu prüfen, ob ein Benutzer im Spiel existiert. |
Benutzersuche | user_search |
Wird versendet, um Benutzerinformationen anhand der öffentlichen Benutzer-ID abzurufen. |
Zahlung | payment |
Wird versendet, wenn ein Benutzer eine Zahlung abschließt. |
Erstattung | refund |
Wird versendet, falls eine Zahlung aus einem beliebigen Grund storniert werden muss. |
Teilerstattung | partial_refund |
Wird versendet, falls eine Zahlung aus einem beliebigen Grund teilweise storniert werden muss. |
Abgelehnte Transaktion (AFS) | afs_reject |
Wird versendet, wenn eine Transaktion während einer AFS-Prüfung abgelehnt wird. |
Aktualisierte AFS-Blockliste | afs_black_list |
Wird bei Aktualisierung der AFS-Blockliste versendet. |
Abgeschlossenes Abonnement | create_subscription |
Wird versendet, wenn ein Benutzer ein Abonnement abschließt. |
Aktualisiertes Abonnement | update_subscription |
Wird versendet, wenn ein Abonnement erneuert oder geändert wird. |
Storniertes Abonnement | cancel_subscription |
Wird versendet, wenn ein Abonnement gekündigt wird. |
Automatisch endendes Abonnement | non_renewal_subscription |
Wird versendet, wenn der Status auf "Automatisch endend" gesetzt wird. |
Zahlungskonto hinzufügen | payment_account_add |
Wird versendet, wenn ein Benutzer ein Zahlungskonto hinzufügt oder speichert. |
Zahlungskonto entfernen | payment_account_remove |
Wird versendet, wenn ein Benutzer das Zahlungskonto aus den gespeicherten Konten entfernt. |
Benutzervalidierung im Web Shop | - |
Wird von einer Web Shop-Seite gesendet, um zu prüfen, ob ein Benutzer im Spiel vorhanden ist. |
Katalogpersonalisierung aufseiten des Partners | partner_side_catalog |
Wird gesendet, wenn ein Benutzer mit dem Shop interagiert. |
Erfolgreiche Bezahlung der Bestellung | order_paid |
Wird gesendet, wenn eine Bestellung bezahlt wurde. |
Stornierung der Bestellung | order_canceled |
Wird gesendet, wenn eine Bestellung storniert wird. |
Streitfall | dispute |
Wird gesendet, wenn ein neuer Streiftall eröffnet wird. |