Verkauf von Spielschlüsseln einrichten

Sie können Spielschlüssel über einen Direktlink, die Shop-Benutzeroberfläche oder ein Widget verkaufen.

ArtikelVerkaufsmethode
Ein Exemplar von einem Spiel (der Spielschlüssel).Direktlink, Widget oder Shop-Benutzeroberfläche. Verwenden Sie beim Verkauf über die Shop-Benutzeroberfläche die Methode Schnellkauf, bei der kein Warenkorb erstellt wird.
Mehrere Exemplare von einem Spiel (die Spielschlüssel) oder mehrere Spiele im gleichen Warenkorb.Shop-Benutzeroberfläche. Verwenden Sie den Site Builder oder integrieren Sie die Shop Builder APII.

Sie können Spielschlüssel an autorisierte und nicht autorisierte Nutzer verkaufen.

Mit der Autorisierung können Sie:

Sie können Nutzer mit dem Login-Produkt oder Ihrem eigenen Berechtigungssystem autorisieren. In dieser Anleitung finden Sie alle Details zur Einrichtung.

Hinweis
Nutzer können sich den Kaufpreis für Schlüssel erstatten lassen. Nach erfolgreicher Erstattung sendet Ihnen Xsolla die Liste der betroffenen Schlüssel per E-Mail. Wir empfehlen Ihnen, diese Schlüssel auf allen Drittanbieterplattformen zu sperren.
Hinweis

Der Zugang zum Spiel wird nach dem Kauf des Spielschlüssels automatisch gewährt. Die Spielplattformen können jedoch eigene Regeln für Aktivierungsschlüssel festlegen.

Sie können den Anzeigezeitraum des Spielschlüsselpakets im Katalog begrenzen (z. B., um das Paket nur während bestimmter Feiertage zu verkaufen). Übermitteln Sie dazu das Start- und Enddatum des Verfügbarkeitszeitraums gemäß ISO 8601 im periods-Objekt des entsprechenden API-Aufrufs:

Wie Sie die Anzahl der Spielschlüssel begrenzen, die ein Nutzer maximal kaufen kann, erfahren Sie in dieser Anleitung.

Der folgende Link öffnet das Zahlungsportal:

