Überblick
Die Xsolla-API umfasst die:
- Pay Station API – Zahlungsportal und Tokenisierungsmethoden.
- IGS API – Methoden für die Arbeit mit dem Modul In-Game Store.
- Subscriptions API – Methoden für Abonnements.
- Login API – Methoden für die Benutzerauthentifizierung über Ihre eigene Benutzeroberfläche (siehe Integrationsleitfaden).
Die API nutzt integrierte HTTP-Funktionen wie HTTP-Authentifizierung und HTTP-Methoden, die von gängigen HTTP-Clients interpretiert werden können. Die Schnittstelle unterstützt Cross-Origin Resource Sharing und gestattet Ihnen dadurch den sicheren Zugriff auf die API über eine clientseitige Webanwendung.
Die Xsolla-API nutzt folgende Endpunktpfade:https://api.xsolla.com
– Pay Station API, Subscriptions APIhttps://login.xsolla.com/api
– Login APIhttps://store.xsolla.com/api
— IGS API
Anfragen und Antworten
Die Anfragen an die Xsolla-API müssen:- über HTTPS gesendet werden,
- TLS 1.2 oder höher nutzen,
- Parameter zur Authentifizierung enthalten,
- einen zusätzlichen Header für PUT- und POST-Anfragen aufweisen:
Content-Type: application/json
.
Authorization: Basic <your_authorization_basic_key>
Content-Type: application/json
Standardmäßig folgt auf sämtliche Anfragen eine Antwort samt JSON-Daten im Body und Content-Type: application/json
im Header.
API-Änderungen
Xsolla kann die API-Funktionalität folgendermaßen ändern:- Neue API-Ressourcen hinzufügen;
- Optionale Anfrageparameter hinzufügen;
- Bestehenden API-Antworten neue Eigenschaften hinzufügen;
- Bestehenden Parametern, die über zählbare Werte verfügen, neue Werte hinzufügen;
- Neue Arten von Webhooks und neue JSON-Parameter hinzufügen;
- Optionale HTTP-Anfrage-Header hinzufügen;
- Anfragen, bei denen gültigen Parametern ungültige Werte zugeordnet wurden, ablehnen.
- Unzulässig formatierte Anfragen, welche zuvor aufgrund von tolerantem Parsing akzeptiert wurden, ablehnen, falls sich die Logik des Parsers geändert hat.
- Undokumentierte Funktionen jederzeit hinzufügen, ändern oder entfernen
Versionierung
Alle Xsolla-API-Methoden unterstützen Versionierung. Wir werden immer dann eine neue Version veröffentlichen, wenn es Änderungen gibt, die mit der aktuellen Version nicht kompatibel sind. Die Version ist in der URL durch die Angabe von “v1”/“v2”/usw., welche auf das Präfix “/merchant” folgt, identifizierbar. Nutzen Sie bitte die neuste Version, falls Sie das erste Mal mit der API arbeiten. Wenn Sie die Versionsangabe weglassen, verwenden wir standardmäßig die erste Version.Authentifizierung
Die Xsolla-API verwendet die folgenden Authentifizierungstypen:- Basisauthentifizierung. Solche API-Anfragen müssen den Header
Authorization: Basic <your_authorization_basic_key<
enthalten, wobei<your_authorization_basic_key>
das Paar Händler-ID:API-Schlüssel ist, das gemäß dem Base64-Standard codiert ist. Diese Parameter finden Sie im Kundenportal:- Die Händler-ID wird an den folgenden Orten angezeigt:
- unter Firmeneinstellungen > Firma.
- in der URL in der Adresszeile des Browsers auf einer beliebigen Seite im Kundenportal. Die URL weist das folgende Format auf:
https://publisher.xsolla.com/<merchant ID>/<Publisher Account section>
.
- Der API-Schlüssel wird im Kundenportal nur einmal angezeigt, nämlich dann, wenn er erstellt wird. Sie sind selbst dafür verantwortlich, den Schlüssel zu speichern. Einen neuen Schlüssel können Sie in den folgenden Abschnitten erstellen:
- Firmeneinstellungen > API-Schlüssel
- Projekteinstellungen > API-Schlüssel
- Die Händler-ID wird an den folgenden Orten angezeigt:
- Authentifizierung über den Benutzer-JWT. Solche Anfragen an die API müssen den Header
Authorization: Bearer <user_JWT>
enthalten, wobei<user_JWT>
der Nutzertoken ist. - Authentifizierung über den Server-JWT. Solche API-Methoden müssen den Header
X-SERVER-AUTHORIZATION: <server_JWT>
enthalten, wobei<server_JWT>
der Servertoken ist. - Ohne Authentifizierung.
Weitere Informationen über die Arbeit mit API-Schlüsseln finden Sie in der API-Referenz.
Wichtige Empfehlungen:
- Sie sind selbst dafür verantwortlich, den generierten API-Schlüssel zu speichern. Der API-Schlüssel wird im Kundenportal nur einmal angezeigt, nämlich dann, wenn er erstellt wird.
- Halten Sie Ihren API-Schlüssel geheim. Er gewährt den Zugang zu Ihrem persönlichen Konto und Ihren Projekten im Kundenportal.
- Der API-Schlüssel muss auf Ihrem Server gespeichert sein, niemals in Binärdateien oder im Frontend.
Wenn ein API-Aufruf, den Sie benötigen, nicht den Pfadparameter project_id
enthält, verwenden Sie den API-Schlüssel, der in allen Projekten des Unternehmens gültig ist, um die Autorisierung einzurichten.
API-Aufrufe nach Interaktionsmodell
Wenn Sie Xsolla-Produkte über die Xsolla-API integrieren, müssen Sie die API-Aufrufe entsprechend ihrem Bestimmungszweck verwenden:- Clientseitige API-Aufrufe: API-Aufrufe für die Interaktion zwischen dem Anwendungs-Client des Partners und dem Xsolla-Server. Nutzeraktionen auf dem Client lösen den API-Aufrufe aus. Clientseitige API-Aufrufe (Beispiel): Liste von Gegenständen abrufen, Nutzer authentifizieren, Zahlungstoken vom Client abrufen.
- Serverseitige API-Aufrufe: API-Aufrufe für die Interaktion zwischen dem Server des Partners und dem Xsolla-Server. Diese Aufrufe sind für die folgenden Aufgaben vorgesehen:
- Implementation des Nutzerablaufs.
Nutzeraktionen auf dem Client bewirken einen API-Aufruf aufseiten des Partner-Clients, woraufhin Xsollas serverseitiger API-Aufruf aufseiten des Partner-Servers aufgerufen wird.Serverseitige API-Aufrufe für die Implementierung des Nutzerablaufs: Benutzerattribute auf dem Server aktualisieren, Zahlungstoken vom Server abrufen. - Administrative Aufgaben oder Einrichtung von Xsolla-Produkten durch den Partner.
Nutzeraktionen auf dem Client können keinen Aufruf dieser Methoden bewirken. Administrativer serverseitiger API-Aufruf (Beispiel): Artikel oder Werbeaktion erstellen und bearbeiten.
- Implementation des Nutzerablaufs.
- Überschreitung der Ratenbegrenzungen:
- Die Ratenbegrenzungen für serverseitige API-Aufrufe sind strenger als für clientseitige API-Aufrufe.
- Die Ratenbegrenzungen für administrative serverseitige API-Aufrufe sind strenger als für API-Aufrufe zur Implementierung des Nutzerablaufs.
- Empfang irrelevanter Informationen in der Antwort. Zum Beispiel, wenn Sie serverseitige API-Aufrufe verwenden, um eine Liste von Artikeln für den Administrator abzurufen, anstatt clientseitige API-Aufrufe zu verwenden, um eine Liste von Artikeln für die Erstellung eines Katalogs abzurufen.
- Nicht autorisierte Datenänderungen durch die Nutzer. Zum Beispiel, wenn clientseitige API-Aufrufe zur Aktualisierung von Attributen verwendet werden, anstelle von serverseitigen API-Aufrufen.
- Falsch ermitteltes Land oder falsch ermittelte Währung im Zahlungsportal.
Clientseitig | Serverseitig | ||
---|---|---|---|
Für die Implementierung des Nutzerablaufs | Für administrative Aufgaben | ||
Interaktion | Client-zu-Server. Die Anfrage wird vom Spiel-Client direkt an den Xsolla-Server gesendet. | Server-zu-Server. Die Anfrage wird vom Spiel-Client an den Spielserver und dann vom Spielserver an den Xsolla-Server gesendet. | Server-zu-Server. Die Anfrage wird vom Server des Partnersystems an den Xsolla-Server gesendet. |
Authentifizierung | JSON Web Token (JWT) des Nutzers oder ohne Authentifizierung. | Basisauthentifizierung oder Server-JWT. | Basisauthentifizierung. |
Ratenbegrenzungen | Kann hohe Last aushalten. | Kann hohe Last aushalten | Diese API-Aufrufe haben nur geringe Leistungsanforderungen und strenge Ratenbeschränkungen und sollten daher nur von Partnern verwendet werden. |
Nutzerzugriff | API-Aufrufe erfolgen clientseitig, dadurch können die Daten (z. B. ein Artikelkatalog oder Benutzerattribute wie etwa die Anzahl der Käufe oder das im Spiel erreichte Level) dem Nutzer schnell angezeigt werden. Alle Daten sind im Code des Clients öffentlich zugänglich. Für die Arbeit mit Daten, die vom Nutzer nicht verändert werden sollen (z. B. Benutzerattribute), dürfen diese API-Aufrufe nicht verwendet werden. | API-Aufrufe werden für die Interaktion zwischen Servern verwendet, der Nutzer hat also keinen Zugriff auf die Daten. Verwenden Sie diese API-Aufrufe, um mit Daten zu arbeiten, die der Nutzer nicht ändern kann. | API-Aufrufe dienen nicht dazu, die Ablauf für die Nutzer zu implementieren. |
Land und Währung ermitteln | Das Land und die Währung werden anhand der IP-Adresse des Clients ermittelt, von dem die Anfrage gesendet wird. Deshalb ist es wichtig, diese API-Aufrufe clientseitig aufzurufen anstatt serverseitig. | Das Land und die Währung werden anhand der IP-Adresse des Servers ermittelt, von dem die Anfrage gesendet wird. Deshalb ist es wichtig, die Daten des Landes bzw. der Währung des Nutzers im Header oder Parameter gemäß der Beschreibung im verwendeten API-Aufruf zu übermitteln. | API-Aufrufe dienen nicht dazu, die Ablauf für die Nutzer zu implementieren. |
Ob ein API-Aufruf client- oder serverseitig erfolgt, können Sie anhand des Authentifizierungsschemas feststellen:
- Clientseitige Aufrufe werden ohne Authentifizierung oder mit dem Header
Authorization header: Bearer <user_JWT>
aufgerufen, wobei<user_JWT>
der Benutzertoken ist. - Serverseitige API-Aufrufe zur Implementierung des Nutzerablaufs werden mit einem der folgenden Header aufgerufen:
X-SERVER-AUTHORIZATION: <server_JWT>
, wobei<server_JWT>
der Servertoken ist, undAuthorization: Basic <your_authorization_basic_key>
, wobei<your_authorization_basic_key>
dasproject_id:api_key
-Paar ist, kodiert gemäßg dem Base64-Standard.
- Serverseitige API-Aufrufe für administrative Aufgaben werden mit dem Header
Authorization: Basic <your_authorization_basic_key>
aufgerufen, wobei<your_authorization_basic_key>
dasproject_id:api_key
-Paar ist, kodiert gemäßg dem Base64-Standard.
Serverseitige API-Aufrufe mit serverseitiger Authentifizierung (Beispiel):
Clientseitige API-Aufrufe mit clientseitiger Authentifizierung (Beispiel):
Je nach Ihren Anforderungen können Sie bei der Implementierung des Nutzerablaufs wählen, wie die Integration erfolgen soll: entweder mit serverseitigen oder clientseitigen API-Aufrufen. Es wird davon abgeraten, serverseitige administrative API-Aufrufe zur Implementierung des Nutzerablauf zu verwenden.
Implementierung eines Nutzerablaufs mithilfe von clientseitigen API-Aufrufen (Beispiel):
- Der Nutzer führt Aktionen auf dem Client aus, z. B.: legt er einen Artikel in den Warenkorb und kauft den Artikel.
- Der Spiel-Client sendet eine Anfrage samt Daten an den Xsolla-Server.
- Der Xsolla-Server antwortet dem Spiel-Client.
- Der Spiel-Client zeigt dem Nutzer das Ergebnis an.
Bei diesem Ablauf erfolgt die Authentifizierung über den Benutzer-JWT.
Implementierung eines Nutzerablaufs mithilfe von serverseitigen API-Aufrufen (Beispiel):
- Der Nutzer führt Aktionen auf dem Client aus, z. B.: legt er einen Artikel in den Warenkorb und kauft den Artikel.
- Der Spiel-Client sendet eine Anfrage an den Spielserver.
- Falls erforderlich, verarbeitet der Partner zusätzliche Daten auf dem Spielserver.
- Der Spielserver sendet eine Anfrage an den Xsolla-Server.
- Der Xsolla-Server antwortet dem Spielserver.
- Der Spielserver verarbeitet die Daten und antwortet dem Spiel-Client.
- Der Spiel-Client zeigt dem Nutzer das Ergebnis an.
Bei diesem Ablauf kommt die Basisauthentifizierung oder ein Servertoken zum Einsatz.
Interaktionsablauf bei Nutzung von serverseitigen administrativen API-Aufrufen:
- Der Partner sendet eine Anfrage von seinem Anwendungs-Client oder ‑Server an den Xsolla-Server.
- Der Xsolla-Server antwortet mit dem Ergebnis der verarbeiteten Anfrage.
Endpunkttypen
Der Endpunkttyp gibt an, welche Art von Daten der Endpunkt verarbeitet und welche Aktionen ausgeführt werden. Die häufigsten Aktionen sind:Aktion | HTTP-Methode | Beschreibung |
---|---|---|
Erstellen | POST | Erstellt und speichert eine Entität des angegebenen Typs. |
Auflisten | GET | Liefert eine Liste von Entitäten, die der Anfrage entsprechen. Um Details zu einer Entität anzufordern, muss zuerst deren ID mit Hilfe des Endpunkttyps “Auflisten” bestimmt werden. Danach muss diese ID am entsprechenden Endpunkt (Typ: “Abrufen”) bereitgestellt werden. |
Abrufen | GET | Liefert detaillierte Angaben zur Entität mit der angegebenen ID. |
Ersetzen | PUT | Modifiziert alle Felder der Entität mit der angegebenen ID. |
Aktualisieren | PATCH | Modifiziert bestimmte Felder der Entität mit der angegebenen ID. |
Löschen | DELETE | Löscht die Entität mit der angegebenen ID. |
Datumsformat
Alle Datumsangaben sind spezifiziert als Strings gemäß ISO 8601. Sie können die Datumstrings entweder als UTC (z. B.: 2013-01-15T00:00:00Z) angeben oder die Abweichung von der UTC anzeigen lassen Im letzteren Fall ist darauf zu achten,dass gegebenenfalls die Sommerzeit berücksichtigt werden muss.Paginierung
Endpunkte des Typs “Auflisten” können die gelieferten Ergebnisse paginieren. Anstelle alle Ergebnisse in einer einzigen Antwort zu versenden Können diese Endpunkte einige der Ergebnisse gemeinsam mit einem Antwort-Header zurückgeben, welcher zu den nächsten Ergebnissen verlinkt. Zu diesem Zweck verwenden wir Offset- und Limit-Parameter.Fehlerbehandlung
Liste der unterstützten HTTP-Statuscodes:- 200, 201, 204 – Kein Fehler.
- 400 Bad Request – Weist oftmals darauf hin, dass ein erforderlicher Parameter fehlt. Weitere Informationen finden Sie im Nachrichtenrumpf.
- 401 Unauthorized – Kein gültiger API-Schlüssel bereitgestellt.
- 402 Request Failed – Anfrage trotz gültiger Parameter fehlgeschlagen.
- 403 Forbidden – Keine Berechtigung. Weitere Informationen finden Sie im Nachrichtenrumpf.
- 404 Not Found – Die angeforderte Ressource konnte nicht gefunden werden.
- 409, 422 – Ungültige Anfrageparameter.
- 412 Precondition Failed – Das Projekt wurde noch nicht aktiviert (wird bei der Token erstellen-Methode verwendet).
- 415 Unsupported Media Type – Im HTTP-Header fehlt die Angabe
Content-Type: application/json
. - 500, 502, 503, 504 Server Errors – Etwas ist schiefgelaufen.
422
zurückgeben, falls eine Anfrage gültig war, aber fehlgeschlagen ist.
Alle API-Fehlerrückmeldungen liefern ein JSON-Objekt mit folgenden Feldern:Bezeichnung | Typ | Beschreibung |
---|---|---|
http_status_code | integer | HTTP-Code. |
message | string | Eine für Menschen verständliche Meldung, welche den Fehler beschreibt. Diese Nachricht wird immer in englischer Sprache ausgegeben. Verlassen Sie sich bei einem bestimmten Fehler nicht auf die Aussagekraft der Meldung, da sich diese Nachricht in Zukunft ändern könnte. |
extended_message | string | Detailliertere Fehlerbeschreibung. |
request_id | string | Eindeutige Request-ID, die wir eventuell für die Fehlersuche verwenden können. |
- http
{
"http_status_code": 500,
"message": "Internal Server Error",
"extended_message": null,
"request_id": "6445b85"
}
Ratenbegrenzungen
Allgemeine Informationen
Um Xsolla-Systeme nicht zu überlasten und vor einer Flut von eingehendem Traffic zu schützen, begrenzt Xsolla die von der Xsolla-API empfangenen Anfragen innerhalb eines bestimmten Zeitraums. Wird das Limit überschritten, antwortet die Xsolla-API mit dem HTTP-Statuscode429
.
Die Limits variieren je nach Methode, Projekt und anderen Faktoren. Die aktuellen Limits werden regelmäßig aktualisiert, damit die Xsolla-Systeme stabil und störungsfrei laufen. In einigen Fällen ist es möglich, die angegebenen Limits auf Anfrage anzupassen. Wenden Sie sich dazu an Ihren Customer Success Manager oder senden Sie eine E-Mail an csm@xsolla.com.Häufige Ursachen für die Überschreitung der Ratenbegrenzungen
- Eine plötzliche Zunahme des Traffics aufseiten des Partners infolge von:
- saisonalen Sales
- Beginn einer geschlossenen und offenen Testphase
- Eine plötzliche Zunahme des Traffics infolge von DDoS-Angriffen aufseiten des Partners.
- Falsch konfigurierte Integration, zum Beispiel:
- Verwendung von Methoden der Untergruppe Verwaltung, die nicht für den häufigen Gebrauch gedacht sind, anstelle der Methoden der Untergruppe Katalog
- häufiger Aufruf der Methode Bestellung abrufen, um den Status einer Bestellung und die Liste der darin enthaltenen Artikel abzurufen. Zum Beispiel: 1 pro Sekunde, obwohl die empfohlene Verzögerung zwischen den Anfragen 3 Sekunden betragen sollte
- Übermäßig viele Anfragen innerhalb eines bestimmten Zeitraums. Zum Beispiel: mehr als 200 Aufrufe pro Sekunde an die Methode Liste virtueller Gegenstände abrufen zur Anzeige eines Artikelkatalogs.
Handhabung von Ratenbegrenzungen
Um durch die Ratenbegrenzungen verursachte Fehler zu vermeiden, empfehlen wir Folgendes:- Tracken Sie den Statuscode
429
, und erstellen Sie einen Wiederholungsmechanismus. Sie können das Wiederholungsmuster mit festem oder exponentiellem Backoff zwischen den Wiederholungen verwenden, anstelle von kontinuierlichen Wiederholungen. - Optimieren Sie den Code so, dass nur die erforderlichen Daten abgerufen werden. Senden Sie nur Anfragen, die Ihre Anwendung benötigt, und vermeiden Sie unnötige API-Aufrufe. Wenn Sie die IGS API verwenden, können Sie mithilfe der WebSocket API die Anzahl der Aufrufe reduzieren.
- Zwischenspeichern Sie Daten, die häufig von Ihrer Anwendung verwendet werden. Die statischen Daten sollten Sie in einem eigenen Speicher hinterlegen und die Anzahl der Anfragen an die externe API reduzieren.
- Verhindern Sie DDoS-Angriffe, die Ihre API lahmlegen können.
- Passen Sie die Rate an, um eine gleichmäßigere Distribution zu erreichen. Tritt der Fehlercode
429
regelmäßig auf, sollten Sie einen Prozess in Ihren Code einbauen, der reguliert, in welchen zeitlichen Abständen Anfragen gesendet werden.
API-Schlüssel
Ein API-Schlüssel ist ein eindeutiger Schlüssel und dient dazu, Nutzerdaten zu verschlüsseln und API-Anfragen zu authentifizieren. Im Kundenportal können Sie API-Schlüssel für alle oder einzelne Firmenprojekte erstellen.
Um mit API-Schlüsseln zu arbeiten (Schlüsselliste anzeigen, Schlüssel erstellen und löschen), muss Ihnen eine der folgenden Rollen zugewiesen sein:
- Entwickler
- Inhaber
Nur ein Projektinhaber kann Rollen im Kundenportal unter Firmeneinstellungen > Nutzer ändern.
API-Schlüssel erstellen
So erstellen Sie einen API-Schlüssel:- Öffnen Sie das Kundenportal.
- Navigieren Sie zu Firmeneinstellungen > API-Schlüssel oder Projekteinstellungen > API-Schlüssel.
- Klicken Sie auf API-Schlüssel erstellen.
- Füllen Sie die folgenden Felder aus:
- Schlüsselname, dieser wird in der Schlüsselliste angezeigt. Vergeben Sie einen leicht zu identifizierenden Namen.
- Schlüsseltyp – dauerhaft oder temporär.
- Ablaufdatum – nur bei temporären Schlüsseln. Nach dem Ablaufdatum ist der Schlüssel nicht mehr gültig, Sie müssen einen neuen Schlüssel erstellen.
- Projekt, für das der Schlüssel gültig ist (sollten Sie einen API-Schlüssel auf der Projektseite erstellt haben, wird dieses Feld nicht angezeigt). Standardmäßig sind alle Projekte ausgewählt.
- Klicken Sie auf Erstellen.
- Klicken Sie im sich daraufhin öffnenden Fenster auf API-Schlüssel kopieren, und speichern Sie den erstellten API-Schlüssel bei sich ab.
Wichtige Empfehlungen:
- Sie sind selbst dafür verantwortlich, den generierten API-Schlüssel zu speichern. Der API-Schlüssel wird im Kundenportal nur einmal angezeigt, nämlich dann, wenn er erstellt wird.
- Halten Sie Ihren API-Schlüssel geheim. Er gewährt den Zugang zu Ihrem persönlichen Konto und Ihren Projekten im Kundenportal.
- Der API-Schlüssel muss auf Ihrem Server gespeichert sein, niemals in Binärdateien oder im Frontend.
Wenn ein API-Aufruf, den Sie benötigen, nicht den Pfadparameter project_id
enthält, verwenden Sie den API-Schlüssel, der in allen Projekten des Unternehmens gültig ist, um die Autorisierung einzurichten.
API-Schlüssel löschen
So löschen Sie einen API-Schlüssel:- Öffnen Sie das Kundenportal.
- Navigieren Sie zu Firmeneinstellungen > API-Schlüssel oder Projekteinstellungen > API-Schlüssel.
- Klicken Sie in der Zeile des gewünschten API-Schlüssels auf das Papierkorb-Symbol, und bestätigen Sie die Aktion.
- lassen sich keine Zahlungen mehr in den Projekten entgegennehmen, in denen dieser API-Schlüssel verwendet wurde;
- lassen sich keine API-Methoden mehr aufrufen, die diesen API-Schlüssel verwendet haben.
- Erstellen Sie einen neuen API-Schlüssel.
- Aktualisieren Sie die API-Schlüssel in Ihren Anwendungen.
- Löschen Sie den ursprünglichen API-Schlüssel.
Webhooks
Webhooks ermöglichen es, Sofortbenachrichtigungen über konfigurierte Ereignisse aufseiten von Xsolla zu erhalten. Sie können die Verarbeitung der Webhooks einrichten und so Ihre Anwendung automatisieren. In unserer Dokumentation finden Sie eine Liste der verfügbaren Webhooks und detaillierte Beschreibungen ihrer Funktionsweise.
Haben Sie einen Tippfehler oder einen anderen Textfehler gefunden? Wählen Sie den Text aus und drücken Sie Strg+Eingabe.