# Zahlungstoken für den Kauf erstellen

Generiert eine Bestellung und den zugehörigen Zahlungstoken. Die Bestellung wird auf Grundlage der im Anfragerumpf übermittelten Artikel generiert.

Nutzen Sie den folgenden Link, um das Zahlungsportal in einem neuen Fenster aufzurufen: https://secure.xsolla.com/paystation4/?token={token}, wobei {token} der erhaltene Token ist.

Für Testzwecke steht Ihnen die folgende URL zur Verfügung: https://sandbox-secure.xsolla.com/paystation4/?token={token}.

Hinweis
   
   Damit die Methode ordnungsgemäß funktioniert, müssen Sie entweder den Parameter user.country.value (Ländercode) oder den X-User-Ip-Header (die IPv4-Adresse des Nutzers, falls das Land unbekannt ist) übermitteln. Anhand der übermittelten Daten wird die Zahlungswährung ermittelt. IPv6-Adressen werden nicht unterstützt.  Die ausgewählte Währung wird für die Zahlungsmethoden im Xsolla-Zahlungsportal verwendet.

Endpoint: POST /v3/project/{project_id}/admin/payment/token
Version: 2.0.0
Security: basicAuth

## Path parameters:

  - `project_id` (integer, required)
    Projekt-ID. Dieser Parameter wird im Kundenportal neben dem Projektnamen angezeigt sowie in der Adressleiste des Browsers, wenn Sie im Kundenportal ein Projekt geöffnet haben. Die URL hat das folgende Format: https://publisher.xsolla.com//projects/.
    Example: 44056