Copy
Full screen
Small screen
    1https://purchase.xsolla.com/pages/buy?type={YOUR-ITEM-TYPE}&project_id={YOUR_PROJECT_ID}&sku={YOUR-ITEM-SKU}
    
    Hinweis

    Der Kauf von Spielschlüsseln gegen echte Währung über einen Direktlink ist nur nach Unterzeichnung der Xsolla-Lizenzvereinbarung möglich. Navigieren Sie dazu im Kundenportal zu Vereinbarungen und Steuern > Vereinbarungen, füllen Sie das Formular aus, und warten Sie auf die Bestätigung. Die Prüfung der Vereinbarung kann bis zu drei Geschäftstage dauern.

    Zahlungen können Sie in der Testumgebung testen, ergänzen Sie dazu den Link um den Parameter mode=sandbox.

    Ergänzen Sie den Link um folgende Daten:

    • YOUR-ITEM-TYPE – Artikeltyp:
      • game – Spiel; game_key – Spiel auf einer bestimmten Plattform.
      • bundle – Bundle.
    • YOUR-PROJECT-ID – ID Ihres Projekts. Diese wird im Kundenportal neben dem Projektnamen angezeigt.
    • YOUR-ITEM-SKU – SKU des Spielschlüsselpakets. Verwenden Sie die Methode Spieleliste abrufen (normalerweise sieht diese SKU wie folgt aus: unit_name_drm_sku), um die SKU abzurufen und ein Spiel auf einer bestimmten Plattform zu verkaufen.

    • Zahlungsportal-Stil: Theme (dunkel oder hell, letzteres ist voreingestellt), Größe und sonstige Parameter. Spezifizieren Sie den Parameter ui_settings in der URL, und übermitteln Sie ein settings.ui-JSON-Objekt mit einer Base64-Kodierung als Wert. Beispielhafte URL mit Benutzeroberflächeneinstellungen:
    Copy
    Full screen
    Small screen
      1https://purchase.xsolla.com/pages/buy?type={YOUR-ITEM-TYPE}&project_id={YOUR_PROJECT_ID}&sku={YOUR-ITEM-SKU}&ui_settings=ewoJCQkic2l6ZSI6ICJzbWFsbCIsCgkJCSJ0aGVtZSI6ICJkYXJrIgoJCX0=
      
      • Token zur Übermittlung von Benutzerdaten. Dient nur dazu, Spielschlüssel an authentifizierte Benutzer zu verkaufen. Dieser Token hängt von der Authentifizierungsmethode ab. Beispielhafte URL mit einem Token:
      Copy
      Full screen
      Small screen
        1https://purchase.xsolla.com/pages/buy?type={YOUR-ITEM-TYPE}&project_id={YOUR_PROJECT_ID}&sku={YOUR_ITEM_SKU}&xsolla_login_token={ACCESS_TOKEN}
        
        • Der Parameter mode=sandbox für Testzahlungen. Sie können Testbankkarten zum Abschließen der Zahlungen verwenden.
        Hinweis
        Beim Bezahlen sendet der Xsolla-Server eine Anfrage an die Webhook-URL, um zu überprüfen, ob der Nutzer im Spiel existiert. Um Fehlermeldungen bei Testzahlungen zu vermeiden, sollten Sie im Kundenportal unter Projekteinstellungen > Webhooks den Schalter auf AUS stellen. Wenn Sie Webhooks verwenden möchten, implementieren Sie die erfolgreiche Verarbeitung eines Webhooks zur Benutzervalidierung.
        1. Beispiel-URL für den Test:
        Copy
        Full screen
        Small screen
          1https://purchase.xsolla.com/pages/buy?type={YOUR-ITEM-TYPE}&project_id={YOUR_PROJECT_ID}&sku={YOUR-ITEM-SKU}&mode=sandbox
          

          Verkauf über die Shop-Benutzeroberfläche

          Sie können Spielschlüssel über die Shop-Benutzeroberfläche verkaufen. Um einen Shop zu erstellen, können Sie:

          Verkauf von Spielschlüsselpaketen über die Shop Builder API:

          1. Mit der Methode Spieleliste abrufen können Sie einen Katalog anzeigen.
          2. Implementieren Sie den Kauf von Spielschlüsseln:

          Wählen Sie eine geeignete Authentifizierungsoption, damit die Methoden korrekt funktionieren.
          Hinweis
          Wird ein Spiel über die Shop Builder API verkauft, sollten Sie eine Funktion implementieren, die es Spielern ermöglicht, im Client eine bestimmte Plattform auszuwählen. Um die SKU abzurufen, müssen Sie den Wert des Parameters items.unit_items.sku aus der Anfrage an die Methode Spieleliste abrufen übermitteln.

          Verkauf über Widget

          Sie können auf Ihrer Seite ein Widget zum Verkauf von Spielschlüsseln hinzufügen und es anpassen. Öffnen Sie nach dem Erstellen des Schlüsselpakets im Kundenportal den Abschnitt Widget-Anpassung und kopieren Sie dort den Widget-Code.

          Wird ein Spiel nur auf einer Plattform verkauft, zeigt das Widget den Preis des Spiels auf dieser Plattform an.

          Beispiel: Jetzt kaufen für 10€.

          Wird ein Spiel auf mehreren Plattformen verkauft, zeigt das Widget den niedrigsten Preis an, den es auf diesen Plattformen findet.

          Beispiel: Erhältlich ab 10€.

          Im Bestellfenster sieht der Nutzer die Preise für alle Plattformen und kann sich entscheiden.

          Sie können auch den Preis für eine bestimmte Plattform im Widget anzeigen lassen, indem Sie im Parameter DRM die SKU der Plattform eingeben.

          Beispiel für einen Widget-Code:

          Copy
          Full screen
          Small screen
           1<div id="xsolla-buy-button-widget"></div>
           2
           3<script>
           4  var options = {
           5    project_id: "101010",
           6    sku: "my_key",
           7    user: {
           8      auth: "9qs9VyCIQQXBlzJQcfETIKWZDvhi4Sz1"
           9    },
          10    drm: "steam",
          11    item_type: "unit",
          12    api_settings: {
          13      sandbox: true
          14    },
          15    widget_ui: {
          16      target_element: "#xsolla-buy-button-widget",
          17      theme: {
          18        foreground: "green",
          19        background: "light"
          20      }
          21    },
          22    payment_widget_ui: {
          23      lightbox: {
          24        height: "700px",
          25        spinner: "round"
          26      }
          27    }
          28  };
          29
          30  var s = document.createElement("script");
          31  s.type = "text/javascript";
          32  s.async = true;
          33  s.src = "https://cdn.xsolla.net/embed/buy-button/3.1.8/widget.min.js";
          34  s.addEventListener("load", function () {
          35    var widgetInstance = XBuyButtonWidget.create(options);
          36  });
          37  document.getElementsByTagName("head")[0].appendChild(s);
          38</script>
          39
          40<style>
          41  #xsolla-buy-button-widget {
          42    /* place code for button positioning here */
          43    margin: 10px;
          44  }
          45
          46  /* Styles the button itself */
          47  .x-buy-button-widget.x-buy-button-widget__tiny .x-buy-button-widget-payment-button {
          48    background-color: #ff005b;
          49    color: black;
          50  }
          51</style>
          
          Hinweis
          Widget-Parameter

          ParameterTypBeschreibung
          project_id
          integerID des Projekts, in das Spielschlüssel oder Bundles mit Spielschlüsseln, Ingame-Items oder Bundles mit Items geladen werden.
          item_type
          stringItem-Typ. Kann die Werte virtual_good,virtual_currency,game_key,unit enthalten. Der unit-Typ wird verwendet, wenn es mehrere Plattformen für die Distribution des Spiels gibt.
          sku
          stringEindeutige ID des Gegenstands.
          drm
          stringSKU der Vertriebsplattform, zum Beispiel steam. Ermöglicht die Anzeige des Preises für eine bestimmte Plattform.
          api_settings
          objectKonfigurationseinstellungen für Umgebung und Host:
          • host — Host für die Ausführung von Anfragen. Der Standardwert ist — store.xsolla.com
          • api_host — Host für die Durchführung von API-Anfragen. Der Standardwert ist — store.xsolla.com/api
          • sandbox — geben Sie den Wert true ein, um die Zahlung zu testen. sandbox-secure.xsolla.com wird anstelle von secure.xsolla.com zur Zahlungsabwicklung verwendet (siehe Zahlungen testen)
          user
          objectObjekt mit den Benutzerdaten.
          user.auth
          stringBenutzerzugriffstoken: JSON Web Token oder Zugriffstoken der Pay Station.
          user.locale
          stringRegionale Benutzereinstellungen. Bestimmt die Sprache von Schaltflächentext und Zahlungsportal. Es wird ein Sprachcode mit zwei Buchstaben verwendet, der auf ISO_639-1 basiert.
          widget_ui.theme
          objectDas Farbschema des Widgets, das sein Aussehen bestimmt. Es kann diese Werte annehmen: {foreground:[‘blue’,‘red’,‘green’,‘gold’], background:[’light’,‘dark’]}
          widget_ui.template
          stringVorlage. Mögliche Werte:
          • standard (standardmäßig) - umfasst Bilder des Spiels, den Titel und die stilisierte Schaltfläche
          • simple - zeigt nur die Schaltfläche ohne die Anwendung von Stilen an
          widget_ui.target_element
          stringElement der Seite, wo das Widget eingebaut werden sein sollte (jQuery-Selector sollte verwendet werden, zum Beispiel #widget-example). Erforderlich

          Parameter, die das Aussehen des Zahlungsportals bestimmen

          ParameterTypBeschreibung
          payment_ui
          objectParameter für das Erscheinungsbild der Zahlungsschnittstelle.
          payment_widget_ui
          objectEin Objekt, mit Parametern, das das Erscheinungsbild der Zahlungsschnittstelle bestimmt.
          payment_widget_ui.lightbox
          objectEin Objekt mit Optionen für das Modalfenster, in dem die Zahlungsschnittstelle geöffnet wird.
          payment_widget_ui.lightbox.width
          stringRahmenhöhe der Lightbox. Falls als Wert null festgelegt ist, wird die Höhe der Pay Station verwendet. Standardwert ist null.
          payment_widget_ui.lightbox.height
          stringRahmenhöhe der Lightbox. Falls als Wert null festgelegt ist, wird die Höhe der Pay Station verwendet. Standardwert ist 100%.
          payment_widget_ui.lightbox.zIndex
          integerDefiniert die Stapelanordnung. Standardwert ist 1000.
          payment_widget_ui.lightbox.overlayOpacity
          integerDeckkraft des Widget-Hintergrunds (0 – völlig transparent, 1 – völlig undurchsichtig). Der Standardwert ist 60 % (.6).
          payment_widget_ui.lightbox.overlayBackground
          stringHintergrundfarbe der Einblendung. Standardwert ist #000000.
          payment_widget_ui.lightbox.contentBackground
          stringHintergrundfarbe des Rahmens. Standardwert ist #ffffff. Beachten Sie, dass diese Farbänderungen keinen Einfluss auf den iframe der Pay Station selbst haben, sondern nur auf die Einstellungen der Lightbox, in dem der iframe angezeigt wird.
          payment_widget_ui.lightbox.spinner
          stringArt der animierten Ladeanzeige. Als Wert lässt sich entweder xsolla oder round festlegen. Standardwert ist xsolla.
          payment_widget_ui.lightbox.spinnerColor
          stringFarbe des Ladekreises. Kein Wert voreingestellt.
          payment_widget_ui.childWindow
          objectEinstellungen für das untergeordnete Fenster, in welchem die Zahlungsschnittstelle geöffnet ist. Funktioniert für die mobile Version.
          payment_widget_ui.childWindow.target
          stringDie Eigenschaft, die bestimmt, wo das untergeordnete Fenster geöffnet werden soll. Es kann die Werte _blank, _self, _parent enthalten. Der Standardwert ist — _blank.

          Widget-Methoden

          • var widgetInstance = XBuyButtonWidget.create(options) — erstellen Sie die Widget-Instanz und bauen Sie sie in die Seite ein.
          • widgetInstance.on(event, handler) — fügt einen Event-Handler für das Ereignis an das Widget an.
            • event (string) - Ereignistyp.
            • handler (function) — eine Funktion, die ausgeführt wird, wenn das Ereignis ausgelöst wird.
          • widgetInstance.off(event, handler) — entfernt einen Event-Handler.
            • event (string) — Ereignistyp.
            • handler (function) — eine Handler-Funktion, die zuvor für das Ereignis angehängt wurde.

          Liste der Ereignisse:

          ParameterBeschreibung
          initWidget initialisiert.
          openWidget geöffnet.
          loadZahlungsportal (Pay Station) geladen.
          closeZahlungsportal (Pay Station) geschlossen.
          statusBenutzer befindet sich auf der Statusseite.
          status-invoiceBenutzer befindet sich auf der Statusseite; Zahlung im Gange.
          status-deliveringBenutzer befindet sich auf der Statusseite; Zahlung abgeschlossen; Zahlungsbestätigung wurde versendet.
          status-doneBenutzer befindet sich auf der Statusseite, Zahlung wurde dem Benutzerkonto gutgeschrieben.
          status-troubledBenutzer befindet sich auf der Statusseite; Zahlung fehlgeschlagen.

          Sie können auf die Ereignisliste zugreifen, indem Sie das Objekt XBuyButtonWidget.eventTypes verwenden.

          Individualisieren von Schaltflächen

          1. Öffnen Sie Ihr Projekt im Kundenportal, und navigieren Sie zum Menüpunkt Artikelkatalog > Spielschlüssel.
          2. Wählen Sie einen Spielschlüssel aus, und wechseln Sie zur Registerkarte Widget-Anpassung.
          Hinweis
          Erstellen Sie einen neuen Spielschlüssel, falls es noch keinen gibt.
          1. Wählen Sie im Abschnitt Anpassen die Hintergrundfarbe aus.
          Hinweis
          Sie können auch das Objekt theme im Code ändern, damit der Parameter background einen leeren String als Wert hat.
          1. Wenn Sie den Widget Code zu Ihrer Seite hinzufügen, enthält er vererbte Stile. Fügen Sie die Stile unten ein, um diese Stile überschreiben zu können.
          Achtung
          Fügen Sie diese einem style unter dem script zu, den Sie auf der Registerkarte Widget-Anpassung aus Gründen der CSS-Vererbung/Priorität erhalten haben.
          Copy
          Full screen
          Small screen
           1/* This should be used for button positioning but note this technically repositions the entire widget */
           2#xsolla-buy-button-widget {
           3  /* place code for button positioning here */
           4}
           5
           6/* Styles the button itself */
           7.x-buy-button-widget.x-buy-button-widget__tiny
           8  .x-buy-button-widget-payment-button {
           9  background-color: #ff005b;
          10  color: black;
          11}
          12
          13/* Button on hover */
          14.x-buy-button-widget.x-buy-button-widget__tiny
          15  .x-buy-button-widget-payment-button:hover {
          16  background-color: #ff005b;
          17}
          18
          19/* The following are style overrides to leave you with just the button */
          20
          21/* space immediately surrounding button */
          22.x-buy-button-widget-button-block.x-buy-button-widget-button-block__light {
          23  background-color: white;
          24}
          25
          26/* space above button (including game title area) */
          27.x-buy-button-widget.x-buy-button-widget__tiny
          28  .x-buy-button-widget-game-logo {
          29  height: 200px;
          30  background-image: none !important;
          31  background-color: white;
          32}
          33
          34 /* Game title (located right above button) */
          35.x-buy-button-widget-game-name.x-buy-button-widget-game-name__light {
          36  display: none !important;
          37}
          
          Achtung
          • Die obengenannten Namen und der Codeschnipsel werden in Verbindung mit dem kopierten Widget-Code (das Bild bei Schritt 5) verwendet. Deswegen ist es wichtig, dass die den kopierten Widget-Code implementieren.
          • Sie können den oben genannten Code so verwenden, wie er ist, oder ihn auf Ihr Szenario anpassen. Die Code-Kommentare (Zeilen 1, 3, 5, 11, 16, 18, 22, 29) sind dazu da, um festzulegen, worauf die einzelnen CSS-Regeln ausgerichtet sind, und helfen bei der künftigen Gestaltung. Wenn Sie z. B. nur die Schaltfläche (und nicht das gesamte Widget) haben möchten, müssen Sie die Hintergrundfarbe Ihrer Seite an den folgenden Stellen ersetzen, wo die Farbe ist white — Zeilen 20 und 27.

          So erstellen Sie mehrere Schaltflächen oder SKUs.

          Sie können unter Xsolla Pay2Play-Widget - einfache Integration von 4 Schaltflächen ein Code-Muster für die Erstellung mithilfe des Pay2Play Widgets finden.

          Die Struktur ist ähnlich wie beim Code für das Kaufschaltflächen-Widget. Hier ein Beispiel für eine Migration:

          Copy
          Full screen
          Small screen
           1<div id="xsolla-buy-button-widget"></div>
           2<div id="xsolla-buy-button-widget-2"></div>
           3
           4<script>
           5  var options = {
           6    project_id: "191204",
           7    sku: "789",
           8    item_type: "unit",
           9    api_settings: {
          10      sandbox: false
          11    },
          12    widget_ui: {
          13      target_element: "#xsolla-buy-button-widget",
          14      theme: {
          15        foreground: "gold",
          16        background: ""
          17      }
          18    },
          19    payment_widget_ui: {
          20      lightbox: {
          21        height: "700px",
          22        spinner: "round"
          23      }
          24    }
          25  };
          26
          27  // options for second buy button - note the different SKU and target_element
          28  var options2 = {
          29    project_id: "191204",
          30    sku: "123",
          31    item_type: "unit",
          32    api_settings: {
          33      sandbox: false
          34    },
          35    widget_ui: {
          36      target_element: "#xsolla-buy-button-widget-2",
          37      theme: {
          38        foreground: "gold",
          39        background: ""
          40      }
          41    },
          42    payment_widget_ui: {
          43      lightbox: {
          44        height: "700px",
          45        spinner: "round"
          46      }
          47    }
          48  };
          49
          50  var s = document.createElement("script");
          51  s.type = "text/javascript";
          52  s.async = true;
          53  s.src = "https://cdn.xsolla.net/embed/buy-button/3.1.4/widget.min.js";
          54
          55  // one event listener per widget instance. repeat for more buttons, passing in different SKUs
          56  s.addEventListener("load", function () {
          57    var widgetInstance = XBuyButtonWidget.create(options);
          58  });
          59  s.addEventListener("load", function () {
          60    var widgetInstance2 = XBuyButtonWidget.create(options2);
          61  });
          62
          63  document.getElementsByTagName("head")[0].appendChild(s);
          64</script>
          
          Achtung
          • Zeilen 1 und 2 - ein div pro Schaltfläche, jede mit einer eindeutigen ID.
          • Beginnend mit Zeile 26 sind die Optionen für die zweite Schaltfläche (festgelegt im options2-Objekt) zu finden. Sie benötigen einen Satz von options, wie diejenigen im obigen Beispiel für jede Kauf-Schaltfläche. Achten Sie auf die Unterschiede im sku (Zeile 28) und target_element (Zeile 34, mit Ziel auf div in Zeile 2).
          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.
          Letztmalig aktualisiert: 19. September 2025

          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!
          Ihr Feedback konnte nicht gesendet werden
          Versuchen Sie es später erneut oder kontaktieren Sie uns unter doc_feedback@xsolla.com.