## Request fields (application/json):

  - `sandbox` (boolean)
    Stellen Sie den Wert auf true, um den Bezahlvorgang zu testen. Verwenden Sie in diesem Fall https://sandbox-secure.xsolla.com, um auf die Benutzeroberfläche für Testzahlungen zuzugreifen.

  - `user` (object, required)

  - `user.id` (object, required)

  - `user.id.value` (string)
    Benutzer-ID. Zum Testen können Sie einen beliebigen Wert übermitteln. Um echte Zahlungen entgegenzunehmen, müssen Sie die Benutzer-ID aus Ihrem System angeben. Diese ID ist im Webhook [Benutzervalidierung](https://developers.xsolla.com/de/webhooks/operation/user-validation/) zu übermitteln.

  - `user.name` (object)

  - `user.name.value` (string)
    Benutzername.

  - `user.email` (object)

  - `user.email.value` (string)
    E-Mail-Adresse des Nutzers. Muss gemäß dem Protokoll RFC 822 gültig sein.

  - `user.country` (object)

  - `user.country.value` (string)
    Zweistelliger Ländercode in Großbuchstaben gemäß [ISO 3166-1 Alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Ist erforderlich, wenn die IP-Adresse im X-User-Ip-Header nicht übermittelt wurde. Weitere Informationen zu den [von Xsolla unterstützten Ländern](https://developers.xsolla.com/de/doc/shop-builder/references/supported-countries/) finden Sie in der Dokumentation.Beispiel: country=US
    Example: "US"

  - `user.country.allow_modify` (boolean)
    Legt fest, ob der Nutzer das Land im Zahlungsportal ändern kann oder nicht.

  - `user.age` (integer)
    Alter des Nutzers.

  - `user.phone` (object)

  - `user.phone.value` (string, required)
    Telefonnummer des Nutzers.

  - `user.phone.allow_modify` (boolean)
    Legt fest, ob ein Nutzer die Telefonnummer im Zahlungsportal ändern darf. Wenn phone.value im Token übermittelt wird, ist der Wert standardmäßig auf false gestellt.

  - `user.phone.hidden` (boolean)

  - `user.tracking_id` (object)

  - `user.tracking_id.value` (string, required)
    Eindeutige Tracking-ID (wird in Marketingkampagnen verwendet).

  - `user.steam_id` (object)

  - `user.steam_id.value` (string, required)
    Steam-ID.

  - `user.is_legal` (boolean)
    Legt fest, ob der Nutzer eine juristische Person ist.

  - `user.legal` (object)
    Objekt mit Angaben zur juristischen Person. Objekt und alle seine Parameter sind erforderlich, falls für user.is_legal true festgelegt ist.

  - `user.legal.name` (string)
    Vollständiger Name des Unternehmens.

  - `user.legal.address` (string)
    Vollständige Unternehmensanschrift.

  - `user.legal.vat_id` (string)
    Steuerliche Identifikationsnummer.

  - `user.legal.country` (string)
    Land des Unternehmenssitzes. Ländercode, bestehend aus zwei Großbuchstaben gemäß [ISO 3166-1 ALPHA-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).

  - `purchase` (object, required)

  - `purchase.items` (array, required)

  - `purchase.items.sku` (string, required)
    Eindeutige Artikel-ID. Die SKU darf nur lateinische Klein- und Großbuchstaben, Ziffern, Punkte, Bindestriche und Unterstriche enthalten.

AchtungUm eine SKU mehrfach zu verkaufen, müssen Sie die gewünschte Menge im Parameter purchase.items[].quantity angeben. Doppelte SKUs innerhalb des Arrays werden nicht unterstützt – beim Ersteller des Tokens wird nur die erste vorkommende SKU berücksichtigt. In diesem Fall wird kein Fehler zurückgegeben.
    Example: "t-shirt"

  - `purchase.items.quantity` (number, required)
    Artikelmenge.
    Example: 2

  - `promo_code` (string)
    Eindeutiger Code, es wird zwischen Groß- und Kleinschreibung unterschieden. Enthält Buchstaben und Ziffern.

  - `settings` (object)
    Einstellungen zum Konfigurieren des Bezahlvorgangs und des Zahlungsportals für einen Nutzer.

  - `settings.ui` (object)
    Benutzeroberflächeneinstellungen.

  - `settings.ui.theme` (string)
    Zahlungsportal-Theme. Möglich sind "63295a9a2e47fab76f7708e1" (helles Theme – voreingestellt) oder "63295aab2e47fab76f7708e3" (dunkles Theme). Sie können außerdem ein [individuelles Theme erstellen](https://developers.xsolla.com/de/doc/pay-station/features/ui-theme-customization/#pay_station_ui_theme_customization_in_token) und dessen ID im Parameter übermitteln.
    Enum: "63295a9a2e47fab76f7708e1", "63295aab2e47fab76f7708e3"

  - `settings.ui.desktop` (object)
    Benutzeroberflächeneinstellungen für die Desktopversion.

  - `settings.ui.desktop.header` (object)
    Header-Einstellungen.

  - `settings.ui.desktop.header.is_visible` (boolean)
    Ob der Header im Zahlungsportal angezeigt wird.

  - `settings.ui.desktop.header.visible_logo` (boolean)
    Wenn true wird das Logo im Header angezeigt. Um das Bild hochzuladen, öffnen Sie Ihr Projekt im [Kundenportal](https://publisher.xsolla.com/), und navigieren Sie zu Pay Station > Einstellungen.

  - `settings.ui.desktop.header.visible_name` (boolean)
    Ob der Projektname im Header angezeigt wird.

  - `settings.ui.desktop.header.visible_purchase` (boolean)
    Ob die Kaufbeschreibung (purchase.description.value) im Header angezeigt wird. true ist voreingestellt.

  - `settings.ui.desktop.header.type` (string)
    Wie der Header angezeigt wird. Möglich sind compact (Projektname und Benutzer-ID sind ausgeblendet) oder normal (Standard).
    Enum: "compact", "normal"

  - `settings.ui.desktop.header.close_button` (boolean)
    Ob in der Desktop-Version des Zahlungsportals eine Schließen-Schaltfläche angezeigt werden soll. Die Schaltfläche schließt das Zahlungsportal und leitet den Nutzer zu der im Parameter settings.return_url angegebenen URL weiter. Standardmäßig ist false voreingestellt.

  - `settings.ui.mode` (string)
    Benutzeroberflächen-Modus im Zahlungsportal. Nur user_account ist möglich. Der Header enthält nur das Navigationsmenü, und der Nutzer kann kein Produkt auswählen oder eine Zahlung vornehmen. Dieser Modus ist nur für die Desktop-Version verfügbar.
    Enum: "user_account"

  - `settings.ui.user_account` (object)
    Benutzerkontodetails.

  - `settings.ui.user_account.payment_accounts` (object)
    Untermenü Meine Zahlungskonten.

  - `settings.ui.user_account.payment_accounts.enable` (boolean, required)
    Ob das Untermenü angezeigt wird. false ist voreingestellt.

  - `settings.ui.user_account.info` (object)
    Seite Mein Konto.

  - `settings.ui.user_account.info.enable` (boolean, required)
    Ob das Untermenü angezeigt wird. false ist voreingestellt.

  - `settings.ui.user_account.info.order` (integer, required)
    Position des Untermenüs im Hauptmenü.

  - `settings.ui.user_account.subscriptions` (object)
    Untermenü Abonnements verwalten.

  - `settings.ui.user_account.subscriptions.enable` (boolean, required)
    Ob das Untermenü angezeigt wird. false ist voreingestellt.

  - `settings.ui.user_account.subscriptions.order` (integer, required)
    Position des Untermenüs im Hauptmenü.

  - `settings.ui.header` (object)

  - `settings.ui.header.visible_virtual_currency_balance` (boolean)
    Ob dieses Element im Zahlungsportal ausgeblendet werden kann oder nicht.

  - `settings.ui.mobile` (object)

  - `settings.ui.mobile.header` (object)

  - `settings.ui.mobile.header.close_button` (boolean)
    Ob in der mobilgeräteoptimierten Version des Zahlungsportals eine Schließen-Schaltfläche angezeigt werden soll. Die Schaltfläche schließt das Zahlungsportal und leitet den Nutzer zu der im Parameter settings.return_url angegebenen URL weiter.

  - `settings.ui.is_prevent_external_link_open` (boolean)
    Ob die Weiterleitung per Link zu einer externen Ressource deaktiviert ist oder nicht. Wenn Sie auf einen externen Link klicken, wird das Ereignis external-link-open über den postMessage-Mechanismus gesendet. Die Adresse für den Weiterleitungs-Link wird im Parameter url übermittelt.

  - `settings.ui.is_payment_methods_list_mode` (boolean)
    Ob die Liste der im Land des Nutzers verfügbaren Zahlungsmethoden beim Öffnen des Zahlungsportals angezeigt wird. Ist false festgelegt (Standard), wird die im Parameter settings.payment_method übermittelte Zahlungsmethode oder die vom [PayRank-Algorithmus](https://developers.xsolla.com/de/solutions/payments/payment-ui-management/top-payment-methods-management/) ausgewählte Zahlungsmethode angezeigt.

  - `settings.ui.is_independent_windows` (boolean)
    Ob Nutzer zum Bezahlen vom im Launcher eingebetteten Browser (WebView) zu ihrem Standardbrowser weitergeleitet werden sollen.

  - `settings.ui.currency_format` (string)
    Damit ein Währungscode bestehend aus drei Buchstaben gemäß [ISO 4217](https://developers.xsolla.com/de/doc/pay-station/references/supported-currencies/) im Zahlungsportal angezeigt wird, müssen Sie code als Wert festlegen. Standardmäßig wird das Währungssymbol anstelle des Währungscodes angezeigt.

  - `settings.ui.is_show_close_widget_warning` (boolean)
    Ob während der Transaktionsverarbeitung eine Warnmeldung angezeigt werden soll, wenn der Mauszeiger über das Schließen-Symbol (×) bewegt wird. Wird false oder kein Parameter übermittelt, wird die Warnmeldung nicht angezeigt.

  - `settings.ui.layout` (string)
    Position der Hauptelemente des Zahlungsportals. Sie können das Zahlungsportal im Spiel öffnen und/oder die Spalte mit den Bestellinformationen und den Angaben zu den Zahlungsmethoden vertauschen. Ausführliche Informationen finden Sie in den [Anpassungsanweisungen](https://developers.xsolla.com/de/doc/pay-station/features/ui-theme-customization/#pay_station_ui_theme_customization_layout).
    Enum: "embed", "column_reverse", "embed_column_reverse"

  - `settings.ui.is_three_ds_independent_windows` (boolean)
    Ob die "3-D Secure"-Prüfung in einem neuen Browserfenster geöffnet wird. Legen Sie true fest, wenn Ihr Setup eine Content Security Policy (CSP) vorschreibt.

  - `settings.ui.is_cart_open_by_default` (boolean)
    Wie die Artikelliste im Warenkorb beim Öffnen der mobilen Zahlungsportal-Version angezeigt wird. Wenn true festgelegt ist, wird die Liste ausgeklappt angezeigt. Wenn false (Standard) festgelegt ist oder der Parameter nicht übermittelt wird, wird die Liste zusammengeklappt angezeigt.

  - `settings.currency` (string)
    Bevorzugte Zahlungswährung. Dreistelliger Währungscode gemäß [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217). Ausführliche Informationen zu den [von Xsolla unterstützten Währungen](https://developers.xsolla.com/de/doc/pay-station/references/supported-currencies/) finden Sie in der Dokumentation.

  - `settings.language` (string)
    Sprache der Benutzeroberfläche. [Sprachencode](https://developers.xsolla.com/de/doc/pay-station/features/localization/), bestehend aus 2 Kleinbuchstaben.

  - `settings.external_id` (string)
    Externe ID der Transaktion.

  - `settings.payment_method` (integer)
    Zahlungsmethoden-ID. Die ID steuert die Anzeige der Währung im Zahlungsportal, da einige Zahlungsmethoden möglicherweise nur bestimmte Währungen unterstützen.

  - `settings.return_url` (string)
    Seite, auf die der Nutzer nach der Zahlung weitergeleitet wird. Die folgenden Parameter werden dem Link automatisch hinzugefügt: user_id, foreigninvoice, invoice_id, status.

  - `settings.redirect_policy` (object)

  - `settings.redirect_policy.redirect_conditions` (string)
    Zahlungsstatus, der eine Benutzerweiterleitung zur Rückgabe-URL auslöst.
    Enum: "none", "successful", "successful_or_canceled", "any"

  - `settings.redirect_policy.delay` (integer)
    Verzögerung, nach der der Nutzer automatisch zur Rückgabe-URL weitergeleitet wird.

  - `settings.redirect_policy.status_for_manual_redirection` (string)
    Zahlungsstatus, der die Anzeige einer Schaltfläche auslöst, bei dessen Klick der Nutzer zur Rückgabe-URL weitergeleitet wird.
    Enum: "none", "successful", "successful_or_canceled", "any"

  - `settings.redirect_policy.redirect_button_caption` (string)
    Lokalisierte Beschriftungen der Weiterleiten-Schaltfläche.
    Example: "Text button"

  - `custom_parameters` (object,null)
    Ihre benutzerdefinierten Parameter werden in Form eines gültigen JSON-Satz von Schlüssel-Wert-Paaren dargestellt.
Sie können über dieses Feld zusätzliche Parameter übermitteln und so Betrugsschutzfilter konfigurieren. [Siehe Bezahlstation-Dokumentation](https://developers.xsolla.com/de/doc/pay-station/features/antifraud/).

## Response 201 fields (application/json):

  - `token` (string)
    Zahlungstoken.

  - `order_id` (integer)
    Bestell-ID.
    Example: 1

## Response 401 fields (application/json):

  - `statusCode` (integer)
    Example: 401

  - `errorCode` (integer)
    Example: 1020

  - `errorMessage` (string)
    Example: "[0401-1020]: Error in Authentication method occurred"

## Response 422 fields (application/json):

  - `statusCode` (number)
    Antwortstatuscode.
    Example: 422

  - `errorCode` (number)
    Fehlercode.
    Example: 1102

  - `errorMessage` (string)
    Verständliche Fehlermeldung.
    Example: "[0401-1102]: Unprocessable Entity. The property `external_id` is required"

  - `transactionId` (string)
    Eindeutige ID der Anfrage.
    Example: "da145238620011eb8e24fe6913ff226a"


