{
  "openapi": "3.1.0",
  "info": {
    "description": "# Überblick\n\nWebhooks sind Benachrichtigungen über Ereignisse im System. Wenn ein bestimmtes \nEreignis eintritt, sendet Xsolla eine HTTP-Anfrage mitsamt den Ereignisdaten an \nIhre Anwendung. In der Regel handelt es sich dabei um eine POST-Anfrage im JSON-\nFormat.\n\n<strong>Ereignisbeispiele:</strong>\n- Nutzer interagiert mit einem Artikelkatalog\n- Bestellung wird bezahlt oder storniert\n\nWenn ein bestimmtes Ereignis eintritt, benachrichtigt Xsolla Ihr System per \nWebhook. Infolgedessen können Sie Aktionen einleiten, wie zum Beispiel:\n- das Guthaben eines Nutzers aufladen\n- eine Zahlung erstatten\n- dem Nutzerkonto neue Artikel gewähren oder Artikel aus dem Nutzerkonto entfernen\n- ein Abonnement aktivieren\n- einen Nutzer bei Betrugsverdacht sperren\n\n<b>Beispielhafter Webhook-Ablauf bei der Zahlungsabwicklung:</b>\n\n![Webhook für die \nZahlungsabwicklung](https://cdn.xsolla.net/developers/current/images/api_docs/webhooks-general.svg)\n\n<div class=\"note\">\n<p><strong>Hinweis</strong></p><p>Je nach verwendeter Lösung und Art der Integration können die Webhooks und die Interaktionsabfolge vom angegebenen Beispiel abweichen.</p>\n</div>\n\n<b>Videoanleitung für die Xsolla-Webhook-Integration:</b>\n\n<div style=\"position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; border-radius: 15px; overflow: hidden;\">\n  <iframe src=\"https://player.vimeo.com/video/1034591338\" style=\"position: absolute; top:0; left: 0; width: 100%; height: 100%; border:0; border-radius: 15px;\" allowfullscreen></iframe>\n</div>\n\n\n<b>Webhooks-Einstellungen beim Arbeiten mit Xsolla-Produkten und ‑Lösungen:</b>\n\n<table>\n<thead>\n    <tr>\n        <th>Produkt/Lösung</th>\n        <th>Erforderlich/Optional</th>\n        <th>Wozu die Webhooks verwendet werden</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Payments</td>\n        <td>Erforderlich</td>\n        <td>\n          <ul>\n            <li>Benutzervalidierung.</li>\n            <li>Transaktionsdetails im Falle einer erfolgreichen Zahlung oder Zahlungserstattung erhalten</li>\n            <li>gekaufte Artikel einem Nutzer gewähren und im Falle einer Stornierung der Bestellung die Artikel entfernen</li>\n          </ul>\n        </td>\n    </tr>\n    <tr>\n        <td>Store</td>\n        <td>Erforderlich</td>\n        <td>\n          <ul>\n            <li>Benutzervalidierung.</li>\n            <li>Transaktionsdetails im Falle einer erfolgreichen Zahlung oder Zahlungserstattung erhalten</li>\n            <li>gekaufte Artikel einem Nutzer gewähren und im Falle einer Stornierung der Bestellung die Artikel entfernen</li>\n          </ul>\n        </td>\n    </tr>\n    <tr>\n        <td>Game Sales</td>\n        <td>Optional</td>\n        <td>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.<br />Wenn Sie sich für Webhooks entscheiden, ist es wichtig, alle eingehenden <a href=\"/de/webhooks/overview/#section/List-of-required-webhooks\">erforderlichen Webhooks</a> zu verarbeiten.\n</td>\n    </tr>\n    <tr>\n        <td>Subscriptions</td>\n        <td>Optional</td>\n        <td>Zum Abrufen von Informationen über den Abschluss, die Aktualisierung oder die Kündigung eines Abonnements. Alternativ können Sie die <a href=\"/doc/subscriptions/integration-guide/get-subscription-information/#guides_subscriptions_get_subscription_information_set_up_via_api\">Informationen auch über die API anfordern</a>.\n</td>\n    </tr>\n    <tr>\n        <td>Web Shop</td>\n        <td>Erforderlich</td>\n        <td>\n          <ul>\n            <li>Benutzervalidierung.</li>\n            <li>Transaktionsdetails im Falle einer erfolgreichen Zahlung oder Zahlungserstattung erhalten</li>\n            <li>gekaufte Artikel einem Nutzer gewähren und im Falle einer Stornierung der Bestellung die Artikel entfernen</li>\n            <li>Für die Benutzerauthentifizierung, wenn Sie Benutzer über deren ID authentifizieren. Alternativ dazu können Sie <a href=\"/solutions/web-shop/authentication-and-analytics/set-up-authentication/#web_shop_guide_shop_with_auth_set_up_auth_xsolla_login_how_to_get_it\">Benutzer über Xsolla Login authentifizieren</a>.</li>\n          </ul>\n        </td>\n    </tr>\n    <tr>\n        <td>Digital Distribution Hub</td>\n        <td>Erforderlich</td>\n        <td>\n          <ul>\n            <li>Benutzervalidierung.</li>\n            <li>Transaktions-ID aufseiten von Xsolla mit der Transaktions-ID in Ihrem System verknüpfen</li>\n            <li>zusätzliche Transaktionsparameter in der Bestellung übermitteln</li>\n            <li>gekaufte Artikel einem Nutzer gewähren und im Falle einer Stornierung der Bestellung die Artikel entfernen</li>\n          </ul>\n          <p>Ausführliche Informationen zum Einrichten von Webhooks für den Digital Distribution Hub finden Sie in der <a href=\"/solutions/ddh/#integration_guide_ddh_webhook\">Dokumentation</a>.</p>\n        </td>\n    </tr>\n    <tr>\n        <td>Login</td>\n        <td>Optional</td>\n        <td>\n          <p>Empfang von Ereignisinformationen:</p>\n          <ul>\n            <li>Benutzerregistrierung/-autorisierung</li>\n            <li>Bestätigung der E-Mail-Adresse des Benutzers</li>\n            <li>Verknüpfung eines Social-Media-Kontos des Benuters</li>\n          </ul>\n          <p>Ausführliche Informationen zur Einrichtung von Webhooks finden Sie in der <a href=\"/api/login/operation/add-webhook-for-event/\">-Login-Dokumentation</a>.</p>\n        </td>\n    </tr>\n</tbody>\n</table>\n\n# Liste der erforderlichen Webhooks\nWenn Sie Produkte und Lösungen verwenden, die Webhooks erfordern, müssen Sie \ndie <a href=\"/webhooks/overview/#section/Set-up-webhooks-in-Publisher-\nAccount\">Webhooks in Ihrem Kundenportal aktivieren, testen</a> und <a \nhref=\"/webhooks/overview/#section/Webhook-listener\">deren Verarbeitung \neinrichten</a>. Wenn bestimmte Ereignisse eintreten, werden die Webhooks der \nReihe nach gesendet. Wenn Sie also einen der Webhooks nicht verarbeiten, werden \ndie nachfolgenden Webhooks nicht gesendet. Die Liste der erforderlichen \nWebhooks finden Sie unten.\n\n## Store und Payments\nFür den Kauf und die Rückgabe von Artikeln auf der Website hat Xsolla zwei \nWebhook-Sendeoptionen eingerichtet: Informationen über Zahlungs- und \nTransaktionsdaten sowie Informationen über gekaufte Artikeln können entweder \nseparat oder zusammengefasst in einem Webhook gesendet werden.\n\n<b>Empfang von Informationen in kombinierten Webhooks:</b>\n\nWenn Sie sich nach dem 22. Januar 2025 im <a \nhref=\"https://publisher.xsolla.com/\">Kundenportal</a> registriert haben, werden \nalle Informationen in den Webhooks <a href=\"/webhooks/operation/successful-\norder-payment\">Erfolgreiche Bezahlung der Bestellung</a> (`order_paid`) und <a \nhref=\"/webhooks/operation/order-cancellation\">Stornierung der Bestellung</a> \n(`order_canceled`) übermittelt. In diesem Fall müssen Sie die Webhooks <a \nhref=\"/webhooks/operation/payment\">Zahlung</a> (`payment`) und <a \nhref=\"/webhooks/operation/refund\">Erstattung</a> (`refund`) nicht verarbeiten.\n\n<b>Empfang von Informationen in separaten Webhooks:</b>\n\nWenn Sie sich am oder vor dem 22. Januar 2025 im <a \nhref=\"https://publisher.xsolla.com/\">Kundenportal</a> registriert haben, \nempfangen Sie die folgenden Webhooks:\n- <a href=\"/webhooks/operation/payment\">Zahlung</a> (`payment`) und <a \n  href=\"/webhooks/operation/refund\">Erstattung</a> (`refund`) mit Informationen \n  über die Zahlungsdaten und   Transaktionsdetails.\n- <a href=\"/webhooks/operation/successful-order-payment-separate\">Erfolgreiche \n  Bezahlung der Bestellung</a> (`order_paid`) und <a href=\"/webhooks/operation\n  /order-cancellation-separate\">Stornierung der Bestellung</a> (`order_canceled`) \n  mit Informationen über die gekauften Artikel.\n\nSie müssen alle eingehenden Webhooks verarbeiten. Wenn Sie auf die neue Option \n(Empfang kombinierter Webhooks) umsteigen möchten, wenden Sie sich an Ihren \nCustomer Success Manager oder senden Sie eine E-Mail an <a \nhref=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>.\n\nDamit In-Game Store und die Zahlungsverwaltung uneingeschränkt funktionieren, \nmuss die Verarbeitung der wichtigsten Webhooks implementiert sein.\n\n<b>Beim Empfang kombinierter Webhooks:</b>\n\n<table>\n<thead>\n    <tr>\n        <th>Webhook-Name und ‑Typ</th>\n        <th>Beschreibung</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Benutzervalidierung &gt; <a href=\"/webhooks/operation/user-validation/\">Benutzervalidierung</a> (<code>user_validation</code>)</td>\n        <td>Wird in verschiedenen Phasen des Zahlungsvorgangs gesendet, um sicherzustellen, dass der Nutzer im Spiel registriert ist.</td>\n    </tr>\n    <tr>\n        <td>Spieldienste &gt; kombinierte Webhooks &gt; <a href=\"/webhooks/operation/successful-order-payment\">Erfolgreiche Bezahlung der Bestellung</a> (<code>order_paid</code>)</td>\n        <td>Enthält Zahlungsdaten, Transaktionsdetails und Informationen über gekaufte Artikel. Verwenden Sie die Daten aus dem Webhook, um dem Nutzer Artikel zu gewähren.</td>\n    </tr>\n    <tr>\n        <td>Spieldienste &gt; kombinierte Webhooks &gt; <a href=\"/webhooks/operation/order-cancellation\">Stornierung der Bestellung</a> (<code>order_canceled</code>)</td>\n        <td>Enthält Daten der stornierten Zahlung, Transaktionsdetails und Informationen über die gekauften Artikel. Verwenden Sie die Daten aus dem Webhook, um die gekauften Artikel zu entfernen.</td>\n    </tr>\n</tbody>\n</table>\n\n\n<b>Beim Empfang separater Webhooks:</b>\n\n<table>\n<thead>\n    <tr>\n        <th>Webhook-Name und ‑Typ</th>\n        <th>Beschreibung</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Benutzervalidierung &gt; <a href=\"/webhooks/operation/user-validation/\">Benutzervalidierung</a> (<code>user_validation</code>)</td>\n        <td>Wird in verschiedenen Phasen des Zahlungsvorgangs gesendet, um sicherzustellen, dass der Nutzer im Spiel registriert ist.</td>\n    </tr>\n    <tr>\n        <td>Zahlungen &gt; <a href=\"/webhooks/operation/payment\">Zahlung</a> (<code>payment</code>)</td>\n        <td>Enthält Zahlungsdaten und Transaktionsdetails.</td>\n    </tr>\n    <tr>\n        <td>Spieldienste &gt; separate Webhooks &gt; <a href=\"/webhooks/operation/successful-order-payment-separate\">Erfolgreiche Bezahlung der Bestellung</a> (<code>order_paid</code>)</td>\n        <td>Enthält Informationen über gekaufte Artikel. Verwenden Sie die Daten aus dem Webhook, um dem Nutzer Artikel hinzuzufügen.</td>\n    </tr>\n    <tr>\n        <td>Zahlungen &gt; <a href=\"/webhooks/operation/refund\">Erstattung</a> (<code>refund</code>)</td>\n        <td>Enthält Zahlungsdaten und Transaktionsdetails.</td>\n    </tr>\n    <tr>\n        <td>Spieldienste &gt; separate Webhooks &gt; <a href=\"/webhooks/operation/order-cancellation-separate\">Stornierung der Bestellung</a> (<code>order_canceled</code>)</td>\n        <td>Enthält Informationen über die gekauften Artikel und die ID der stornierten Transaktion. Verwenden Sie die Daten aus dem Webhook, um die gekauften Artikel zu entfernen.</td>\n    </tr>\n</tbody>\n</table>\n\nFalls die Artikelkatalog<a href=\"/doc/in-game-\nstore/features/personalization\">personalisierung</a> aufseiten Ihrer Anwendung \nimplementiert ist, müssen Sie den Webhook <a href=\"/webhooks/operation\n/personalized-partner-catalog\">Katalogpersonalisierung aufseiten des \nPartners</a> einrichten.\n\n<div class=\"note\">\n<p><strong>Hinweis</strong></p>\n<p>Um echte Zahlungen entgegennehmen zu können, müssen Sie lediglich <a href=\"/doc/in-game-store/integration-guide/sign-licensing-agreement/\">die Lizenzvereinbarung unterzeichnen</a> und die Verarbeitung der folgenden Webhooks implementieren:</p>\n<p><ul><li><a href=\"/webhooks/operation/payment\">Zahlung</a>, <a href=\"/webhooks/operation/successful-order-payment-separate\">Erfolgreiche Bezahlung der Bestellung</a> und <a href=\"/webhooks/operation/user-validation/\">Benutzervalidierung</a>, sofern Sie separate Webhooks empfangen</li><li><a href=\"/webhooks/operation/successful-order-payment\">Erfolgreiche Bezahlung der Bestellung</a> und <a href=\"/webhooks/operation/user-validation/\">Benutzervalidierung</a>, sofern Sie kombinierte Webhooks empfangen</li></ul></p>\n</div>\n\n## Subscriptions\nUm Abo-Modelle automatisch zu verwalten, muss die Verarbeitung der wichtigsten \nWebhooks implementiert sein:\n- <a href=\"/webhooks/operation/user-validation/\">Benutzervalidierung</a> \n  (`user_validation`) – wird in verschiedenen Phasen des Bezahlvorgangs gesendet, \n  um sicherzustellen, dass der Nutzer im Spiel registriert ist.\n- <a href=\"/webhooks/operation/payment\">Zahlung</a> (`payment`) – wird gesendet, \n  wenn eine Bestellung bezahlt wird, und enthält Zahlungsdaten sowie \n  Transaktionsdetails.\n- <a href=\"/webhooks/operation/created-subscription/\">Abgeschlossenes \n  Abonnement</a> (`create_subscription`) – wird gesendet, wenn ein Webhook vom \n  Typ <a href=\"/webhooks/operation/payment\">Zahlung</a> erfolgreich verarbeitet \n  wurde oder der Nutzer ein Probeabo abgeschlossen hat. Der Webhook enthält \n  Details über das abgeschlossene Abonnement und die Nutzerdaten. Verwenden Sie \n  die Webhook-Daten, um das Abonnement für den Nutzer zu aktivieren.\n- <a href=\"/webhooks/operation/updated-subscription/\">Aktualisiertes \n  Abonnement</a> (`update_subscription`) – wird gesendet, wenn ein Abonnement \n  verlängert oder geändert und Webhook vom Typ <a \n  href=\"https://developers.xsolla.com/de/webhooks/operation/payment\">Zahlung</a> \n  erfolgreich verarbeitet wurde. Der Webhook enthält Details über das \n  abgeschlossene Abonnement und die Nutzerdaten. Verwenden Sie die Webhook-Daten, \n  um das Abonnement des Nutzers zu verlängern oder die Abonnementparameter zu \n  ändern.\n- <a href=\"/webhooks/operation/refund\">Erstattung</a> (`refund`) – wird gesendet, \n  wenn eine Bestellung storniert wird und enthält die Daten der stornierten \n  Zahlung sowie Transaktionsdetails.\n- <a href=\"/webhooks/operation/canceled-subscription/\">Gekündigtes Abonnement</a> \n  (`cancel_subscription`) – wird gesendet, wenn ein Webhook vom Typ <a \n  href=\"/webhooks/operation/refund\">Erstattung</a> erfolgreich verarbeitet oder \n  das Abonnement aus einem anderen Grund gekündigt wurde. Der Webhook enthält \n  Informationen über das Abonnement und die Nutzerdaten. Verwenden Sie die \n  Webhook-Daten, um die vom Nutzer abgeschlossenen Abonnements zu kündigen.\n\n# Webhooks im Kundenportal einrichten\n\n## Allgemeine Einstellungen\n\nSo aktivieren Sie den Empfang von Webhooks:\n1. Navigieren Sie im Kundenportal-Projekt zum Menüpunkt <a \n   href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/\">Projekteinstellu\n   ngen &gt; Webhooks</a>.\n2. Geben Sie im Feld <b>Webhook-Server</b> die URL Ihres Servers an, auf dem Sie \n   Webhooks im Format `https://example.com` empfangen möchten. Sie können auch \n   eine URL aus einem Tool, mit dem sich Webhooks testen lassen, angeben.\n\n<div class=\"notice\">\n<p><strong>Hinweis:</strong></p>\n<p> Für die Datenübertragung wird das HTTPS-Protokoll verwendet; das HTTP-Protokoll wird nicht unterstützt.</p>\n</div>\n\n<p></p>\n\n3. Generieren Sie einen geheimen Schlüssel:\n\n<ol><ol type=\"a\">\n<li>Klicken Sie im Abschnitt <strong>Secret keys</strong> auf <strong>Add key</strong>.</li>\n<li>Daraufhin öffnet sich ein Modalfenster. Vergeben Sie dort einen Namen für den Schlüssel, anhand dessen Sie ihn in der allgemeinen Liste identifizieren können.</li>\n<li>Klicken Sie auf <strong>Create key</strong>.</li>\n<li>Klicken Sie auf <strong>Copy secret</strong>, und speichern Sie den erstellten Schlüssel an einem sicheren Ort in Ihrem System.</li>\n<li>Klicken Sie auf <strong>Done</strong>.</li>\n<li>Bestätigen Sie, dass Sie den Schlüssel gespeichert haben, und klicken Sie auf <strong>Ok, close</strong>.</li>\n</ol></ol>\n\n![Schlüssel \nhinzufügen](https://cdn.xsolla.net/developers/current/images/api_docs/webhooks/add-key.svg)\n\n<div class=\"notice\">\n<p><strong>Hinweis</strong></p>\n<p>Empfehlungen:<ul>\n<li><strong>Speichern Sie den generierten geheimen Schlüssel an einem sicheren Ort in Ihrem System</strong>. Der Schlüssel wird im Kundenportal nur einmal angezeigt, nämlich dann, wenn er erstellt wird.</li>\n<li>Geben Sie Ihren geheimen Schlüssel an niemanden weiter.</li>\n<li>Der geheime Schlüssel muss auf Ihrem Server gespeichert sein, keinesfalls in Binärdateien oder im Frontend.</li></ul>\n</p>\n</div>\n\n4. Klicken Sie auf **Webhooks aktivieren**.\n\n<div class=\"note\">\n<p><strong>Hinweis</strong></p>\n<p>Webhooks können Sie auch über eine beliebige zweckbestimmte Website (z. B. <a href=\"https://webhook.site/#!/\">webhook.site</a>) oder Plattform (z. B. <a href=\"https://ngrok.com/\">ngrok</a>) testen.</p>\n</div>\n\n<p></p>\n\n<div class=\"notice\">\n    <p><strong>Hinweis</strong></p>\n    <p>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.</p>\n</div>\n\nSo deaktivieren Sie den Empfang von Webhooks:\n1. Navigieren Sie im Kundenportal-Projekt zum Menüpunkt <a \n   href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/\">Projekteinstellu\n   ngen &gt; Webhooks</a>.\n2. Klicken Sie auf <b>Webhooks deaktivieren</b>.\n\n## Geheimen Schlüsseln austauschen\n\nEs empfiehlt sich, den geheimen Schlüssel regelmäßig auszutauschen, weil dies \ndie Sicherheit Ihrer Integration erhöht. Sie können in Ihrem Projekt bis zu \nfünf geheime Schlüssel erstellen und zwischen ihnen wechseln. Gehen Sie dazu \nwie folgt vor:\n\n1. Klicken Sie unter <a \n   href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/\">Projekteinstellu\n   ngen &gt; Webhooks</a> auf **Add key**.\n\n![Schlüssel \nhinzufügen](https://cdn.xsolla.net/developers/current/images/api_docs/webhooks/add-new-key.svg)\n\n2. Daraufhin öffnet sich ein Modalfenster. Vergeben Sie dort einen Namen für den \n   Schlüssel, anhand dessen Sie ihn in der allgemeinen Liste identifizieren können.\n3. Klicken Sie auf **Create key**.\n4. Klicken Sie auf **Copy secret**, und speichern Sie den erstellten Schlüssel an \n   einem sicheren Ort in Ihrem System.\n5. Klicken Sie auf **Done**.\n6. Bestätigen Sie, dass Sie den Schlüssel gespeichert haben, und klicken Sie auf \n   **Ok, close**.\n\n<div class=\"notice\">\n<p><strong>Hinweis</strong></p>\n<p>Empfehlungen:<ul>\n<li><strong>Speichern Sie den generierten geheimen Schlüssel an einem sicheren Ort in Ihrem System</strong>. Der Schlüssel wird im Kundenportal nur einmal angezeigt, nämlich dann, wenn er erstellt wird.</li>\n<li>Geben Sie Ihren geheimen Schlüssel an niemanden weiter.</li>\n<li>Der geheime Schlüssel muss auf Ihrem Server gespeichert sein, keinesfalls in Binärdateien oder im Frontend.</li></ul>\n</p>\n</div>\n\nPro Projekt kann nur ein geheimer Schlüssel aktiv sein. Wenn Sie den Schlüssel \nändern möchten, klicken Sie in der Zeile eines anderen Schlüssels auf **Set as \nactive**, und bestätigen Sie die Aktion. Wir empfehlen Ihnen, den deaktiviertem \nSchlüssel zu löschen, sobald die Umstellung auf den neuen Schlüssel erfolgreich \nwar.\n\n![Aktiven Schlüssel \nändern](https://cdn.xsolla.net/developers/current/images/api_docs/webhooks/activate-key.svg)\n\n## Erweiterte Einstellungen\n\nFür die Webhooks im Abschnitt <a href=\"/webhooks/overview/#section/Test-\nwebhooks-in-Publisher-Account/Store\">Payments und Store</a> sind erweiterte \nEinstellungen verfügbar. Diese werden automatisch unter dem Block <a \nhref=\"/webhooks/overview/#section/Set-up-webhooks-in-Publisher-Account/General-\nsettings\">Allgemeine Einstellungen</a> angezeigt, nachdem Sie auf die \nSchaltfläche <b>Webhooks abrufen</b> geklickt haben.\n\n<div class=\"note\">\n<p><strong>Hinweis</strong></p>\n<p>Wenn die erweiterten Einstellungen nicht angezeigt werden, müssen Sie zuerst den Webhook-Empfang in den allgemeinen Einstellungen aktivieren und dann zur Registerkarte <b>Testen &gt; Payments und Store</b> wechseln.</p>\n</div>\n\nHier können Sie den Empfang zusätzlicher Informationen in Webhooks einrichten. \nDazu müssen Sie die entsprechenden Schalter aktivieren. In jeder \nBerechtigungszeile werden die Webhooks angezeigt, die von der Änderung der \nEinstellungen betroffen sind.\n\n<table>\n<thead>\n    <tr>\n        <th>Schalter</th>\n        <th>Beschreibung</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Infos über das gespeicherte Zahlungskonto anzeigen (wird nur angezeigt, wenn Sie sich am oder vor dem 22. Januar 2025 im Kundenportal registriert haben und Webhooks separat empfangen).</td>\n        <td>Informationen über die gespeicherte Zahlungsmethode werden in dem benutzerdefinierten Objekt <code>payment_account</code> übermittelt.</td>\n    </tr>\n    <tr>\n        <td>Infos über Transaktionen anzeigen, die mit gespeicherten Zahlungsmethoden getätigt wurden.</td>\n        <td><p>Informationen werden in den folgenden benutzerdefinierten Parametern des Webhooks übermittelt.</p><ul><li><code>saved_payment_method</code>:<ul><li><code>0</code> – die gespeicherte Zahlungsmethode wurde nicht verwendet</li><li><code>1</code> – die Zahlungsmethode wurde während des aktuellen Bezahlvorgangs gespeichert</li><li><code>2</code> – die zuvor gespeicherte Zahlungsmethode wird verwendet</li></ul></li><li><code>payment_type</code>:<ul><li><code>1</code> – Einmalzahlung</li><li><code>2</code> – wiederkehrende Zahlung</li></ul></li></ul></td>\n    </tr>\n    <tr>\n        <td><code>order</code>-Objekt dem Webhook hinzufügen (wird nur angezeigt, wenn Sie sich am oder vor dem 22. Januar 2025 im Kundenportal registriert haben und Webhooks separat empfangen)</td>\n        <td>Die Informationen über die Bestellung werden im <code>order</code>-Objekt des <a href=\"/webhooks/operation/payment/\">Zahlung</a>-Webhooks übermittelt.</td>\n    </tr>\n    <tr>\n        <td>Nur notwendige Nutzerparameter ohne vertrauliche Daten senden.</td>\n        <td><p>Im Webhook werden nur die folgenden Nutzerinformationen übermittelt:</p><ul><li>ID</li><li>Land</li></ul></td>\n    </tr>\n    <tr>\n        <td>Individuelle Parameter senden.</td>\n        <td>Informationen über <a href=\"/api/pay-station/operation/create-token/\">individuelle Tokenparameter</a> werden in dem Webhook übermittelt.</td>\n    </tr>\n    <tr>\n        <td>BLZ und Endziffern von Karten anzeigen.</td>\n        <td><p>Im Webhook werden nur die folgenden Informationen über die Bankkartennummer übermittelt:</p><ul><li>die ersten sechs Ziffern im Parameter <code>card_bin</code></li><li>die letzten vier Ziffern im Parameter <code>card_suffix</code></li></ul></td>\n    </tr>\n    <tr>\n        <td>Kartenmarke anzeigen.</td>\n        <td>Die Marke der Karte, mit der die Zahlung getätigt wurde. Zum Beispiel: Mastercard oder Visa.</td>\n    </tr>\n    <tr>\n        <td>Infos über den Erstattungsgrund anzeigen</td>\n        <td>Ausführliche Informationen zu den Gründen der Erstattung.</td>\n    </tr>\n    <tr>\n        <td>Länder-Quellensteuer und Nutzerakquisitionsgebühr anzeigen</td>\n        <td>Die Objekte <code>payment_details.​country_wht</code> und <code>payment_details.​user_acquisition_fee</code> werden im Webhook übermittelt. Der Schalter ist standardmäßig aktiviert.</td>\n    </tr>\n    <tr>\n        <td>3DS-Infos senden</td>\n        <td>Das Objekt <code>cards</code> mit den Daten für die \"3-D Secure\"-Prüfung wird im Webhook übermittelt.</td>\n    </tr>\n</tbody>\n</table>\n\n![Erweiterte \nEinstellungen](https://cdn.xsolla.net/developers/current/images/api_docs/webhooks/advanced-settings.png)\n\n# Webhooks im Kundenportal testen\n\nWebhooks zu testen, hilft dabei, sicherzustellen, dass das Projekt sowohl bei \nIhnen als auch aufseiten von Xsolla korrekt eingerichtet ist.\n\nSind die Webhooks erfolgreich <a href=\"/webhooks/overview/#section/Set-up-\nwebhooks-in-Publisher-Account\">eingerichtet</a>, wird unterhalb des \nEinrichtungsbereichs ein Bereich zum Testen von Webhooks angezeigt.\n\n![Webhook-\nTestbereich](https://cdn.xsolla.net/developers/current/images/api_docs/webhooks/testing-section.svg)\n\nDer Testbereich im Kundenportal variiert je nach dem, welche Webhook-\nEmpfangsoption ausgewählt sind.\n\nWenn Sie sich nach dem 22. Januar 2025 im Kundenportal registriert haben, \nempfangen Sie Webhooks in kombinierter Form:\n\n<table>\n<thead>\n    <tr>\n        <th>Registerkartenname für Webhook-Tests</th>\n        <th>Webhook-Name und ‑Typ</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td><b>Payments und Store</b></td>\n        <td>Benutzervalidierung &gt; <a href=\"/webhooks/operation/user-validation/\">Benutzervalidierung</a> (<code>user_validation</code>)</td>\n    </tr>\n    <tr>\n        <td></td>\n        <td>Spieldienste &gt; kombinierte Webhooks &gt; <a href=\"/webhooks/operation/successful-order-payment\">Erfolgreiche Bezahlung der Bestellung</a> (<code>order_paid</code>)</td>\n    </tr>\n    <tr>\n        <td></td>\n        <td>Spieldienste &gt; kombinierte Webhooks &gt; <a href=\"/webhooks/operation/order-cancellation\">Stornierung der Bestellung</a> (<code>order_canceled</code>)</td>\n    </tr>\n    <tr>\n        <td><b>Subscriptions</b></td>\n        <td>Benutzervalidierung &gt; <a href=\"/webhooks/operation/user-validation/\">Benutzervalidierung</a> (<code>user_validation</code>)</td>\n    </tr>\n    <tr>\n        <td></td>\n        <td>Zahlungen &gt; <a href=\"/webhooks/operation/payment\">Zahlung</a> (<code>payment</code>)</td>\n    </tr>\n</tbody>\n</table>\n\n\nWenn Sie sich am oder vor dem 22. Januar 2025 für das Kundenportal registriert \nhaben, empfangen Sie Webhooks separat:\n\n<table>\n<thead>\n    <tr>\n        <th>Registerkartenname für Webhook-Tests</th>\n        <th>Webhook-Name und ‑Typ</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td><b>Store</b></td>\n        <td>Spieldienste &gt; separate Webhooks &gt; <a href=\"/webhooks/operation/successful-order-payment-separate\">Erfolgreiche Bezahlung der Bestellung</a> (<code>order_paid</code>)</td>\n    </tr>\n    <tr>\n        <td></td>\n        <td>Spieldienste &gt; separate Webhooks &gt; <a href=\"/webhooks/operation/order-cancellation-separate\">Stornierung der Bestellung</a> (<code>order_canceled</code>)</td>\n    </tr>\n    <tr>\n        <td><b>Payments</b></td>\n        <td>Benutzervalidierung &gt; <a href=\"/webhooks/operation/user-validation/\">Benutzervalidierung</a> (<code>user_validation</code>)</td>\n    </tr>\n    <tr>\n        <td></td>\n        <td>Zahlungen &gt; <a href=\"/webhooks/operation/payment\">Zahlung</a> (<code>payment</code>)</td>\n    </tr>\n    <tr>\n        <td><b>Subscriptions</b></td>\n        <td>Benutzervalidierung &gt; <a href=\"/webhooks/operation/user-validation/\">Benutzervalidierung</a> (<code>user_validation</code>)</td>\n    </tr>\n    <tr>\n        <td></td>\n        <td>Zahlungen &gt; <a href=\"/webhooks/operation/payment\">Zahlung</a> (<code>payment</code>)</td>\n    </tr>\n</tbody>\n</table>\n\n<div class=\"note\">\n<p><strong>Hinweis</strong></p>\n<p>Wird im Testbereich eine Fehlermeldung angezeigt, wonach der Test nicht erfolgreich war, sollten Sie in den Einstellungen Ihres <a href=\"/webhooks/overview/#section/Webhook-listener\">Webhook-Listener</a> prüfen, wie dieser auf Webhooks antwortet. Die Gründe für den fehlgeschlagenen Test sind in den Testergebnissen ersichtlich.</p>\n<p><b>Beispiel:</b></p>\n<p>Sie haben eine spezielle Website (z. B. <a href=\"https://webhook.site/#!/\">webhook.site</a>) zum Testen verwendet.</p>\n<p>Im Abschnitt <b>Test: Antwort auf eine ungültige Signatur</b> wird ein Fehler angezeigt.</p>\n<p>Das liegt daran, dass Xsolla einen Webhook mit falscher Signatur gesendet hat und nun erwartet, dass Ihr Handler mit dem HTTP-Statuscode <code>4xx</code> und dem Fehlercode <code>INVALID_SIGNATURE</code> antwortet.</p>\n<p><a href=\"https://webhook.site/#!/\">webhook.site</a> antwortet allen Webhooks mit dem HTTP-Statuscode <code>200</code>, selbst solchen Webhooks mit ungültiger Signatur. Weil der HTTP-Statuscode <code>4xx</code> nicht wie erwartet empfangen wurde, ist das Testergebnis fehlerhaft.</p>\n</div>\n\nIm Folgenden ist der Testvorgang für das Szenario mit kombinierten Webhooks \nbeschrieben.\n\n## Payments und Store\n\nAuf der Registerkarte <b>Payments und Store</b> können Sie die folgenden \nWebhooks testen:\n- <a href=\"/webhooks/operation/user-validation/\">Benutzervalidierung</a> \n  (`user_validation`)\n- <a href=\"/webhooks/operation/successful-order-payment\">Erfolgreiche Bezahlung \n  der Bestellung</a> (`order_paid`)\n- <a href=\"/webhooks/operation/order-cancellation\">Stornierung der Bestellung</a> \n  (`order_canceled`)\n\nSo testen Sie die Webhooks:\n1. Wechseln Sie im Webhooks-Testbereich zur Registerkarte <b>Payments und \n   Store</b>.\n2. Wählen Sie in der Drop-down-Liste den Artikeltyp aus. Falls Sie diesen \n   Artikeltyp noch nicht im Kundenportal eingerichtet haben, klicken Sie auf die \n   entsprechende Schaltfläche, um den Artikel zu konfigurieren. Kehren Sie nach \n   dem Erstellen des Artikel zum Webhook-Testbereich zurück, und fahren Sie mit \n   dem nächsten Schritt fort.\n3. Füllen Sie die Pflichtfelder aus:\n   * **Benutzer-ID** – Zum Testen können Sie eine beliebige Kombination aus \n     Buchstaben und Ziffern eingeben.\n   * Geben Sie einen beliebigen Wert im Feld **Xsolla-Bestell-ID** ein.\n   * **Xsolla-Rechnungs-ID** – Transaktions-ID aufseiten von Xsolla. Zum Testen \n     können Sie einen beliebigen numerischen Wert eingeben.\n   * **Rechnungs-ID** – Transaktions-ID aufseiten Ihres Spiels. Zum Testen können \n     Sie eine beliebige Kombination aus Buchstaben und Ziffern eingeben. Dieser \n     Parameter ist für eine erfolgreiche Zahlung nicht zwingend erforderlich, Sie \n     können ihn jedoch übermitteln, um die Transaktions-ID in Ihrem System mit der \n     Transaktions-ID aufseiten von Xsolla zu verknüpfen.\n   * **Betrag** – Zahlungsbetrag. Zum Testen können Sie einen beliebigen numerischen \n     Wert eingeben.\n   * **Währung** – Wählen Sie eine Währung aus der Drop-down-Liste aus.\n   * Wählen Sie die SKU des Artikels aus der der Drop-down-Liste aus, und legen Sie \n     die Menge fest. Sie können mehrere Artikel desselben Typs wählen, indem Sie auf \n     **+** klicken und einen weiteren Artikel in der neuen Zeile hinzufügen.\n4. Klicken Sie auf **Webhooks testen**.\n\nDie Webhooks <a href=\"/webhooks/operation/user-\nvalidation/\">Benutzervalidierung</a>, <a href=\"/webhooks/operation/successful-\norder-payment\">Erfolgreiche Bezahlung der Bestellung</a> und <a \nhref=\"/webhooks/operation/order-cancellation\">Stornierung der Bestellung</a> \nwerden zusammen mit den angegebenen Daten an die festgelegte URL gesendet. Die \nTestergebnisse der einzelnen Webhook-Typen werden unter der Schaltfläche \n<b>Webhooks testen</b> angezeigt.\n\nWenn das Kontrollkästchen <b>Öffentliche Benutzer-ID verwenden</b> unter <a \nhref=\"https://publisher.xsolla.com/0/projects/0/edit/advanced\">Projekteinstellun\ngen > Integrationseinstellungen</a> aktiviert ist, wird der Webhook <a \nhref=\"/webhooks/user-validation/user-search\">Benutzersuche</a> ebenfalls an die \nURL Ihres Webhookservers gesendet und das Testergebnis angezeigt.\n\nFür jeden Webhook müssen Sie die Verarbeitung beider Szenarien, also \nerfolgreich und fehlerbehaftet, konfigurieren.\n\n![Payments-\nTestbereich](https://cdn.xsolla.net/developers/current/images/api_docs/webhooks/testing-results.svg)\n\n## Subscriptions\n\n<div class=\"note\">\n<p><strong>Hinweis</strong></p>\n<p>Um Webhooks zu testen, sollten Sie mindestens ein <a href=\"/sell-subscriptions/integration-guide/set-up-plan/\">Abo-Modell</a> im Kundenportal unter dem Menüpunkt <a href=\"https://publisher.xsolla.com/0/projects/0/subscriptions/plans\">Artikelkatalog &gt; Abonnements</a> erstellt haben.</p>\n</div>\n\nAuf der Registerkarte <b>Subscriptions</b> können Sie die folgenden Webhooks \ntesten:\n- <a href=\"/webhooks/operation/user-validation/\">Benutzervalidierung</a> \n  (`user_validation`)\n- <a href=\"/webhooks/operation/payment\">Zahlung</a> (`payment`)\n\n<div class=\"note\">\n<p><strong>Hinweis</strong></p>\n<p>Ausführliche Informationen zum Testen anderer Abonnementverwaltungsszenarien finden Sie im <a href=\"/sell-subscriptions/integration-guide/set-up-plan/#guides_subscriptions_set_up_plan_testing_purchase\">Integrationsleitfaden</a>.</p>\n</div>\n\nSo testen Sie die Webhooks:\n\n1. 1. Wechseln Sie im Testbereich zur Registerkarte **Subscriptions**.\n2. Füllen Sie die Pflichtfelder aus:\n   * **Benutzer-ID** – Zum Testen können Sie eine beliebige Kombination aus \n     Buchstaben und Ziffern eingeben.\n   * **Xsolla-Rechnungs-ID** – Transaktions-ID aufseiten von Xsolla. Zum Testen \n     können Sie einen beliebigen numerischen Wert eingeben.\n   * **Öffentliche Benutzer-ID** – ID, die einem Nutzer bekannt ist, z. B. E-Mail-\n     Adresse oder Nickname. Dieses Feld wird angezeigt, wenn Sie das \n     Kontrollkästchen **Öffentliche Benutzer-ID verwenden** in Ihrem Projekt unter \n     [Projekteinstellungen > \n     Integrationseinstellungen](https://publisher.xsolla.com/0/projects/0/edit/advanced) aktiviert haben.\n   * **Betrag** – Zahlungsbetrag. Zum Testen können Sie einen beliebigen numerischen \n     Wert eingeben.\n   * **Währung** – Wählen Sie eine Währung aus der Drop-down-Liste aus.\n   * **Abo-Modell-ID** – ein Abo-Modell. Wählen Sie ein Modell aus der Drop-down-\n     Liste.\n   * **Abonnementprodukt** — Wählen Sie ein Produkt aus der Drop-down-Liste \n     (optional). Die Liste wird angezeigt, sofern [Produkte](/de/sell-subscriptions/integration-guide/get-started/#guides_subscriptions_glossary_product) in Ihrem \n     Projekt eingerichtet sind.\n   * **Rechnungs-ID** – Transaktions-ID aufseiten Ihres Spiels. Zum Testen können \n     Sie eine beliebige Kombination aus Buchstaben und Ziffern eingeben. Dieser \n     Parameter ist für eine erfolgreiche Zahlung nicht zwingend erforderlich, Sie \n     können ihn jedoch übermitteln, um die Transaktions-ID in Ihrem System mit der \n     Transaktions-ID aufseiten von Xsolla zu verknüpfen.\n   * **Testzeitraum**. Geben Sie den Wert `0` an, um den [Kauf eines Abonnements \n     ohne Testzeitraum](/de/sell-subscriptions/integration-guide/get-subscription-information/#guides_subscriptions_get_subscription_set_up_webhooks_sandbox) \n     oder die [Verlängerung eines Abonnements](/de/sell-subscriptions/integration-guide/get-subscription-information/#guides_subscriptions_get_subscription_set_up_webhooks_test_renewal)\n      zu testen.\n3. Klicken Sie auf **Testen**.\n\nUnter der angegebenen URL empfangen Sie Webhooks mit ausgefüllten Daten. Die \nTestergebnisse jedes Webhooks, sowohl für ein erfolgreiches als auch für ein \nfehlerhaftes Szenario, werden unter der <b>Testen</b>-Schaltfläche angezeigt.\n\n<a id=\"webhook-listener\"></a>\n\n# Webhook-Listener\n\nEin Webhook-Listener ist ein Programmcode, der es ermöglicht, eingehende \nWebhooks unter einer bestimmten URL-Adresse zu empfangen, <a \nhref=\"/webhooks/overview/#section/Webhook-listener/Generation-of-\nsignature\">eine Signatur zu generieren</a> und dem Xsolla-Webhook-Server zu <a \nhref=\"/webhooks/overview/#section/Webhook-listener/Sending-responses-to-\nwebhook\">antworten</a>.\n\n<div class=\"note\">\n<p><strong>Hinweis</strong></p>\n<p>Sie können die <a href=\"https://developers.xsolla.com/de/sdk/php/\">Pay Station PHP SDK-Bibliothek</a> verwenden, die vorgefertigte Klassen für die Verarbeitung von Webhooks enthält.</p>\n</div>\n\n<!-- IMPORTANT! Changing the list of IP addresses should be coordinated with the administrators. Request for Director of Infrastructure and IT approval in the ticket for changing the IP address list. -->\n\nImplementieren Sie anwendungsseitig den Empfang von Webhooks von den folgenden \nIP-Adressen:\n- `185.30.20.0/24`\n- `185.30.21.0/24`\n- `185.30.22.0/24`\n- `185.30.23.0/24`\n- `34.102.38.178`\n- `34.94.43.207`\n- `35.236.73.234`\n- `34.94.69.44`\n- `34.102.22.197`\n\nWenn Sie das Produkt <a href=\"/doc/login/\">Login</a> integriert haben, müssen \nzusätzlich implementieren, dass Webhooks von den folgenden IP-Adressen \nverarbeitet werden:\n\n- `34.94.0.85`\n- `34.94.14.95`\n- `34.94.25.33`\n- `34.94.115.185`\n- `34.94.154.26`\n- `34.94.173.132`\n- `34.102.48.30`\n- `35.235.99.248`\n- `35.236.32.131`\n- `35.236.35.100`\n- `35.236.117.164`\n\nEinschränkungen:\n- In der Datenbank Ihrer Anwendung dürfen nicht mehrere erfolgreiche \n  Transaktionen mit derselben ID vorhanden sein.\n- Wenn der Webhook-Listener einen Webhook mit einer ID empfängt, die bereits in \n  der Datenbank vorhanden ist, muss das Ergebnis der zuvor verarbeiteten \n  Transaktion zurückgeben werden. Es wird davon abgeraten, dem Nutzer einen \n  gekauften Artikel zweimal zu gewähren und doppelte Datensätze in der Datenbank \n  anzulegen.\n\n## Signatur generieren\n\nUm eine sichere Datenübertragung zu gewährleisten, müssen Sie verifizieren, ob \nder Webhook tatsächlich vom Xsolla-Server gesendet und während der Übertragung \nnicht manipuliert wurde. Generieren Sie dazu Ihre eigene Signatur basierend auf \nder Payload des Anfragerumpfs und vergleichen Sie diese mit der Signatur im \n`authorization`-Header der eingehenden Anfrage. Wenn die Signaturen \nübereinstimmen, ist der Webhook authentisch und kann gefahrlos verarbeitet \nwerden.\n\nVerifizierungsablauf:\n\n1. Rufen Sie die Signatur aus dem `authorization`-Header der eingehenden Webhook-\n   Anfrage ab. Das Header-Format ist wie folgt: `Signature <signature_value>`.\n2. Rufen Sie den Webhook-Anfragerumpf im JSON-Format ab. <div \n   class=\"notice\"><p><strong>Hinweis</strong></p><p>Verwenden Sie die JSON-Payload \n   genau so, wie Sie sie erhalten haben. Die Payload darf nicht geparst oder neu \n   codiert werden, da dies die Formatierung verändert, woraufhin die \n   Signaturüberprüfung fehlschlägt.</p></div><p></p>\n\n3. Generieren Sie Ihre eigene Signatur für den Abgleich: <ol type=\"a\"> \n   <li>Verknüpfen Sie die JSON-Payload mit dem geheimen Schlüssel Ihres Projekts, \n   indem Sie den Schlüssel an das Ende des Strings anhängen.</li> <li>Wenden Sie \n   die kryptografische Hash-Funktion SHA-1 auf den resultierenden String an. Als \n   Ergebnis erhalten Sie einen hexadezimalen String aus Kleinbuchstaben.</li> </ol>\n4. Vergleichen Sie die generierte Signatur mit der Signatur im \n   `authorization`-Header. Wenn beide übereinstimmen, ist der Webhook authentisch.\n\nNachfolgend finden Sie Beispiele für die Implementierung der \nSignaturgenerierung für die folgenden Sprachen: C#, C++, Go, PHP und Node.js.\n\n### Beispielhafter Webhook (HTTP):\n\n```http\nPOST /your_uri HTTP/1.1\nhost: your.host\naccept: application/json\ncontent-type: application/json\ncontent-length: 165\nauthorization: Signature 52eac2713985e212351610d008e7e14fae46f902\n{\n  \"notification_type\":\"user_validation\",\n  \"user\":{\n      \"ip\":\"127.0.0.1\",\n      \"phone\":\"18777976552\",\n      \"email\":\"email@example.com\",\n      \"id\":1234567,\n      \"name\":\"Xsolla User\",\n      \"country\":\"US\"\n  }\n}\n```\n\n### Beispielhafter Webhook (curl):\n\n```bash\ncurl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'authorization: Signature 52eac2713985e212351610d008e7e14fae46f902' \\\n-d '{\n  \"notification_type\":\n    \"user_validation\",\n    \"user\":\n      {\n        \"ip\": \"127.0.0.1\",\n        \"phone\": \"18777976552\",\n        \"email\": \"email@example.com\",\n        \"id\": 1234567,\n        \"name\": \"Xsolla User\",\n        \"country\": \"US\"\n      }\n    }'\n```\n\n### Implementierung der Signaturgenerierung in C# (Allgemeines Beispiel):\n\n<div class=\"note\">\n<p><strong>Hinweis</strong></p>\n<p>Dieses Code-Beispiel ist kompatibel mit .NET Framework 4.0 und höher sowie mit .NET Core und anderen modernen .NET-Versionen. Die Signaturüberprüfung verwendet einen Vergleich mit konstanter Zeit mithilfe der <code>ConstantTimeEquals</code>-Methode zur Verhinderung von Timing-Angriffen.</p>\n</div>\n\n```csharp\nusing System;\nusing System.Security.Cryptography;\nusing System.Text;\npublic static class XsollaWebhookSignature\n{\n    public static string ComputeSha1(string jsonBody, string secretKey)\n    {\n        // Concatenation of the JSON from the request body and the project's secret key\n        string dataToSign = jsonBody + secretKey;\n        using (SHA1 sha1 = SHA1.Create())\n        {\n            byte[] hashBytes = sha1.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));\n            // Convert hash bytes to lowercase hexadecimal string\n            var hexString = new StringBuilder(hashBytes.Length * 2);\n            foreach (byte b in hashBytes)\n            {\n                hexString.Append(b.ToString(\"x2\"));\n            }\n            return hexString.ToString();\n        }\n    }\n    public static bool VerifySignature(string jsonBody, string secretKey, string receivedSignature)\n    {\n        string computedSignature = ComputeSha1(jsonBody, secretKey);\n        string receivedSignatureLower = receivedSignature.ToLower();\n        // Use constant-time comparison to prevent timing attacks\n        return ConstantTimeEquals(computedSignature, receivedSignatureLower);\n    }\n    private static bool ConstantTimeEquals(string a, string b)\n    {\n        if (a.Length != b.Length)\n        {\n            return false;\n        }\n        int result = 0;\n        for (int i = 0; i < a.Length; i++)\n        {\n            result |= a[i] ^ b[i];\n        }\n        return result == 0;\n    }\n}\n```\n\n### Implementierung der Signaturgenerierung in C# (.NET 5.0 und höher):\n\n<div class=\"note\">\n<p><strong>Hinweis</strong></p>\n<p>Um die <code>Convert.ToHexString</code>-Methode nutzen zu können, brauchen Sie .NET 5.0 oder höher.<p></p>Über .NET 7.0 oder höher verfügen, können Sie anstelle von <code>ConstantTimeEquals</code> auch die <code>CryptographicOperations.FixedTimeEquals</code>-Methode verwenden.</p>\n</div>\n\n```csharp\n// For .NET 5.0 and later, you can use the more concise Convert.ToHexString method:\nusing System;\nusing System.Security.Cryptography;\nusing System.Text;\npublic static class XsollaWebhookSignature\n{\n    public static string ComputeSha1(string jsonBody, string secretKey)\n    {\n        string dataToSign = jsonBody + secretKey;\n        using var sha1 = SHA1.Create();\n        byte[] hashBytes = sha1.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));\n        return Convert.ToHexString(hashBytes).ToLower();\n    }\n    public static bool VerifySignature(string jsonBody, string secretKey, string receivedSignature)\n    {\n        string computedSignature = ComputeSha1(jsonBody, secretKey);\n        string receivedSignatureLower = receivedSignature.ToLower();\n        // Use constant-time comparison to prevent timing attacks\n        return ConstantTimeEquals(computedSignature, receivedSignatureLower);\n    }\n    private static bool ConstantTimeEquals(string a, string b)\n    {\n        if (a.Length != b.Length)\n        {\n            return false;\n        }\n        int result = 0;\n        for (int i = 0; i < a.Length; i++)\n        {\n            result |= a[i] ^ b[i];\n        }\n        return result == 0;\n    }\n}\n```\n\n### Implementierung der Signaturgenerierung in C# (.NET 7.0 und höher):\n\n<div class=\"note\">\n<p><strong>Hinweis</strong></p>\n<p> Wenn Sie über .NET 7.0 oder höher verfügen, könne Sie die <code>CryptographicOperations.FixedTimeEquals</code>-Methode verwenden.</p>\n</div>\n\n```csharp\n// For .NET 7.0+, you can use the built-in CryptographicOperations.FixedTimeEquals:\nusing System.Security.Cryptography;\npublic static bool VerifySignature(string jsonBody, string secretKey, string receivedSignature)\n{\n    string computedSignature = ComputeSha1(jsonBody, secretKey);\n    byte[] computedBytes = Encoding.UTF8.GetBytes(computedSignature);\n    byte[] receivedBytes = Encoding.UTF8.GetBytes(receivedSignature.ToLower());\n    return CryptographicOperations.FixedTimeEquals(computedBytes, receivedBytes);\n}\n```\n\n### Implementierung der Signaturgenerierung in C++ (Beispiel):\n\n```c++\n#include <string>\n#include <sstream>\n#include <iomanip>\n#include <openssl/sha.h>\nclass XsollaWebhookSignature {\npublic:\n    static std::string computeSha1(const std::string& jsonBody, const std::string& secretKey) {\n        // Concatenation of the JSON from the request body and the project's secret key\n        std::string dataToSign = jsonBody + secretKey;\n        unsigned char digest[SHA_DIGEST_LENGTH];\n        // Create SHA1 hash\n        SHA1(reinterpret_cast<const unsigned char*>(dataToSign.c_str()),\n             dataToSign.length(), digest);\n        // Convert to lowercase hexadecimal string\n        std::ostringstream hexStream;\n        hexStream << std::hex << std::setfill('0');\n        for (int i = 0; i < SHA_DIGEST_LENGTH; ++i) {\n            hexStream << std::setw(2) << static_cast<unsigned int>(digest[i]);\n        }\n        return hexStream.str();\n    }\n    static bool verifySignature(const std::string& jsonBody, const std::string& secretKey, const std::string& receivedSignature) {\n        std::string computedSignature = computeSha1(jsonBody, secretKey);\n        // Timing-safe comparison\n        if (computedSignature.length() != receivedSignature.length()) {\n            return false;\n        }\n        volatile unsigned char result = 0;\n        for (size_t i = 0; i < computedSignature.length(); ++i) {\n            result |= (computedSignature[i] ^ receivedSignature[i]);\n        }\n        return result == 0;\n    }\n};\n```\n\n### Implementierung der Signaturgenerierung in Go (Beispiel):\n\n```go\npackage main\nimport (\n\t\"crypto/sha1\"\n    \"crypto/subtle\"\n\t\"encoding/hex\"\n\t\"strings\"\n)\ntype XsollaWebhookSignature struct{}\nfunc (x *XsollaWebhookSignature) ComputeSha1(jsonBody, secretKey string) string {\n\t// Concatenation of the JSON from the request body and the project's secret key\n\tdataToSign := jsonBody + secretKey\n\t// Create SHA1 hash\n\th := sha1.New()\n\th.Write([]byte(dataToSign))\n\tsignature := h.Sum(nil)\n\t// Convert to lowercase hexadecimal string\n\treturn strings.ToLower(hex.EncodeToString(signature))\n}\nfunc (x *XsollaWebhookSignature) VerifySignature(jsonBody, secretKey, receivedSignature string) bool {\n\tcomputedSignature := x.ComputeSha1(jsonBody, secretKey)\n\treceivedSignatureLower := strings.ToLower(receivedSignature)\n\t// Use constant time comparison to prevent timing attacks\n\treturn subtle.ConstantTimeCompare([]byte(computedSignature), []byte(receivedSignatureLower)) == 1\n}\n```\n\n### Implementierung der Signaturgenerierung in PHP (Beispiel):\n\n```php\n<?php\nclass XsollaWebhookSignature\n{\n    /**\n     * Compute SHA1 signature from webhook JSON body and secret key\n     *\n     * @param string $jsonBody The raw JSON body from webhook\n     * @param string $secretKey The project's secret key\n     * @return string The lowercase SHA1 signature\n     */\n    public static function computeSha1(string $jsonBody, string $secretKey): string\n    {\n        // Concatenation of the JSON from the request body and the project's secret key\n        $dataToSign = $jsonBody . $secretKey;\n        // Generate SHA1 signature\n        $signature = sha1($dataToSign);\n        return strtolower($signature);\n    }\n    /**\n     * Verify webhook signature using timing-safe comparison\n     *\n     * @param string $jsonBody The raw JSON body from webhook\n     * @param string $secretKey The project's secret key  \n     * @param string $receivedSignature The signature from authorization header\n     * @return bool True if signature is valid, false otherwise\n     */\n    public static function verifySignature(string $jsonBody, string $secretKey, string $receivedSignature): bool\n    {\n        $computedSignature = self::computeSha1($jsonBody, $secretKey);\n        // Use hash_equals for timing-safe comparison\n        return hash_equals($computedSignature, strtolower($receivedSignature));\n    }\n}\n?>\n```\n\n### Implementierung der Signaturgenerierung in Node.js (Beispiel):\n\n```js\nconst crypto = require('crypto');\nclass XsollaWebhookSignature {\n    // IMPORTANT: jsonBody must be the raw JSON string exactly as received from Xsolla\n    static computeSha1(jsonBody, secretKey) {\n        // Concatenation of the JSON from the request body and the project's secret key\n        const dataToSign = jsonBody + secretKey;\n        // Create SHA1 hash\n        const hash = crypto.createHash('sha1');\n        hash.update(dataToSign, 'utf8');\n        // Convert to lowercase hexadecimal string\n        return hash.digest('hex').toLowerCase();\n    }\n    static verifySignature(jsonBody, secretKey, receivedSignature) {\n        const computedSignature = this.computeSha1(jsonBody, secretKey);\n        const cleanReceivedSignature = receivedSignature.toLowerCase();\n        // Check if signatures have the same length before using timingSafeEqual\n        if (computedSignature.length !== cleanReceivedSignature.length) {\n            return false;\n        }\n        try {\n            return crypto.timingSafeEqual(\n                Buffer.from(computedSignature, 'hex'),\n                Buffer.from(cleanReceivedSignature, 'hex')\n            );\n        } catch (error) {\n            // Return false if there's any error (e.g., invalid hex characters)\n            return false;\n        }\n    }\n}\n```\n\n## Dem Webhook antworten\n\nIhr Server muss wie folgt antworten, um den Empfang eines Webhooks zu \nbestätigen:\n* mit dem HTTP-Statuscode 200, 201 oder 204 ohne Nachrichtenrumpf im Falle einer \n  positiven Antwort\n* mit dem HTTP-Statuscode 400 samt <a \n  href=\"/webhooks/overview/#section/Fehler\">Problembeschreibung</a>, sofern der \n  angegebene Benutzer nicht gefunden oder eine ungültige Signatur übermittelt \n  wurde. Ihr Webhook-Handler kann ebenso mit dem HTTP-Stautscode 5xx antworten, \n  wenn Ihr Server vorübergehend Probleme hat.\n\nWenn der Xsolla-Server keine Antwort auf die Webhooks <a \nhref=\"/webhooks/operation/successful-order-payment\">Erfolgreiche Bezahlung der \nBestellung</a> und <a href=\"/webhooks/operation/order-cancellation\">Stornierung \nder Bestellung</a> empfangen hat oder aber eine Antwort mit dem HTTP-Statuscode \n5xx, werden die Webhooks gemäß dem folgenden Zeitplan erneut gesendet:\n* zwei Versuche im Abstand von 5 Minuten\n* sieben Versuche im Abstand von jeweils 15 Minuten\n* zehn Versuche im Abstand von jeweils 60 Minuten\n\nInnerhalb von 12 Stunden nach dem ersten Versuch werden maximal 20 Versuche \nunternommen, Webhooks zu senden.\n\nDie Logik für das erneute Senden der Webhooks <a \nhref=\"/webhooks/operation/payment\">Zahlung</a> und <a \nhref=\"/webhooks/operation/refund\">Erstattung</a> ist auf der jeweiligen Webhook-\nSeite beschrieben.\n\n<div class=\"notice\">\n<p><strong>Hinweis</strong></p>\n<p>Die Zahlung wird dem Nutzer auch dann erstattet, wenn alle folgenden Bedingungen erfüllt sind:<ul><li>Xsolla hat die Erstattung veranlasst.</li><li>Als Antwort auf einen Webhook wurde ein Statuscode <code>4xx</code> zurückgegeben, oder es wurde nach allen weiteren Zustellversuchen keine Antwort empfangen, oder es wurde der Statuscode <code>5xx</code> zurückgegeben.</li></ul></p>\n</div>\n\nWenn der Xsolla-Server keine Antwort auf den Webhook <a \nhref=\"/webhooks/operation/user-validation/\">Benutzervalidierung</a> empfangen \nhat oder aber eine Antwort mit dem HTTP-Statuscode 400 oder 5xx, wird der \nWebhook <a href=\"/webhooks/operation/user-validation/\">Benutzervalidierung</a> \nnicht erneut gesendet. Stattdessen wird dem Nutzer eine Fehlermeldung angezeigt \nund die Webhooks <a href=\"/webhooks/operation/payment\">Zahlung</a> und <a \nhref=\"/webhooks/operation/successful-order-payment\">Erfolgreiche Bezahlung der \nBestellung</a> werden nicht gesendet.\n\n# Fehler\n\nFehlercodes für den HTTP-Code 400:\n\n<table>\n<thead>\n    <tr>\n        <th>Code</th>\n        <th>Nachricht</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>INVALID_USER</td>\n        <td>Ungültiger Benutzer</td>\n    </tr>\n    <tr>\n        <td>INVALID_PARAMETER</td>\n        <td>Ungültiger Parameter</td>\n    </tr>\n    <tr>\n        <td>INVALID_SIGNATURE</td>\n        <td>Unzulässige Signatur</td>\n    </tr>\n    <tr>\n        <td>INCORRECT_AMOUNT</td>\n        <td>Ungültiger Betrag</td>\n    </tr>\n    <tr>\n        <td>INCORRECT_INVOICE</td>\n        <td>Ungültige Rechnung</td>\n    </tr>\n</tbody>\n</table>\n\n```\nHTTP/1.1 400 Bad Request\n{\n    \"error\":{\n        \"code\":\"INVALID_USER\",\n        \"message\":\"Invalid user\"\n    }\n}\n```\n\n# Best Practices\n\n## Sicherheit\n\nRichtlinien:\n\n* Verwenden Sie ausschließlich HTTPS mit einem gültigen Zertifikat.\n* Vergleichen Sie die Signatur stets mit dem Rohtext des Anfragerumpfs – die \n  Daten dürfen nicht geparst oder neu kodiert werden.\n* Übermitteln Sie keine sensiblen Daten in URLs und vermeiden Sie es, technische \n  Details in Fehlermeldungen offenzulegen.\n* Der Webhook-Endpunkt muss von der [CSRF](https://en.wikipedia.org/wiki/Cross-site_request_forgery)-Middleware ausgenommen sein – eingehende Anfragen von \n  Xsolla enthalten kein CSRF-Token und werden bei fehlender Ausnahme abgelehnt.\n* Weiße Liste für [Xsolla-IP-Adressen](/de/webhooks/section/webhook-listener).\n\n\n## Webhook-Handler-Architektur\n\nRichtlinien:\n\n1. Akzeptieren Sie die `POST`-Anfrage mit dem Rumpf und den Headern unverändert, \n   **ohne Änderungen**.\n2. [Überprüfen Sie die Webhook-Signatur](/de/webhooks/section/webhook-listener/generation-of-signature) und antworten Sie mit dem entsprechenden Statuscode:\n   * `4xx` – wenn die Signaturen nicht übereinstimmen;\n   * `2xx` – im Erfolgsfall. Wir empfehlen, **vor** der Ausführung der eigentlichen \n     Geschäftslogik mit dem Statuscode`204 No Content` zu antworten. `200 OK` ist \n     als Antwort ebenfalls zulässig.\n3. Leiten Sie die Payload zur weiteren Verarbeitung an einen asynchronen Job oder \n   eine Warteschlange weiter.\n4. Implementieren Sie \n   [Idempotenz](https://en.wikipedia.org/wiki/Idempotence#Computer_science_meaning)\n   . Ihr System muss in der Lage sein, [denselben Webhook mehr als einmal zu \n   empfangen](/de/webhooks/section/webhook-listener/sending-responses-to-webhook).\n\n**Ablauf (Beispiel):**\n\n```http\nHTTP POST /webhooks/xsolla\n  read raw_body, headers\n  if !verify_signature(raw_body, headers['authorization']):\n     return 400 {\"error\":{\"code\":\"INVALID_SIGNATURE\",\"message\":\"Invalid signature\"}}\n  enqueue(raw_body)\n  return 204  # or 200\n```\n\n## Idempotenz und Duplikate\n\nRichtlinien:\n\n* Verwenden Sie die Transaktions-ID und/oder die [externe ID](/de/dev-resources/faq/payments/#faq_payments_q_new_transaction_external_id) sowie die \n  Bestell-ID als Idempotenzschlüssel.\n* Speichern Sie die verarbeiteten IDs, und geben Sie das vorherige Ergebnis \n  zurück, falls ein Duplikat empfangen wird.\n* Vermeiden Sie die erneute Vergabe von Artikeln, doppelte Datenbankeinträge und \n  doppelte Abbuchungen.\n* Beachten Sie, dass bei aufeinanderfolgenden Zustellungen ein Fehler bei einem \n  früheren Ereignis die Verarbeitung aller nachfolgenden Ereignisse blockiert.\n\n## Systemresilienz\n\nRichtlinien:\n\n* Verwenden Sie Warteschlangen und asynchrone Verarbeitung für \n  ressourcenintensive Vorgänge wie API-Aufrufe von Drittanbietern, Abrechnungen \n  und die Artikelvergabe.\n* Legen Sie Timeouts für den Webhook-Handler fest (1–3 Sekunden). Bei \n  vorübergehenden Ausfällen können Sie sich auf den [Xsolla-\n  Wiederholungsmechanismus](/de/webhooks/section/webhook-listener/sending-responses-to-webhook) verlassen.\n* Implementieren Sie keine Wiederholungsversuche im Webhook-Handler – Xsolla \n  kümmert sich um die erneute Zustellung.\n* Protokollieren Sie Zeitstempel und Verarbeitungsstatus der Webhook-Zustellung; \n  richten Sie Warnmeldungen für Spitzenauslastungen bei `5xx`-Fehlern und \n  erneuten Zustellungen ein.\n* Leiten Sie Korrelations-IDs aus dem Webhook an Ihre Protokolle und Ihr \n  Überwachungssystem (Application Performance Monitoring, APM) weiter.\n* Richten Sie Fehlerprotokollierung und ‑überwachung ein. Verschieben Sie Jobs \n  bei nicht behebbaren Fehlern in eine Warteschlange für unzustellbare \n  Nachrichten (Dead Letter Queue, DLQ). Entwickeln Sie ein sicheres Tool zur \n  erneuten Ausführung von Ereignissen, das durch einen Idempotenzmechanismus \n  geschützt ist.\n\n## Implementationsbeispiele\n\n**Erfolgreicher Kauf – Artikel beim ersten Versuch zugeteilt:**\n\n![Kauf](https://cdn.xsolla.net/developers/current/images/api_docs/webhook-schemes/purchase-v2.svg)\n\n**Doppelt zugeteilt (Partner-Timeout beim ersten Versuch):**\n\n![Timeout](https://cdn.xsolla.net/developers/current/images/api_docs/webhook-schemes/timeout-v2.svg)\n\n**Erstattung:**\n\n![Erstattung](https://cdn.xsolla.net/developers/current/images/api_docs/webhook-schemes/refund-v2.svg)\n\n**Ausfall beim Partner**:\n\n![Ausfall beim \nPartner](https://cdn.xsolla.net/developers/current/images/api_docs/webhook-schemes/server-error.svg)\n\n# FAQ\n\n## Muss ich für ein Webhook-Protokoll HTTPS verwenden?\n\nJa.\n\n## Kann ich Zahlungs-Webhooks unter mehreren URLs empfangen?\n\nNein. Zahlungs-Webhooks verwenden das Server-zu-Server-Protokoll und werden an \neine einzige URL gesendet, die in den [Projekteinstellungen](/de/webhooks/section/set-up-webhooks-in-publisher-account) angegeben ist. Wenn Sie \nBenachrichtigungen in Ihrem Spiel, auf Ihrer Website oder in Ihrer App erhalten \nmöchten, richten Sie auf Ihrem Server den Versand von Webhooks ein, um Daten \nzwischen Xsolla und Ihrem Spiel auszutauschen. Sie können Webhooks auch über \ndie Entwicklerkonsole testen.\n\n<div class=\"note\">\n<p><strong>Hinweis</strong></p>\n<p>Wenn Sie die Integration lokal testen, erreichen `POST`-Anfragen von Xsolla keine URLs wie <code>http://localhost:3000/my-webhook-endpoint</code>. Nutzen Sie Dienste wie <a href=\"https://ngrok.com/\">ngrok</a>, mit denen Sie einen Tunnel für den externen Zugriff einrichten können, sodass Sie Anfragen von Xsolla lokal empfangen können. Weitere Informationen hierzu finden Sie beispielsweise in der <a href=\"https://ngrok.com/docs/guides/share-localhost/webhooks#test-webhooks-locally\">ngrok-Dokumentation</a>.</p>\n</div>\n\n## Warum wurde die Xsolla-Benachrichtigung nicht an die Webhook-URL gesendet?\n\nStellen Sie sicher, dass Ihr Webhook-Server die HTTP-Anfragetypen `POST` und \n`GET` unterstützt.\n\n## Wie vermeide ich doppelte Transaktions-IDs bei der Verarbeitung?\n\nVerwenden Sie die externe ID – hierbei handelt es sich um die Transaktions-ID \nin Ihrem Spiel, die der Bestellung in Ihrem System zugewiesen wurde. Aufseiten \nvon Xsolla ist die externe ID mit der Transaktions-ID verknüpft, wodurch Xsolla \ndoppelte Zahlungen für dieselbe Transaktion verhindern kann. Weitere \nInformationen zur Konfiguration finden Sie in unserer [Dokumentation](/de/dev-resources/faq/payments/#faq_payments_q_new_transaction_external_id).\n\n## Gibt es Best Practices für die Arbeit mit Webhooks?\n\nEmpfehlungen:\n\n* unmittelbar nach der Signaturprüfung mit`204` oder `200` antworten\n* Webhook-Signatur gegen den unveränderten Anfragerumpf abgleichen\n* Idempotenz für alle Vorgänge implementieren\n* alle Ereignisse protokollieren und Fehlerüberwachung einrichten\n* keine sensiblen Daten in URLs übermitteln und keine technischen Details in \n  Fehlermeldungen offenlegen\n\nAusführliche Informationen finden Sie im Abschnitt [Best \nPractices](/de/webhooks/section/best-practices).\n\n# Checkliste für die Webhook-Integration\n\nDamit Webhooks ordnungsgemäß funktionieren, müssen vor der Inbetriebnahme die \nfolgenden Voraussetzungen erfüllt sein:\n\n* HTTPS wird genutzt.\n* Die Webhook-[Signaturprüfung](/de/webhooks/section/webhook-listener/generation-of-signature) erfolgt gegen den unveränderten Rohtext des Anfragerumpfs.\n* Sobald die Signatur bestätigt ist, wird mit dem Statuscode `204/200` geantwort.\n* Idempotenz ist für alle Vorgänge implementiert.\n* Fehlerprotokollierung und ‑überwachung sind konfiguriert.\n* Sensible Daten werden nicht in URLs übermittelt, und technische Details werden \n  in Fehlermeldungen nicht offengelegt.\n* Versuche, einen Webhook erneut zu senden, werden gemäß der [Xsolla-\n  Wiederholungslogik](/de/webhooks/section/webhook-listener/sending-responses-to-webhook) unterstützt.\n* Die gesamte Integration ist dokumentiert.\n\n# Liste der Webhooks\n\n<div class=\"note\">\n<p><strong>Hinweis</strong></p>\n<p>Der Benachrichtigungstyp wird im Parameter <code>notification_type</code> gesendet.</p>\n</div>\n\n<table>\n<thead>\n    <tr>\n        <th>Webhook</th>\n        <th>Benachrichtigungstyp</th>\n        <th>Beschreibung</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td><a href=\"/webhooks/operation/user-validation/\">Benutzervalidierung</a></td>\n        <td><code>user_validation</code></td>\n        <td>Wird versendet, um zu prüfen, ob ein Benutzer im Spiel existiert.</td>\n    </tr>\n    <tr>\n        <td><a href=\"/webhooks/operation/user-search/\">Benutzersuche</a></td>\n        <td><code>user_search</code></td>\n        <td>Wird versendet, um Benutzerinformationen anhand der öffentlichen Benutzer-ID abzurufen.</td>\n    </tr>\n    <tr>\n        <td><a href=\"/webhooks/operation/payment/\">Zahlung</a></td>\n        <td><code>payment</code></td>\n        <td>Wird versendet, wenn ein Benutzer eine Zahlung abschließt.</td>\n    </tr>\n    <tr>\n        <td><a href=\"/webhooks/operation/refund/\">Erstattung</a></td>\n        <td><code>refund</code></td>\n        <td>Wird versendet, falls eine Zahlung aus einem beliebigen Grund storniert werden muss.</td>\n    </tr>\n    <tr>\n        <td><a href=\"/webhooks/operation/partial-refund/\">Teilerstattung</a></td>\n        <td><code>partial_refund</code></td>\n        <td>Wird versendet, falls eine Zahlung aus einem beliebigen Grund teilweise storniert werden muss.</td>\n    </tr>\n    <tr>\n        <td><a href=\"/webhooks/operation/payment-declined/\">Abgelehnte Zahlung</a></td>\n        <td><code>ps_declined</code></td>\n        <td>Wird versendet, wenn eine Zahlung vom Zahlungssystem abgelehnt wird.</td>\n    </tr>\n    <tr>\n        <td><a href=\"https://developers.xsolla.com/de/webhooks/operation/afs-rejected-transaction/\">Abgelehnte Transaktion (AFS)</a></td>\n        <td><code>afs_reject</code></td>\n        <td>Wird versendet, wenn eine Transaktion während einer AFS-Prüfung abgelehnt wird.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/de/webhooks/operation/afs-rejected-blocklist/\">Aktualisierte AFS-Blockliste</a></td>\n      <td><code>afs_black_list</code></td>\n      <td>Wird bei Aktualisierung der AFS-Blockliste versendet.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/de/webhooks/operation/created-subscription/\">Abgeschlossenes Abonnement</a></td>\n      <td><code>create_subscription</code></td>\n      <td>Wird versendet, wenn ein Benutzer ein Abonnement abschließt.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/de/webhooks/operation/updated-subscription/\">Aktualisiertes Abonnement</a></td>\n      <td><code>update_subscription</code></td>\n      <td>Wird versendet, wenn ein Abonnement erneuert oder geändert wird.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/de/webhooks/operation/canceled-subscription/\">Storniertes Abonnement</a></td>\n      <td><code>cancel_subscription</code></td>\n      <td>Wird versendet, wenn ein Abonnement gekündigt wird.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/de/webhooks/operation/nonrenewing-subscription/\">Automatisch endendes Abonnement</a></td>\n      <td><code>non_renewal_subscription</code></td>\n      <td>Wird versendet, wenn der Status auf \"Automatisch endend\" gesetzt wird.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/de/webhooks/operation/add-payment-account/\">Zahlungskonto hinzufügen</a></td>\n      <td><code>payment_account_add</code></td>\n      <td>Wird versendet, wenn ein Benutzer ein Zahlungskonto hinzufügt oder speichert.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/de/webhooks/operation/remove-payment-account/\">Zahlungskonto entfernen</a></td>\n      <td><code>payment_account_remove</code></td>\n      <td>Wird versendet, wenn ein Benutzer das Zahlungskonto aus den gespeicherten Konten entfernt.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/de/webhooks/operation/user-validation-in-webshop\">Benutzervalidierung im Web Shop</a></td>\n      <td><code>-</code></td>\n      <td>Wird von einer Web Shop-Seite gesendet, um zu prüfen, ob ein Benutzer im Spiel vorhanden ist.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/de/webhooks/operation/personalized-partner-catalog\">Katalogpersonalisierung aufseiten des Partners</a></td>\n      <td><code>partner_side_catalog</code></td>\n      <td>Wird gesendet, wenn ein Benutzer mit dem Shop interagiert.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/de/webhooks/operation/successful-order-payment\">Erfolgreiche Bezahlung der Bestellung</a></td>\n      <td><code>order_paid</code></td>\n      <td>Wird gesendet, wenn eine Bestellung bezahlt wurde.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/de/webhooks/operation/order-cancellation\">Stornierung der Bestellung</a></td>\n      <td><code>order_canceled</code></td>\n      <td>Wird gesendet, wenn eine Bestellung storniert wird.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/de/webhooks/operation/dispute\">Streitfall</a></td>\n      <td><code>dispute</code></td>\n      <td>Wird gesendet, wenn ein neuer Streiftall eröffnet wird.</td>\n    </tr>\n</tbody>\n</table>\n",
    "title": "Webhooks",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://api.xsolla.com/merchant/v2"
    }
  ],
  "tags": [
    {
      "name": "user-validation",
      "x-displayName": "Benutzervalidierung"
    },
    {
      "name": "payments",
      "x-displayName": "Payments"
    },
    {
      "name": "game-services",
      "x-displayName": "Spieldienste"
    },
    {
      "name": "anti-fraud",
      "x-displayName": "Anti-fraud"
    },
    {
      "name": "subscriptions",
      "x-displayName": "Subscriptions"
    },
    {
      "name": "combined-webhooks",
      "x-displayName": "Kombinierte Webhooks"
    },
    {
      "name": "separate-webhooks",
      "x-displayName": "Separate Webhooks"
    },
    {
      "name": "personalization",
      "x-displayName": "Personalisierungs-Webhook"
    }
  ],
  "webhooks": {
    "add-payment-account": {
      "post": {
        "description": "Xsolla sendet eine Webhook vom Typ `payment_account_add` an die Webhook-URL, wenn ein Benutzer bei einem Ingame-Kauf ein Zahlungskonto hinzufügt oder speichert. Wenden Sie sich an Ihren Customer Success Manager oder senden Sie eine E-Mail an <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>, wenn Sie diesen Webhook erhalten möchten.",
        "operationId": "add-payment-account",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "payment_account": {
                    "description": "Details des Zahlungskontos (Objekt).",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/payment_account.country"
                      },
                      "id": {
                        "$ref": "#/components/schemas/payment_account.id"
                      },
                      "name": {
                        "$ref": "#/components/schemas/payment_account.name"
                      },
                      "payment_method": {
                        "$ref": "#/components/schemas/payment_account.payment_method"
                      },
                      "type": {
                        "$ref": "#/components/schemas/payment_account.type"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  },
                  "settings": {
                    "description": "Benutzerdefinierte Projekteinstellungen (Objekt).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Benutzerdaten (Objekt).",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "$ref": "#/components/schemas/user.email"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "ip": {
                        "$ref": "#/components/schemas/user.ip"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      },
                      "zip": {
                        "$ref": "#/components/schemas/user.zip"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Zahlungskonto hinzufügen",
        "tags": [
          "payments"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \\\n-d '{\n    \"notification_type\":\"payment_account_add\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"ip\": \"127.0.0.1\",\n        \"email\": \"email@example.com\",\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\",\n        \"country\": \"US\",\n        \"zip\": \"12345\"\n    },\n    \"payment_account\": {\n        \"id\": \"12345678\",\n        \"name\": \"email@example.com\",\n        \"payment_method\": \"24\",\n        \"country\": \"US\",\n        \"type\": \"paypal\"\n    }\n}'"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost:           your.hostname\naccept:         application/json\ncontent-length: 255\ncontent-type:   application/json\nauthorization:  Signature d09695066c52c1b8bdae92f2d6eb59f5b5f89843\n\n{\n    \"notification_type\": \"payment_account_add\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"ip\": \"127.0.0.1\",\n        \"email\": \"email@example.com\",\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\",\n        \"country\": \"US\",\n        \"zip\": \"12345\"\n    },\n    \"payment_account\": {\n        \"id\": \"12345678\",\n        \"name\": \"email@example.com\",\n        \"payment_method\": \"24\",\n        \"country\": \"US\",\n        \"type\": \"paypal\"\n    }\n}"
          }
        ]
      }
    },
    "afs-rejected-blocklist": {
      "post": {
        "description": "Wenn die Sperrliste des Anti-fraud-Systems aktualisiert wird (z. B. ein Parameter wird hinzugefügt oder entfernt), sendet Xsolla einen Webhook vom Typ `afs_black_list` an die Webhook-URL. Parameter werden automatisch aufseiten von Xsolla oder auf Anfrage hinzugefügt. Parameter zu entfernen, ist nur auf Anfrage möglich. Wenden Sie sich an Ihren Customer Success Manager oder senden Sie eine E-Mail an <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>, wenn Sie diesen Webhook erhalten möchten.",
        "operationId": "afs-rejected-blocklist",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "event": {
                    "description": "Objekt mit Informationen über das AFS-Blocklistenereignis.",
                    "properties": {
                      "action": {
                        "description": "Ereignistyp.",
                        "enum": [
                          "adding",
                          "removing"
                        ],
                        "type": "string"
                      },
                      "date_of_last_action": {
                        "description": "Zeitpunkt des letzten AFS-Blocklistenereignisses im [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)-Format.",
                        "type": "string"
                      },
                      "parameter": {
                        "description": "Name des Parameters, durch den das Ereignis aufgetreten ist.",
                        "enum": [
                          "nick",
                          "email",
                          "ps_account",
                          "ip_address",
                          "card_issuer",
                          "phone"
                        ],
                        "type": "string",
                        "x-enumDescriptions": {
                          "card_issuer": "Die kreditkartenausgebende Bank des Benutzers",
                          "email": "E-Mail-Adresse des Benutzers",
                          "ip_address": "IP-Adresse des Benutzers",
                          "nick": "Nickname des Benutzers",
                          "phone": "Telefonnummer des Benutzers",
                          "ps_account": "Rechnungskonto des Benutzers"
                        }
                      },
                      "parameter_value": {
                        "description": "Wert des Parameters, durch den das Ereignis aufgetreten ist.",
                        "type": "string"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      },
                      "reason": {
                        "description": "Ursache des Ereignisses.",
                        "enum": [
                          "chargeback",
                          "fraud_activity",
                          "suspicious_activity",
                          "ps_reported_fraud",
                          "linked_chargeback",
                          "partner_request",
                          "friendly_fraud",
                          "user_reported_fraud",
                          "linked_parameter",
                          "other_data_in_blacklist",
                          "by_afs_filters",
                          "wrongly_added",
                          "removed_by_cs_review",
                          "other_forgiveness_reason"
                        ],
                        "type": "string",
                        "x-enumDescriptions": {
                          "by_afs_filters": "AFS-Filter (ergänzt)",
                          "chargeback": "Rückbuchung (ergänzt)",
                          "fraud_activity": "Betrug (ergänzt)",
                          "friendly_fraud": "Friendly Fraud (ergänzt)",
                          "linked_chargeback": "Rückbuchungszusammenhang (ergänzt)",
                          "linked_parameter": "verknüpfter Parameter in AFS-Blockliste (ergänzt)",
                          "other_data_in_blacklist": "weitere Parameter in AFS-Blockliste (ergänzt)",
                          "other_forgiveness_reason": "sonstiger Grund für die Entfernung (entfernt)",
                          "partner_request": "auf Anfrage (ergänzt)",
                          "ps_reported_fraud": "Zahlungssystembenachrichtigung über Betrug (ergänzt)",
                          "removed_by_cs_review": "nach Meldung an den technischen Support von Xsolla entfernt (entfernt)",
                          "suspicious_activity": "verdächtige Aktivität (ergänzt)",
                          "user_reported_fraud": "Benutzerbericht über Betrug (ergänzt)",
                          "wrongly_added": "versehentlich hinzugefügt (entfernt)"
                        }
                      },
                      "transaction_id": {
                        "description": "Transaktions-ID, die dem Parameter zugeordnet ist, durch den das Ereignis aufgetreten ist.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  }
                },
                "required": [
                  "notification_type",
                  "event"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Anti-fraud-Sperrliste aktualisieren",
        "tags": [
          "anti-fraud"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'authorization: Signature 32c64a80d2527dc08906ae1891bac4489509b9f6' \\\n-d '{\n  \"event\": {\n    \"action\": \"adding\",\n    \"date_of_last_action\": \"2020-11-27T10:09:05+03:00\",\n    \"parameter\": \"email\",\n    \"parameter_value\": \"email@example.com\",\n    \"reason\": \"ps_reported_fraud\",\n    \"transaction_id\": \"111111111\",\n    \"project_id\": \"123456\"\n  },\n  \"notification_type\": \"afs_black_list\"\n}'"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your_uri HTTP/1.1\nhost: your.host\naccept: application/json\ncontent-type: application/json\ncontent-length: 233\nauthorization: Signature 32c64a80d2527dc08906ae1891bac4489509b9f6\n\n{\n  \"event\": {\n    \"action\": \"adding\",\n    \"date_of_last_action\": \"2020-11-27T10:09:05+03:00\",\n    \"parameter\": \"email\",\n    \"parameter_value\": \"email@example.com\",\n    \"reason\": \"ps_reported_fraud\",\n    \"transaction_id\": \"111111111\",\n    \"project_id\": \"123456\"\n  },\n  \"notification_type\": \"afs_black_list\"\n}"
          }
        ]
      }
    },
    "afs-rejected-transaction": {
      "post": {
        "description": "Wird eine Transaktion während einer Prüfung vom Anti-fraud-System abgelehnt, \nsendet Xsolla die Transaktionsdetails in einem Webhook vom Typ `afs_reject` an \ndie Webhook-URL. Wenden Sie sich an Ihren Customer Success Manager oder senden \nSie eine E-Mail an <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>, wenn Sie \ndiesen Webhook erhalten möchten.\n\nWenn Sie die Webhook-URL im Kundenportal speichern, können Sie Berechtigungen \nerteilen, detaillierte Informationen in Webhooks zu empfangen. Aktivieren Sie \ndazu im Kundenportal unter <a \nhref=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/store\">Projekteins\ntellungen &gt; Webhooks &gt; Erweiterte Einstellungen</a> den folgenden \nSchalter.\n\n<div class=\"note\">\n<p><strong>Hinweis</strong></p>\n<p>Wenn Sie sich am oder vor dem 22. Januar 2025 im Kundenportal registriert haben, finden Sie die Schalter unter <a href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/payments\">Projekteinstellungen &gt; Webhooks &gt; Testen &gt; Payments &gt; Erweiterte Einstellungen</a>.</p>\n</div>\n\n<table>\n<thead>\n    <tr>\n        <th>Schalter</th>\n        <th>Beschreibung</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Infos über Transaktionen anzeigen, die mit gespeicherten Zahlungsmethoden getätigt wurden</td>\n        <td><p>Informationen werden in den folgenden benutzerdefinierten Parametern des Webhooks übermittelt.</p><ul><li><code>saved_payment_method</code>:<ul><li><code>0</code> – die gespeicherte Zahlungsmethode wurde nicht verwendet</li><li><code>1</code> – die Zahlungsmethode wurde während des aktuellen Bezahlvorgangs gespeichert</li><li><code>2</code> – die zuvor gespeicherte Zahlungsmethode wird verwendet</li></ul></li><li><code>payment_type</code>:<ul><li><code>1</code> – Einmalzahlung</li><li><code>2</code> – wiederkehrende Zahlung</li></ul></li></ul></td>\n    </tr>\n</tbody>\n</table>\n",
        "operationId": "afs-rejected-transaction",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "refund_details": {
                    "description": "Benutzerdaten (Objekt).",
                    "properties": {
                      "author": {
                        "description": "Erstattungsinitiator. Der Feldwert wird gemäß der Tabelle übermittelt:\n\n<table>\n    <thead>\n    <tr>\n        <th>Erstattungsinitiator</th>\n        <th>Feldwert</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td>Spiel (über API).</td>\n        <td>API</td>\n    </tr>\n    <tr>\n        <td>Kundenportal-Nutzer (automatische Erstattung).</td>\n        <td>E-Mail-Adresse des Nutzers</td>\n    </tr>\n    <tr>\n        <td>Kundenportal-Nutzer (mit Unterstützung des Xsolla-Kundensupports).</td>\n        <td>support@xsolla.com</td>\n    </tr>\n    <tr>\n        <td>Xsolla (mit Unterstützung des Xsolla-Kundensupports).</td>\n        <td>support@xsolla.com</td>\n    </tr>\n    </tbody>\n</table>\n",
                        "type": "string"
                      },
                      "code": {
                        "description": "Code-ID.\n\n<table>\n    <thead>\n    <tr>\n        <th>Code</th>\n        <th>Grund</th>\n        <th>Beschreibung</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td>1</td>\n        <td>Cancellation by the user request / the game request</td>\n        <td>Aus dem Kundenportal heraus eingeleitete Stornierung.</td>\n    </tr>\n    <tr>\n        <td>2</td>\n        <td>Chargeback</td>\n        <td>Rückbuchung der Transaktion angefordert.</td>\n    </tr>\n    <tr>\n        <td>3</td>\n        <td>Integration error</td>\n        <td>Integrationsprobleme zwischen Xsolla und dem Spiel.<br /><b>Empfehlung: Benutzer nicht auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>4</td>\n        <td>Potential fraud</td>\n        <td>Betrugsverdacht.<br /><b>Empfehlung: Benutzer auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>5</td>\n        <td>Test payment</td>\n        <td>Testweise getätigte Transaktion gefolgt von Stornierung.<br /><b>Empfehlung: Benutzer nicht auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>6</td>\n        <td>User invoice expired</td>\n        <td>Rechnung überfällig (wird bei Postpaid-Zahlungsweise genutzt).</td>\n    </tr>\n    <tr>\n        <td>7</td>\n        <td>Fraud notification from PS</td>\n        <td>Zahlung wurde vom Zahlungssystem abgelehnt. Potenzieller Betrug durch Zahlungssystem entdeckt. <br /><b>Empfehlung: Benutzer auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>8</td>\n        <td>Cancellation by the PS request</td>\n        <td>Zahlungssystem hat Stornierung angefordert.<br /><b>Empfehlung: Benutzer nicht auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>9</td>\n        <td>Cancellation by the user request</td>\n        <td>Der Benutzer war aus irgendeinem Grund nicht zufrieden mit dem Spiel oder dem Einkauf.<br /><b>Empfehlung: Benutzer nicht auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>10</td>\n        <td>Cancellation by the game request</td>\n        <td>Das Spiel hat die Stornierung angefordert.<br /><b>Empfehlung: Benutzer nicht auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>11</td>\n        <td>Account holder called to report fraud</td>\n        <td>Der Kontoinhaber gibt an, dass die Transaktion nicht von ihm getätigt wurde.</td>\n    </tr>\n    <tr>\n        <td>12</td>\n        <td>Friendly fraud</td>\n        <td>Es wurde ein \"Friendly Fraud\" gemeldet.</td>\n    </tr>\n    <tr>\n        <td>13</td>\n        <td>Duplicate</td>\n        <td>Duplizierte Transaktion für dieselbe Rechnung.</td>\n    </tr>\n    </tbody>\n</table>\n",
                        "type": "integer"
                      },
                      "reason": {
                        "description": "Grund für die Rückerstattung.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "settings": {
                    "description": "Benutzerdefinierte Projekteinstellungen (Objekt).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "transaction": {
                    "description": "Details zur Transaktion (Objekt).",
                    "properties": {
                      "agreement": {
                        "description": "ID der Vereinbarung.",
                        "type": "integer"
                      },
                      "dry_run": {
                        "description": "Testtransaktion. Der Parameter hat den Wert 1, wenn es sich um eine Testtransaktion handelt. Er wird nicht gesendet, wenn es sich um eine echte Transaktion handelt.",
                        "type": "integer"
                      },
                      "external_id": {
                        "description": "Externe ID der Transaktion.",
                        "type": "string"
                      },
                      "id": {
                        "description": "ID der Transaktion.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Benutzerdaten (Objekt).",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "$ref": "#/components/schemas/user.email"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "ip": {
                        "$ref": "#/components/schemas/user.ip"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      },
                      "phone": {
                        "description": "Telefonnummer des Benutzers.",
                        "type": "string"
                      },
                      "zip": {
                        "$ref": "#/components/schemas/user.zip"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "transaction"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Anti-fraud-System lehnt Transaktion ab",
        "tags": [
          "anti-fraud"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-d '{\n  \"notification_type\": \"afs_reject\",\n  \"settings\": {\n    \"project_id\": 18404,\n    \"merchant_id\": 2340\n  },\n  \"user\": {\n    \"ip\": \"127.0.0.1\",\n    \"phone\": \"18777976552\",\n    \"email\": \"email@example.com\",\n    \"id\": \"1234567\",\n    \"name\": \"John Smith\",\n    \"country\": \"US\"\n  },\n  \"transaction\": {\n    \"id\": 1,\n    \"external_id\": 1,\n    \"dry_run\": 1,\n    \"agreement\": 1\n  },\n  \"refund_details\": {\n    \"code\": 4,\n    \"reason\": \"Potential fraud\"\n  }\n}'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n  'notification_type' => 'afs_reject',\n  'settings' => array(\n    'project_id' => 18404,\n    'merchant_id' => 2340\n  ),\n  'user' => array(\n    'ip' => '127.0.0.1',\n    'phone' => '18777976552',\n    'email' => 'email@example.com',\n    'id' => '1234567',\n    'country' => 'US'\n  ),\n  'transaction' => array(\n    'id' => 87654321,\n    'payment_method' => 1380,\n    'dry_run' => 1\n  ),\n  'refund_details' => array(\n    'code' => 4,\n    'reason' => 'Potential fraud'\n  )\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your_uri HTTP/1.1\nhost: your.host\naccept: application/json\ncontent-type: application/json\ncontent-length: 1220\nauthorization: Signature 31bd5924dd6cbc9cbe99d331c4a086a57291f9d7\n\n{\n  \"notification_type\": \"afs_reject\",\n  \"settings\": {\n    \"project_id\": 18404,\n    \"merchant_id\": 2340\n  },\n  \"user\": {\n    \"ip\": \"127.0.0.1\",\n    \"phone\": \"18777976552\",\n    \"email\": \"email@example.com\",\n    \"id\": \"1234567\",\n    \"name\": \"John Smith\",\n    \"country\": \"US\"\n  },\n  \"transaction\": {\n    \"id\": 1,\n    \"external_id\": 1,\n    \"dry_run\": 1,\n    \"agreement\": 1\n  },\n  \"refund_details\": {\n    \"code\": 4,\n    \"reason\": \"Potential fraud\"\n  }\n}"
          }
        ]
      }
    },
    "canceled-subscription": {
      "post": {
        "description": "Wird ein Abonnement gekündigt, sendet Xsolla einen Webhook vom Typ `cancel_subscription` an die Webhook-URL.",
        "operationId": "canceled-subscription",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "settings": {
                    "description": "Benutzerdefinierte Projekteinstellungen (Objekt).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "subscription": {
                    "description": "Angaben zum Abonnement (Objekt).",
                    "properties": {
                      "date_create": {
                        "$ref": "#/components/schemas/subscription.date_create"
                      },
                      "date_end": {
                        "$ref": "#/components/schemas/subscription.date_end"
                      },
                      "plan_id": {
                        "$ref": "#/components/schemas/subscription.plan_id"
                      },
                      "product_id": {
                        "$ref": "#/components/schemas/subscription.product_id"
                      },
                      "subscription_id": {
                        "$ref": "#/components/schemas/subscription.subscription_id"
                      },
                      "tags": {
                        "$ref": "#/components/schemas/subscription.tags"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Benutzerdaten (Objekt).",
                    "properties": {
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Gekündigtes Abonnement",
        "tags": [
          "subscriptions"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \\\n-d '{\n        \"notification_type\": \"cancel_subscription\",\n        \"settings\": {\n          \"project_id\": 18404,\n          \"merchant_id\": 2340\n        },\n        \"user\": {\n            \"id\": \"1234567\",\n            \"name\": \"John Smith\"\n        },\n        \"subscription\": {\n            \"plan_id\": \"b5dac9c8\",\n            \"subscription_id\": \"10\",\n            \"product_id\": \"Demo Product\",\n            \"date_create\": \"2014-09-22T19:25:25+04:00\",\n            \"date_end\": \"2015-01-22T19:25:25+04:00\"\n        }\n    }'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n    'notification_type' => 'cancel_subscription',\n    'settings' => array(\n      'project_id' => 18404,\n      'merchant_id' => 2340\n    ),\n    'user' => array(\n        'id' => '1234567',\n        'name' => 'John Smith'\n    ),\n    'subscription' => array(\n        'plan_id' => 'b5dac9c8',\n        'subscription_id' => '10',\n        'product_id' => 'Demo Product',\n        'date_create' => '2014-09-22T19:25:25+04:00',\n        'date_end' => '2015-01-22T19:25:25+04:00',\n    )\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost: your.hostname\naccept: application/json\ncontent-type: application/json\ncontent-length: 240\nauthorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f\n\n{\n    \"notification_type\": \"cancel_subscription\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\":{\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\"\n    },\n    \"subscription\": {\n        \"plan_id\": \"b5dac9c8\",\n        \"subscription_id\": \"10\",\n        \"product_id\": \"Demo Product\",\n        \"date_create\": \"2014-09-22T19:25:25+04:00\",\n        \"date_end\": \"2015-01-22T19:25:25+04:00\"\n    }\n}"
          }
        ]
      }
    },
    "created-subscription": {
      "post": {
        "description": "Wenn ein Benutzer ein Abonnement abschließt, sendet Xsolla einen Webhook vom Typ `create_subscription` an die Webhook-URL.",
        "operationId": "created-subscription",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "custom_parameters": {
                    "description": "Ihre benutzerdefinierten Parameter.",
                    "type": "object"
                  },
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "settings": {
                    "description": "Benutzerdefinierte Projekteinstellungen (Objekt).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "subscription": {
                    "description": "Angaben zum Abonnement (Objekt).",
                    "properties": {
                      "date_create": {
                        "$ref": "#/components/schemas/subscription.date_create"
                      },
                      "date_next_charge": {
                        "$ref": "#/components/schemas/subscription.date_next_charge"
                      },
                      "is_gift": {
                        "$ref": "#/components/schemas/subscription.is_gift"
                      },
                      "plan_id": {
                        "$ref": "#/components/schemas/subscription.plan_id"
                      },
                      "product_id": {
                        "$ref": "#/components/schemas/subscription.product_id"
                      },
                      "subscription_id": {
                        "$ref": "#/components/schemas/subscription.subscription_id"
                      },
                      "tags": {
                        "$ref": "#/components/schemas/subscription.tags"
                      },
                      "trial": {
                        "description": "Probezeitraum (Objekt).",
                        "properties": {
                          "type": {
                            "description": "Art des Probezeitraums: day.",
                            "type": "string"
                          },
                          "value": {
                            "description": "Probezeitraum.",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Benutzerdaten (Objekt).",
                    "properties": {
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Abgeschlossenes Abonnement",
        "tags": [
          "subscriptions"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \\\n-d '{\n        \"notification_type\": \"create_subscription\",\n        \"settings\": {\n          \"project_id\": 18404,\n          \"merchant_id\": 2340\n        },\n        \"user\": {\n            \"id\": \"1234567\",\n            \"name\": \"John Smith\"\n        },\n        \"subscription\": {\n            \"plan_id\": \"b5dac9c8\",\n            \"subscription_id\": \"10\",\n            \"product_id\": \"Demo Product\",\n            \"date_create\": \"2014-09-22T19:25:25+04:00\",\n            \"date_next_charge\": \"2015-01-22T19:25:25+04:00\",\n            \"trial\": {\n                    \"value\": 90,\n                    \"type\": \"day\"\n                },\n            \"is_gift\": true\n        }\n    }'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n    'notification_type' => 'create_subscription',\n    'settings' => array(\n      'project_id' => 18404,\n      'merchant_id' => 2340\n    ),\n    'user' => array(\n        'id' => '1234567',\n        'name' => 'John Smith'\n    ),\n    'subscription' => array(\n        'plan_id' => 'b5dac9c8',\n        'subscription_id' => '10',\n        'product_id' => 'Demo Product',\n        'date_create' => '2014-09-22T19:25:25+04:00',\n        'date_next_charge' => '2015-01-22T19:25:25+04:00',\n        'trial' =>  array(\n                'value' =>  90,\n                'type' =>  'day'\n            ),\n        'is_gift' => true,\n    )\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nHost: your.hostname\naccept: application/json\ncontent-type: application/json\ncontent-length: 240\nauthorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f\n\n{\n    \"notification_type\": \"create_subscription\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\"\n    },\n    \"subscription\": {\n        \"plan_id\": \"b5dac9c8\",\n        \"subscription_id\": \"10\",\n        \"product_id\": \"Demo Product\",\n        \"date_create\": \"2014-09-22T19:25:25+04:00\",\n        \"date_next_charge\": \"2015-01-22T19:25:25+04:00\",\n        \"trial\": {\n                \"value\": 90,\n                \"type\": \"day\"\n            },\n        \"is_gift\": true\n    }\n}"
          }
        ]
      }
    },
    "dispute": {
      "post": {
        "description": "Wenn ein neuer Streitfall eröffnet wird oder sich der Status eines Streitfalls ändert, sendet Xsolla einen Webhook vom Typ `dispute` an die Webhook-URL. Wenden Sie sich an Ihren Customer Success Manager oder senden Sie eine E-Mail an <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>, wenn Sie diesen Webhook erhalten möchten.",
        "operationId": "dispute",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "action": {
                    "description": "Aktionstyp.",
                    "enum": [
                      "adding",
                      "updating"
                    ],
                    "type": "string",
                    "x-enumDescriptions": {
                      "adding": "Ein neuer Streitfall wurde eröffnet.",
                      "updating": "Der Status eines Streitfalls hat sich geändert."
                    }
                  },
                  "dispute": {
                    "description": "Objekt mit Informationen über den Streitfall.",
                    "properties": {
                      "incoming_date": {
                        "$ref": "#/components/schemas/dispute-date"
                      },
                      "reason": {
                        "$ref": "#/components/schemas/dispute-reason"
                      },
                      "status": {
                        "$ref": "#/components/schemas/dispute-status"
                      },
                      "type": {
                        "$ref": "#/components/schemas/dispute-type"
                      }
                    },
                    "required": [
                      "incoming_date",
                      "reason",
                      "type",
                      "status"
                    ],
                    "type": "object"
                  },
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "settings": {
                    "description": "Objekt mit Informationen über die benutzerdefinierten Projekteinstellungen.",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "required": [
                      "project_id",
                      "merchant_id"
                    ],
                    "type": "object"
                  },
                  "transaction": {
                    "description": "Objekt mit Informationen über die Transaktion.",
                    "properties": {
                      "country_code": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "date_create": {
                        "$ref": "#/components/schemas/date-create"
                      },
                      "external_id": {
                        "$ref": "#/components/schemas/external-id"
                      },
                      "id": {
                        "$ref": "#/components/schemas/transaction-id"
                      },
                      "payment_method": {
                        "$ref": "#/components/schemas/dispute-payment-method"
                      },
                      "total": {
                        "description": "Objekt mit Informationen über den Transaktionsbetrag.",
                        "properties": {
                          "amount": {
                            "$ref": "#/components/schemas/transaction-total-amount"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "required": [
                          "amount",
                          "currency"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "id",
                      "date_create",
                      "total",
                      "payment_method",
                      "country_code"
                    ],
                    "type": "object"
                  },
                  "user": {
                    "description": "Objekt mit Informationen über einen Benutzer.",
                    "properties": {
                      "email": {
                        "$ref": "#/components/schemas/user.email"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "action",
                  "transaction",
                  "settings",
                  "user",
                  "dispute"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Streitfall",
        "tags": [
          "anti-fraud"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'authorization: Signature 32c64a80d2527dc08906ae1891bac4489509b9f6' \\\n-d '{\n  \"notification_type\": \"dispute\",\n  \"action\": \"adding\",\n  \"transaction\": {\n    \"id\": 123456789,\n    \"date_create\": \"2023-08-24T10:21:00+04:00\",\n    \"total\": {\n      \"amount\": 1,\n      \"currency\": \"EUR\"\n    },\n    \"payment_method\": \"credit_debit_card\"\n  },\n  \"settings\": {\n    \"project_id\": 18404,\n    \"merchant_id\": 2340\n  },\n  \"user\": {\n    \"id\": \"1234567\",\n    \"email\": \"email@example.com\",\n    \"country_code\": \"US\"\n  },\n  \"dispute\": {\n    \"incoming_date\": \"2024-01-25T01:02:03+04:00\",\n    \"reason\": \"not_as_described\",\n    \"type\": \"retrieval\",\n    \"status\": \"new\"\n  }\n}'"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your_uri HTTP/1.1\nhost: your.host\naccept: application/json\ncontent-Type: application/json\ncontent-Length: 578\nauthorization: Signature 31bd5924dd6cbc9cbe99d331c4a086a57291f9d7\n\n{\n  \"notification_type\": \"dispute\",\n  \"action\": \"adding\",\n  \"transaction\": {\n    \"id\": 123456789,\n    \"date_create\": \"2023-08-24T10:21:00+04:00\",\n    \"total\": {\n      \"amount\": 1,\n      \"currency\": \"EUR\"\n    },\n    \"payment_method\": \"credit_debit_card\"\n  },\n  \"settings\": {\n    \"project_id\": 18404,\n    \"merchant_id\": 2340\n  },\n  \"user\": {\n    \"id\": \"1234567\",\n    \"email\": \"email@example.com\",\n    \"country_code\": \"US\"\n  },\n  \"dispute\": {\n    \"incoming_date\": \"2024-01-25T01:02:03+04:00\",\n    \"reason\": \"not_as_described\",\n    \"type\": \"retrieval\",\n    \"status\": \"new\"\n  }\n}"
          }
        ]
      }
    },
    "nonrenewing-subscription": {
      "post": {
        "description": "Wird für ein Abonnement der Status \"Automatisch endend\" festgelegt, sendet Xsolla einen Webhook vom Typ `non_renewal_subscription` an die Webhook-URL. Wenden Sie sich an Ihren Customer Success Manager oder senden Sie eine E-Mail an <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>, wenn Sie diesen Webhook erhalten möchten.",
        "operationId": "nonrenewing-subscription",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "settings": {
                    "description": "Benutzerdefinierte Projekteinstellungen (Objekt).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "required": [
                      "project_id"
                    ],
                    "type": "object"
                  },
                  "subscription": {
                    "description": "Angaben zum Abonnement (Objekt).",
                    "properties": {
                      "amount": {
                        "description": "Preis in echter Währung.",
                        "format": "float",
                        "type": "number"
                      },
                      "currency": {
                        "$ref": "#/components/schemas/currency"
                      },
                      "date_create": {
                        "$ref": "#/components/schemas/subscription.date_create"
                      },
                      "date_next_charge": {
                        "description": "Nächstes Rechnungsdatum. Das ist das Datum, an dem die nächste Zahlung erwartet wurde, bevor das Benutzerabonnement auf \"Automatisch endend\" gesetzt wurde. Datum und Uhrzeit gemäß [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
                        "type": "string"
                      },
                      "plan_id": {
                        "$ref": "#/components/schemas/subscription.plan_id"
                      },
                      "subscription_id": {
                        "$ref": "#/components/schemas/subscription.subscription_id"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Benutzerdaten (Objekt).",
                    "properties": {
                      "email": {
                        "$ref": "#/components/schemas/user.email"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Automatisch endendes Abo",
        "tags": [
          "subscriptions"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \\\n-d '{\n        \"notification_type\": \"non_renewal_subscription\",\n        \"settings\": {\n          \"project_id\": 12345,\n          \"merchant_id\": 1234\n        },\n        \"user\": {\n            \"id\": \"1234567\",\n            \"email\": \"email@example.com\"\n        },\n        \"subscription\": {\n            \"plan_id\": \"a1bcd2e3\",\n            \"subscription_id\": \"10\",\n            \"date_create\": \"2014-12-22T15:25:25+04:00\",\n            \"date_next_charge\": \"2015-01-22T19:25:25+04:00\",\n            \"currency\": \"USD\",\n            \"amount\": 0.03\n        }\n    }'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n    'notification_type' => 'non_renewal_subscription',\n    'settings' => array(\n      'project_id' => 12345,\n      'merchant_id' => 1234\n    ),\n    'user' => array(\n        'id' => '1234567',\n        'email' => 'email@example.com'\n    ),\n    'subscription' => array(\n        'plan_id' => 'a1bcd2e3',\n        'subscription_id' => '10',\n        'date_create' => '2014-12-22T15:25:25+04:00',\n        'date_next_charge' => '2015-01-22T19:25:25+04:00',\n        'currency' => 'USD',\n        'amount' => 0.03\n    )\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost: your.hostname\naccept: application/json\ncontent-type: application/json\ncontent-length: 240\nauthorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f\n\n{\n    \"notification_type\": \"non_renewal_subscription\",\n    \"settings\": {\n      \"project_id\": 12345,\n      \"merchant_id\": 1234\n    },\n    \"user\": {\n        \"id\": \"1234567\",\n        \"email\": \"email@example.com\"\n    },\n    \"subscription\": {\n        \"plan_id\": \"a1bcd2e3\",\n        \"subscription_id\": \"10\",\n        \"date_create\": \"2014-12-22T15:25:25+04:00\",\n        \"date_next_charge\": \"2015-01-22T19:25:25+04:00\",\n        \"currency\": \"USD\",\n        \"amount\": 0.03\n    }\n}"
          }
        ]
      }
    },
    "order-cancellation": {
      "post": {
        "description": "Xsolla sendet den Webhook <code>order_canceled</code> an die angegebene URL, \nwenn die Zahlung vom Nutzer, Partner oder automatisch storniert wurde. Der \nWebhook enthält Informationen über zurückgesandte Artikel, Zahlungsdaten und \nDetails zur stornierten Bestellung.\n\nDer Webhook wird nicht gesendet, wenn die Zahlung nicht erfolgreich war, zum \nBeispiel:\n* das Zahlungsportal geöffnet wurde, aber der Nutzer die Bestellung nicht bezahlt \n  hat\n* das Zahlungsportal geöffnet wurde, aber während der Zahlung Fehler auftraten\n\nDie empfohlene Verarbeitungszeit für Webhooks beträgt maximal drei Sekunden.\n",
        "operationId": "order-cancellation",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "billing": {
                    "description": "Transaktions- und Zahlungsdetails.",
                    "properties": {
                      "notification_type": {
                        "$ref": "#/components/schemas/notification_type"
                      },
                      "payment_details": {
                        "description": "Zahlungsdaten (Objekt).",
                        "properties": {
                          "country_wht": {
                            "$ref": "#/components/schemas/country_whc"
                          },
                          "direct_wht": {
                            "description": "Direkte Quellensteuer.",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              },
                              "percent": {
                                "description": "Direkter Quellensteuersatz.",
                                "format": "float",
                                "type": "number"
                              }
                            },
                            "type": "object"
                          },
                          "payment": {
                            "description": "Vom Benutzer entrichteter Betrag (Objekt).",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "payment_method_fee": {
                            "description": "Gebühren des Zahlungssystems.",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "payment_method_sum": {
                            "description": "Betrag, der vom Zahlungssystem abgebucht wird.",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "payout": {
                            "description": "Details zur Auszahlung (Objekt).",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "payout_currency_rate": {
                            "description": "Wechselkurs zwischen Zahlungs- und Auszahlungswährung.",
                            "type": "string"
                          },
                          "repatriation_commission": {
                            "description": "Objekt mit Daten über die Rückübertragungskosten, die Xsolla von Dritten auferlegt wurden.",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "sales_tax": {
                            "description": "Sales Tax (Objekt; nur in den USA und Kanada).",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              },
                              "percent": {
                                "description": "Sales-Tax-Steuersatz.",
                                "format": "float",
                                "type": "number"
                              }
                            },
                            "type": "object"
                          },
                          "user_acquisition_fee": {
                            "description": "Der Gesamtbetrag der Nutzerakquisitionsgebühren, der für die durch Affiliate-Netzwerke und Influencer vermittelten Käufe abgezogen wird (Objekt).",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              },
                              "percent": {
                                "description": "Gebührensatz für die Nutzerakquise (in %).",
                                "format": "float",
                                "type": "number"
                              }
                            },
                            "type": "object"
                          },
                          "vat": {
                            "description": "Angaben zur MwSt. (Objekt, nur in der EU).",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              },
                              "percent": {
                                "description": "Mehrwertsteuersatz.",
                                "format": "float",
                                "type": "number"
                              }
                            },
                            "type": "object"
                          },
                          "xsolla_balance_sum": {
                            "description": "Betrag, der vom Xsolla-Konto abgebucht wird.",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "xsolla_fee": {
                            "description": "Xsolla-Gebühr (Objekt).",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "purchase": {
                        "description": "Objekt, welches Angaben zum Kauf enthält.",
                        "properties": {
                          "subscription": {
                            "description": "Angaben zum Abonnement (Objekt).",
                            "properties": {
                              "amount": {
                                "$ref": "#/components/schemas/amount-float"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              },
                              "date_create": {
                                "$ref": "#/components/schemas/subscription.date_create"
                              },
                              "plan_id": {
                                "$ref": "#/components/schemas/subscription.plan_id"
                              },
                              "subscription_id": {
                                "$ref": "#/components/schemas/subscription.subscription_id"
                              },
                              "tags": {
                                "$ref": "#/components/schemas/subscription.tags"
                              }
                            },
                            "type": "object"
                          },
                          "total": {
                            "description": "Gesamtpreis des Einkaufs (Objekt).",
                            "properties": {
                              "amount": {
                                "description": "Gesamtbetrag der Zahlung.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "required": [
                          "total"
                        ],
                        "type": "object"
                      },
                      "refund_details": {
                        "description": "Benutzerdaten (Objekt).",
                        "properties": {
                          "author": {
                            "description": "Erstattungsinitiator. Der Feldwert wird gemäß der Tabelle übermittelt:\n\n<table>\n    <thead>\n    <tr>\n        <th>Erstattungsinitiator</th>\n        <th>Feldwert</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td>Spiel (über API).</td>\n        <td>API</td>\n    </tr>\n    <tr>\n        <td>Kundenportal-Nutzer (automatische Erstattung).</td>\n        <td>E-Mail-Adresse des Nutzers</td>\n    </tr>\n    <tr>\n        <td>Kundenportal-Nutzer (mit Unterstützung des Xsolla-Kundensupports).</td>\n        <td>support@xsolla.com</td>\n    </tr>\n    <tr>\n        <td>Xsolla (mit Unterstützung des Xsolla-Kundensupports).</td>\n        <td>support@xsolla.com</td>\n    </tr>\n    </tbody>\n</table>\n",
                            "type": "string"
                          },
                          "code": {
                            "description": "Code-ID.",
                            "type": "integer"
                          },
                          "reason": {
                            "description": "Grund für die Rückerstattung.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "settings": {
                        "description": "Benutzerdefinierte Projekteinstellungen (Objekt).",
                        "properties": {
                          "merchant_id": {
                            "$ref": "#/components/schemas/settings.merchant_id"
                          },
                          "project_id": {
                            "$ref": "#/components/schemas/settings.project_id"
                          }
                        },
                        "type": "object"
                      },
                      "transaction": {
                        "description": "Details zur Transaktion (Objekt).",
                        "properties": {
                          "agreement": {
                            "description": "ID der Vereinbarung.",
                            "type": "integer"
                          },
                          "dry_run": {
                            "description": "Testtransaktion. Der Parameter hat den Wert 1, wenn es sich um eine Testtransaktion handelt. Er wird nicht gesendet, wenn es sich um eine echte Transaktion handelt.",
                            "type": "integer"
                          },
                          "external_id": {
                            "description": "Externe ID der Transaktion.",
                            "type": "string"
                          },
                          "id": {
                            "description": "ID der Transaktion.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "payment_method_order_id": {
                            "description": "Zahlungs-ID im Zahlungssystem.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "required": [
                      "notification_type",
                      "transaction",
                      "payment_details"
                    ],
                    "type": "object"
                  },
                  "custom_parameters": {
                    "description": "Zusätzliche Informationen.",
                    "type": "object"
                  },
                  "items": {
                    "description": "Liste der vom Nutzer gekauften Artikel.\n\nDie im Array enthaltenen Parameter hängen von der Webhook-Version ab. In \nVersion 2 sind zusätzliche Parameter enthalten: `is_free`, `is_bonus` und \n`is_bundle_content`. Geben Sie die entsprechende Nummer im Parameter `version` \nim API-Aufruf [Informationen zu Webhook-Einstellungen \naktualisieren](/de/api/igs/operation/update-webhook/) an, um die Version zu \nwechseln.\n",
                    "items": {
                      "oneOf": [
                        {
                          "properties": {
                            "amount": {
                              "description": "Gesamtkosten der Artikel basierend auf ihrer Menge.",
                              "type": "string"
                            },
                            "custom_attributes": {
                              "description": "Ein JSON-Objekt mit Artikelattributen und ‑werten.",
                              "type": "object"
                            },
                            "is_pre_order": {
                              "description": "Ist `true` festgelegt, kann der Artikel vorbestellt werden.",
                              "type": "boolean"
                            },
                            "promotions": {
                              "$ref": "#/components/schemas/items.promotions"
                            },
                            "quantity": {
                              "description": "Menge der Gegenstände.",
                              "type": "integer"
                            },
                            "sku": {
                              "$ref": "#/components/schemas/items.sku"
                            },
                            "type": {
                              "$ref": "#/components/schemas/items.type"
                            }
                          },
                          "required": [
                            "sku",
                            "type",
                            "quantity",
                            "amount",
                            "promotions",
                            "is_pre_order"
                          ],
                          "title": "Version = 1",
                          "type": "object"
                        },
                        {
                          "properties": {
                            "amount": {
                              "description": "Gesamtkosten der Artikel basierend auf ihrer Menge.",
                              "type": "string"
                            },
                            "custom_attributes": {
                              "description": "Ein JSON-Objekt mit Artikelattributen und ‑werten.",
                              "type": "object"
                            },
                            "is_bonus": {
                              "description": "Ist `true` festgelegt, ist der Artikel ein Bonus.",
                              "type": "boolean"
                            },
                            "is_bundle_content": {
                              "description": "Ist `true` festgelegt, gehört der Artikel zu einem Bundle.",
                              "type": "boolean"
                            },
                            "is_free": {
                              "description": "Ist `true` festgelegt, ist der Artikel kostenlos.",
                              "type": "boolean"
                            },
                            "is_pre_order": {
                              "description": "Ist `true` festgelegt, kann der Artikel vorbestellt werden.",
                              "type": "boolean"
                            },
                            "promotions": {
                              "$ref": "#/components/schemas/items.promotions"
                            },
                            "quantity": {
                              "description": "Menge der Gegenstände.",
                              "type": "integer"
                            },
                            "sku": {
                              "$ref": "#/components/schemas/items.sku"
                            },
                            "type": {
                              "$ref": "#/components/schemas/items.type"
                            }
                          },
                          "required": [
                            "sku",
                            "type",
                            "quantity",
                            "amount",
                            "promotions",
                            "is_pre_order",
                            "is_free",
                            "is_bonus",
                            "is_bundle_content"
                          ],
                          "title": "Version = 2",
                          "type": "object"
                        }
                      ]
                    },
                    "type": "array"
                  },
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "order": {
                    "description": "Bestellinformationen.",
                    "properties": {
                      "amount": {
                        "description": "Die Gesamtkosten eines Warenkorbs basierend auf der gewählten Währung.",
                        "type": "string"
                      },
                      "comment": {
                        "description": "Benutzeranmerkung der Bestellung.",
                        "nullable": true,
                        "type": "string"
                      },
                      "coupons": {
                        "description": "Angewandte Gutscheine. Wird der Gutschein nicht angewendet, wird kein Array zurückgegeben.",
                        "items": {
                          "properties": {
                            "code": {
                              "description": "Der Code eines angewandten Gutscheins.",
                              "type": "string"
                            },
                            "external_id": {
                              "description": "Externe ID.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "currency": {
                        "description": "Währung der Bestellung. Bei virtuellen Währungen wird die SKU und bei echten Währungen der aus drei Buchstaben bestehende Code gemäß [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) genutzt.",
                        "type": "string"
                      },
                      "currency_type": {
                        "$ref": "#/components/schemas/currency-type"
                      },
                      "id": {
                        "description": "Eindeutige Kennung der Bestellung des Benutzers aufseiten von Xsolla.",
                        "type": "integer"
                      },
                      "invoice_id": {
                        "description": "Rechnungs-ID bei Zahlungen mit echter Währung. Bei Zahlungen mit virtueller Währung oder bei kostenlosen Artikeln wird der Wert `null` genutzt.",
                        "nullable": true,
                        "type": "string"
                      },
                      "mode": {
                        "description": "Zahlungsmodus. `default` wird bei realen Zahlungen verwendet; `sandbox` bei Testzahlungen.",
                        "enum": [
                          "default",
                          "sandbox"
                        ],
                        "type": "string"
                      },
                      "platform": {
                        "description": "Zahlungsplattform. Bei Zahlungen über Xsolla wird der Wert `xsolla` verwendet. Bei anderen Zahlungen entspricht der Wert dem Namen der Publishing-Plattform: `playstation_network`, `xbox_live`, `pc_standalone`, `nintendo_shop`, `google_play`, `app_store_ios`, `android_standalone`, `ios_standalone`, `android_other`, `ios_other`, `pc_other`.",
                        "enum": [
                          "xsolla",
                          "playstation_network",
                          "xbox_live",
                          "pc_standalone",
                          "nintendo_shop",
                          "google_play",
                          "app_store_ios",
                          "android_standalone",
                          "ios_standalone",
                          "android_other",
                          "ios_other",
                          "pc_other"
                        ],
                        "nullable": true,
                        "type": "string"
                      },
                      "promocodes": {
                        "description": "Angewandte Promocodes. Wird der Promocode nicht angewandt, wird kein Array zurückgegeben.",
                        "items": {
                          "properties": {
                            "code": {
                              "description": "Der Code eines angewandten Promocodes.",
                              "type": "string"
                            },
                            "external_id": {
                              "description": "Externe ID.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "promotions": {
                        "$ref": "#/components/schemas/order.promotions"
                      },
                      "status": {
                        "description": "Bestellstatus.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "mode",
                      "currency_type",
                      "currency",
                      "amount",
                      "status",
                      "platform",
                      "comment",
                      "invoice_id",
                      "promotions"
                    ],
                    "type": "object"
                  },
                  "user": {
                    "description": "Benutzerinformationen.",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "description": "E-Mail-Adresse des Benutzers.",
                        "type": "string"
                      },
                      "external_id": {
                        "description": "Benutzer-ID.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "external_id",
                      "email"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "items",
                  "order",
                  "user",
                  "transaction",
                  "payment_details"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Zur Signalisierung einer erfolgreiche Verarbeitung."
          },
          "400": {
            "description": "Im Falle eines Fehlers in den bereitgestellten Daten (z. B. fehlender erforderlicher Parameter, fehlgeschlagene Autorisierung usw.)."
          }
        },
        "summary": "Stornierung der Bestellung (mit Zahlungs- und Transaktionsdetails)",
        "tags": [
          "combined-webhooks"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \\\n-d '{\n    \"notification_type\": \"order_canceled\",\n    \"items\": [\n      {\n        \"sku\": \"com.xsolla.v.item_1\",\n        \"type\": \"virtual_good\",\n        \"is_pre_order\": false,\n        \"quantity\": 3,\n        \"amount\": \"1000\",\n        \"promotions\": [\n          {\n            \"amount_without_discount\": \"6000\",\n            \"amount_with_discount\": \"5000\",\n            \"sequence\": 1\n          },\n          {\n            \"amount_without_discount\": \"5000\",\n            \"amount_with_discount\": \"4000\",\n            \"sequence\": 2\n          }\n        ],\n        \"custom_attributes\": {\n            \"purchased\": 0,\n            \"attr\": \"value\"\n          }\n      },\n      {\n        \"sku\": \"com.xsolla.v.item_new_1\",\n        \"type\": \"bundle\",\n        \"is_pre_order\": false,\n        \"quantity\": 1,\n        \"amount\": \"1000\",\n        \"promotions\": []\n      },\n      {\n        \"sku\": \"com.xsolla.gold_1\",\n        \"type\": \"virtual_currency\",\n        \"is_pre_order\": false,\n        \"quantity\": 1500,\n        \"amount\": null,\n        \"promotions\": []\n      }\n    ],\n    \"order\": {\n      \"id\": 1,\n      \"mode\": \"default\",\n      \"currency_type\": \"virtual\",\n      \"currency\": \"sku_currency\",\n      \"amount\": \"2000\",\n      \"status\": \"paid\",\n      \"platform\": \"xsolla\",\n      \"comment\": null,\n      \"invoice_id\": \"1\",\n      \"promotions\": [\n        {\n          \"amount_without_discount\": \"4000\",\n          \"amount_with_discount\": \"2000\",\n          \"sequence\": 1\n        }\n      ],\n      \"promocodes\": [\n        {\n          \"code\": \"promocode_some_code\",\n          \"external_id\": \"promocode_sku\"\n        }\n      ],\n      \"coupons\": [\n        {\n          \"code\": \"WINTER2021\",\n          \"external_id\": \"coupon_sku\"\n        }\n      ]\n    },\n    \"user\": {\n      \"external_id\": \"id_xsolla_login_1\",\n      \"email\": \"email@example.com\",\n      \"country\": \"US\"\n    },\n    \"billing\": {\n      \"notification_type\": \"refund\",\n      \"settings\": {\n        \"project_id\": 18404,\n        \"merchant_id\": 2340\n      },\n      \"purchase\": {\n              \"subscription\": {\n                  \"plan_id\": \"b5dac9c8\",\n                  \"subscription_id\": \"10\",\n                  \"date_create\": \"2014-09-22T19:25:25+04:00\",\n                  \"currency\": \"USD\",\n                  \"amount\": 9.99\n              },\n              \"total\":{\n                  \"currency\": \"USD\",\n                  \"amount\": 200\n              }\n          },\n      \"transaction\": {\n              \"id\": 1,\n              \"external_id\": 1,\n              \"dry_run\": 1,\n              \"agreement\": 1\n          },\n      \"refund_details\": {\n              \"code\": 4,\n              \"reason\": \"Potential fraud\"\n          },\n      \"payment_details\": {\n              \"sales_tax\": {\n                  \"currency\": \"USD\",\n                  \"amount\": 0\n              },\n              \"direct_wht\": {\n                  \"currency\": \"USD\",\n                  \"amount\": 0.70\n              },\n              \"xsolla_fee\": {\n                  \"currency\": \"USD\",\n                  \"amount\": \"10\"\n              },\n              \"payout\": {\n                  \"currency\": \"USD\",\n                  \"amount\": \"200\"\n              },\n              \"payment_method_fee\": {\n                  \"currency\": \"USD\",\n                  \"amount\": \"20\"\n              },\n              \"payment\": {\n                  \"currency\": \"USD\",\n                  \"amount\": \"230\"\n              },\n              \"repatriation_commission\": {\n                  \"currency\": \"USD\",\n                  \"amount\": 10\n              }\n          }\n    }\n}"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost:           your.hostname\naccept:         application/json\ncontent-length: 258\ncontent-type:   application/json\nauthorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523\n\n\n{\n    \"notification_type\": \"order_canceled\",\n    \"items\": [\n      {\n        \"sku\": \"com.xsolla.v.item_1\",\n        \"type\": \"virtual_good\",\n        \"is_pre_order\": false,\n        \"quantity\": 3,\n        \"amount\": \"1000\",\n        \"promotions\": [\n          {\n            \"amount_without_discount\": \"6000\",\n            \"amount_with_discount\": \"5000\",\n            \"sequence\": 1\n          },\n          {\n            \"amount_without_discount\": \"5000\",\n            \"amount_with_discount\": \"4000\",\n            \"sequence\": 2\n          }\n        ],\n        \"custom_attributes\": {\n            \"purchased\": 0,\n            \"attr\": \"value\"\n          }\n      },\n      {\n        \"sku\": \"com.xsolla.v.item_new_1\",\n        \"type\": \"bundle\",\n        \"is_pre_order\": false,\n        \"quantity\": 1,\n        \"amount\": \"1000\",\n        \"promotions\": []\n      },\n      {\n        \"sku\": \"com.xsolla.gold_1\",\n        \"type\": \"virtual_currency\",\n        \"is_pre_order\": false,\n        \"quantity\": 1500,\n        \"amount\": null,\n        \"promotions\": []\n      }\n    ],\n    \"order\": {\n      \"id\": 1,\n      \"mode\": \"default\",\n      \"currency_type\": \"virtual\",\n      \"currency\": \"sku_currency\",\n      \"amount\": \"2000\",\n      \"status\": \"paid\",\n      \"platform\": \"xsolla\",\n      \"comment\": null,\n      \"invoice_id\": \"1\",\n      \"promotions\": [\n        {\n          \"amount_without_discount\": \"4000\",\n          \"amount_with_discount\": \"2000\",\n          \"sequence\": 1\n        }\n      ],\n      \"promocodes\": [\n        {\n          \"code\": \"promocode_some_code\",\n          \"external_id\": \"promocode_sku\"\n        }\n      ],\n      \"coupons\": [\n        {\n          \"code\": \"WINTER2021\",\n          \"external_id\": \"coupon_sku\"\n        }\n      ]\n    },\n    \"user\": {\n      \"external_id\": \"id_xsolla_login_1\",\n      \"email\": \"email@example.com\",\n      \"country\": \"US\"\n    },\n    \"billing\": {\n      \"notification_type\": \"refund\",\n      \"settings\": {\n        \"project_id\": 18404,\n        \"merchant_id\": 2340\n      },\n      \"purchase\": {\n          \"subscription\": {\n              \"plan_id\": \"b5dac9c8\",\n              \"subscription_id\": \"10\",\n              \"date_create\": \"2014-09-22T19:25:25+04:00\",\n              \"currency\": \"USD\",\n              \"amount\": 9.99\n          },\n          \"total\": {\n              \"currency\": \"USD\",\n              \"amount\": 200\n          }\n      },\n      \"transaction\": {\n          \"id\": 1,\n          \"external_id\": 1,\n          \"dry_run\": 1,\n          \"agreement\": 1\n      },\n      \"refund_details\": {\n          \"code\": 4,\n          \"reason\": \"Potential fraud\"\n      },\n      \"payment_details\": {\n          \"sales_tax\": {\n              \"currency\": \"USD\",\n              \"amount\": 0\n          },\n          \"direct_wht\": {\n              \"currency\": \"USD\",\n              \"amount\": 0.70\n          },\n          \"xsolla_fee\": {\n              \"currency\": \"USD\",\n              \"amount\": \"10\"\n          },\n          \"payout\": {\n              \"currency\": \"USD\",\n              \"amount\": \"200\"\n          },\n          \"payment_method_fee\": {\n              \"currency\": \"USD\",\n              \"amount\": \"20\"\n          },\n          \"payment\": {\n              \"currency\": \"USD\",\n              \"amount\": \"230\"\n          },\n          \"repatriation_commission\": {\n              \"currency\": \"USD\",\n              \"amount\": 10\n          }\n        }\n      }\n    }"
          }
        ]
      }
    },
    "order-cancellation-separate": {
      "post": {
        "description": "Xsolla sendet den Webhook <code>order_canceled</code> an die angegebene URL, \nwenn die Zahlung vom Nutzer, Partner oder automatisch storniert wurde. Der \nWebhook enthält Informationen über zurückgesandte Artikel und Details zur \nstornierten Bestellung.\n\nDer Webhook wird nicht gesendet, wenn die Zahlung nicht erfolgreich war, zum \nBeispiel:\n* das Zahlungsportal geöffnet wurde, aber der Nutzer die Bestellung nicht bezahlt \n  hat\n* das Zahlungsportal geöffnet wurde, aber während der Zahlung Fehler auftraten\n\nDie empfohlene Verarbeitungszeit für Webhooks beträgt maximal drei Sekunden.\n",
        "operationId": "order-cancellation-separate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "custom_parameters": {
                    "description": "Zusätzliche Informationen.",
                    "type": "object"
                  },
                  "items": {
                    "description": "Liste der vom Nutzer gekauften Artikel.\n\nDie im Array enthaltenen Parameter hängen von der Webhook-Version ab. In \nVersion 2 sind zusätzliche Parameter enthalten: `is_free`, `is_bonus` und \n`is_bundle_content`. Geben Sie die entsprechende Nummer im Parameter `version` \nim API-Aufruf [Informationen zu Webhook-Einstellungen \naktualisieren](/de/api/igs/operation/update-webhook/) an, um die Version zu \nwechseln.\n",
                    "items": {
                      "oneOf": [
                        {
                          "properties": {
                            "amount": {
                              "description": "Gesamtkosten der Artikel basierend auf ihrer Menge.",
                              "type": "string"
                            },
                            "custom_attributes": {
                              "description": "Ein JSON-Objekt mit Artikelattributen und ‑werten.",
                              "type": "object"
                            },
                            "is_pre_order": {
                              "description": "Ist `true` festgelegt, kann der Artikel vorbestellt werden.",
                              "type": "boolean"
                            },
                            "promotions": {
                              "$ref": "#/components/schemas/items.promotions"
                            },
                            "quantity": {
                              "description": "Menge der Gegenstände.",
                              "type": "integer"
                            },
                            "sku": {
                              "$ref": "#/components/schemas/items.sku"
                            },
                            "type": {
                              "$ref": "#/components/schemas/items.type"
                            }
                          },
                          "required": [
                            "sku",
                            "type",
                            "quantity",
                            "amount",
                            "promotions",
                            "is_pre_order"
                          ],
                          "title": "Version = 1",
                          "type": "object"
                        },
                        {
                          "properties": {
                            "amount": {
                              "description": "Gesamtkosten der Artikel basierend auf ihrer Menge.",
                              "type": "string"
                            },
                            "custom_attributes": {
                              "description": "Ein JSON-Objekt mit Artikelattributen und ‑werten.",
                              "type": "object"
                            },
                            "is_bonus": {
                              "description": "Ist `true` festgelegt, ist der Artikel ein Bonus.",
                              "type": "boolean"
                            },
                            "is_bundle_content": {
                              "description": "Ist `true` festgelegt, gehört der Artikel zu einem Bundle.",
                              "type": "boolean"
                            },
                            "is_free": {
                              "description": "Ist `true` festgelegt, ist der Artikel kostenlos.",
                              "type": "boolean"
                            },
                            "is_pre_order": {
                              "description": "Ist `true` festgelegt, kann der Artikel vorbestellt werden.",
                              "type": "boolean"
                            },
                            "promotions": {
                              "description": "Angewandte Werbeaktion. Falls keine Werbeaktion angewandt wurde, wird ein leeres Array im Parameter übermittelt.",
                              "items": {
                                "properties": {
                                  "amount_with_discount": {
                                    "description": "Gesamtkosten der Gegenstände inklusive Rabatt.",
                                    "type": "string"
                                  },
                                  "amount_without_discount": {
                                    "description": "Gesamtkosten der Gegenstände ohne Rabatt.",
                                    "type": "string"
                                  },
                                  "sequence": {
                                    "description": "Reihenfolge der angewandten Werbeaktionen.",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "type": "array"
                            },
                            "quantity": {
                              "description": "Menge der Gegenstände.",
                              "type": "integer"
                            },
                            "sku": {
                              "$ref": "#/components/schemas/items.sku"
                            },
                            "type": {
                              "$ref": "#/components/schemas/items.type"
                            }
                          },
                          "required": [
                            "sku",
                            "type",
                            "quantity",
                            "amount",
                            "promotions",
                            "is_pre_order",
                            "is_free",
                            "is_bonus",
                            "is_bundle_content"
                          ],
                          "title": "Version = 2",
                          "type": "object"
                        }
                      ]
                    },
                    "type": "array"
                  },
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "order": {
                    "description": "Bestellinformationen.",
                    "properties": {
                      "amount": {
                        "description": "Die Gesamtkosten eines Warenkorbs basierend auf der gewählten Währung.",
                        "type": "string"
                      },
                      "comment": {
                        "description": "Benutzeranmerkung der Bestellung.",
                        "nullable": true,
                        "type": "string"
                      },
                      "coupons": {
                        "description": "Angewandte Gutscheine. Wird der Gutschein nicht angewendet, wird kein Array zurückgegeben.",
                        "items": {
                          "properties": {
                            "code": {
                              "description": "Der Code eines angewandten Gutscheins.",
                              "type": "string"
                            },
                            "external_id": {
                              "description": "Externe ID.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "currency": {
                        "description": "Währung der Bestellung. Bei virtuellen Währungen wird die SKU und bei echten Währungen der aus drei Buchstaben bestehende Code gemäß [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) genutzt.",
                        "type": "string"
                      },
                      "currency_type": {
                        "$ref": "#/components/schemas/currency-type"
                      },
                      "id": {
                        "description": "Eindeutige Kennung der Bestellung des Benutzers aufseiten von Xsolla.",
                        "type": "integer"
                      },
                      "invoice_id": {
                        "description": "Rechnungs-ID bei Zahlungen mit echter Währung. Bei Zahlungen mit virtueller Währung oder bei kostenlosen Artikeln wird der Wert `null` genutzt.",
                        "nullable": true,
                        "type": "string"
                      },
                      "mode": {
                        "description": "Zahlungsmodus. `default` wird bei realen Zahlungen verwendet; `sandbox` bei Testzahlungen.",
                        "enum": [
                          "default",
                          "sandbox"
                        ],
                        "type": "string"
                      },
                      "platform": {
                        "description": "Zahlungsplattform. Bei Zahlungen über Xsolla wird der Wert `xsolla` verwendet. Bei anderen Zahlungen entspricht der Wert dem Namen der Publishing-Plattform: `playstation_network`, `xbox_live`, `pc_standalone`, `nintendo_shop`, `google_play`, `app_store_ios`, `android_standalone`, `ios_standalone`, `android_other`, `ios_other`, `pc_other`.",
                        "enum": [
                          "xsolla",
                          "playstation_network",
                          "xbox_live",
                          "pc_standalone",
                          "nintendo_shop",
                          "google_play",
                          "app_store_ios",
                          "android_standalone",
                          "ios_standalone",
                          "android_other",
                          "ios_other",
                          "pc_other"
                        ],
                        "nullable": true,
                        "type": "string"
                      },
                      "promocodes": {
                        "description": "Angewandte Promocodes. Wird der Promocode nicht angewandt, wird kein Array zurückgegeben.",
                        "items": {
                          "properties": {
                            "code": {
                              "description": "Der Code eines angewandten Promocodes.",
                              "type": "string"
                            },
                            "external_id": {
                              "description": "Externe ID.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "promotions": {
                        "$ref": "#/components/schemas/order.promotions"
                      },
                      "status": {
                        "description": "Bestellstatus.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "mode",
                      "currency_type",
                      "currency",
                      "amount",
                      "status",
                      "platform",
                      "comment",
                      "invoice_id",
                      "promotions"
                    ],
                    "type": "object"
                  },
                  "user": {
                    "description": "Benutzerinformationen.",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "description": "E-Mail-Adresse des Benutzers.",
                        "type": "string"
                      },
                      "external_id": {
                        "description": "Benutzer-ID.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "external_id",
                      "email"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "items",
                  "order",
                  "user"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Zur Signalisierung einer erfolgreiche Verarbeitung."
          },
          "400": {
            "description": "Im Falle eines Fehlers in den bereitgestellten Daten (z. B. fehlender erforderlicher Parameter, fehlgeschlagene Autorisierung usw.)."
          }
        },
        "summary": "Stornierung der Bestellung (ohne Zahlungs- und Transaktionsdetails)",
        "tags": [
          "separate-webhooks"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \\\n-d '{\n    \"notification_type\": \"order_canceled\",\n    \"items\": [\n      {\n        \"sku\": \"com.xsolla.v.item_1\",\n        \"type\": \"virtual_good\",\n        \"is_pre_order\": false,\n        \"quantity\": 3,\n        \"amount\": \"1000\",\n        \"promotions\": [\n          {\n            \"amount_without_discount\": \"6000\",\n            \"amount_with_discount\": \"5000\",\n            \"sequence\": 1\n          },\n          {\n            \"amount_without_discount\": \"5000\",\n            \"amount_with_discount\": \"4000\",\n            \"sequence\": 2\n          }\n        ],\n        \"custom_attributes\": {\n            \"purchased\": 0,\n            \"attr\": \"value\"\n          }\n      },\n      {\n        \"sku\": \"com.xsolla.v.item_new_1\",\n        \"type\": \"bundle\",\n        \"is_pre_order\": false,\n        \"quantity\": 1,\n        \"amount\": \"1000\",\n        \"promotions\": []\n      },\n      {\n        \"sku\": \"com.xsolla.gold_1\",\n        \"type\": \"virtual_currency\",\n        \"is_pre_order\": false,\n        \"quantity\": 1500,\n        \"amount\": \"[null]\",\n        \"promotions\": []\n      }\n    ],\n    \"order\": {\n      \"id\": 1,\n      \"mode\": \"default\",\n      \"currency_type\": \"virtual\",\n      \"currency\": \"sku_currency\",\n      \"amount\": \"2000\",\n      \"status\": \"paid\",\n      \"platform\": \"xsolla\",\n      \"comment\": null,\n      \"invoice_id\": \"1\",\n      \"promotions\": [\n        {\n          \"amount_without_discount\": \"4000\",\n          \"amount_with_discount\": \"2000\",\n          \"sequence\": 1\n        }\n      ],\n      \"promocodes\": [\n        {\n          \"code\": \"promocode_some_code\",\n          \"external_id\": \"promocode_sku\"\n        }\n      ],\n      \"coupons\": [\n        {\n          \"code\": \"WINTER2021\",\n          \"external_id\": \"coupon_sku\"\n        }\n      ]\n    },\n    \"user\": {\n      \"external_id\": \"id_xsolla_login_1\",\n      \"email\": \"email@example.com\",\n      \"country\": \"US\"\n    }\n\n}'"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost:           your.hostname\naccept:         application/json\ncontent-length: 258\ncontent-type:   application/json\nauthorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523\n\n\n{\n    \"notification_type\": \"order_canceled\",\n    \"items\": [\n      {\n        \"sku\": \"com.xsolla.v.item_1\",\n        \"type\": \"virtual_good\",\n        \"is_pre_order\": false,\n        \"quantity\": 3,\n        \"amount\": \"1000\",\n        \"promotions\": [\n          {\n            \"amount_without_discount\": \"6000\",\n            \"amount_with_discount\": \"5000\",\n            \"sequence\": 1\n          },\n          {\n            \"amount_without_discount\": \"5000\",\n            \"amount_with_discount\": \"4000\",\n            \"sequence\": 2\n          }\n        ],\n        \"custom_attributes\": {\n            \"purchased\": 0,\n            \"attr\": \"value\"\n          }\n      },\n      {\n        \"sku\": \"com.xsolla.v.item_new_1\",\n        \"type\": \"bundle\",\n        \"is_pre_order\": false,\n        \"quantity\": 1,\n        \"amount\": \"1000\",\n        \"promotions\": []\n      },\n      {\n        \"sku\": \"com.xsolla.gold_1\",\n        \"type\": \"virtual_currency\",\n        \"is_pre_order\": false,\n        \"quantity\": 1500,\n        \"amount\": \"[null]\",\n        \"promotions\": []\n      }\n    ],\n    \"order\": {\n      \"id\": 1,\n      \"mode\": \"default\",\n      \"currency_type\": \"virtual\",\n      \"currency\": \"sku_currency\",\n      \"amount\": \"2000\",\n      \"status\": \"paid\",\n      \"platform\": \"xsolla\",\n      \"comment\": null,\n      \"invoice_id\": \"1\",\n      \"promotions\": [\n        {\n          \"amount_without_discount\": \"4000\",\n          \"amount_with_discount\": \"2000\",\n          \"sequence\": 1\n        }\n      ],\n      \"promocodes\": [\n        {\n          \"code\": \"promocode_some_code\",\n          \"external_id\": \"promocode_sku\"\n        }\n      ],\n      \"coupons\": [\n        {\n          \"code\": \"WINTER2021\",\n          \"external_id\": \"coupon_sku\"\n        }\n      ]\n    },\n    \"user\": {\n      \"external_id\": \"id_xsolla_login_1\",\n      \"email\": \"email@example.com\",\n      \"country\": \"US\"\n    }\n}"
          }
        ]
      }
    },
    "partial-refund": {
      "post": {
        "description": "Wird ein Betrag teilweise erstattet, sendet Xsolla die Details der stornierten \nTransaktion in einem Webhook vom Typ `partial_refund` an die Webhook-URL. \nWeitere Informationen zu Teilerstattungen finden Sie in dieser [Anleitung](/de/doc/pay-station/features/refund/#pay_station_features_refund_how_it_works_partial_refund_flow).\n\nWenn Sie die Webhook-URL im Kundenportal speichern, können Sie Berechtigungen \nerteilen, detaillierte Informationen in Webhooks zu empfangen. Aktivieren Sie \ndazu im Kundenportal unter <a \nhref=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/store\">Projekteins\ntellungen &gt; Webhooks &gt; Erweiterte Einstellungen</a> den folgenden \nSchalter.\n\n<div class=\"note\">\n<p><strong>Hinweis</strong></p>\n<p>Wenn Sie sich am oder vor dem 22. Januar 2025 im Kundenportal registriert haben, finden Sie die Schalter unter <a href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/payments\">Projekteinstellungen &gt; Webhooks &gt; Testen &gt; Payments &gt; Erweiterte Einstellungen</a>.</p>\n</div>\n\n<table>\n<thead>\n    <tr>\n        <th>Schalter</th>\n        <th>Beschreibung</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Infos über Transaktionen anzeigen, die mit gespeicherten Zahlungsmethoden getätigt wurden</td>\n        <td><p>Informationen werden in den folgenden benutzerdefinierten Parametern des Webhooks übermittelt.</p><ul><li><code>saved_payment_method</code>:<ul><li><code>0</code> – die gespeicherte Zahlungsmethode wurde nicht verwendet</li><li><code>1</code> – die Zahlungsmethode wurde während des aktuellen Bezahlvorgangs gespeichert</li><li><code>2</code> – die zuvor gespeicherte Zahlungsmethode wird verwendet</li></ul></li><li><code>payment_type</code>:<ul><li><code>1</code> – Einmalzahlung</li><li><code>2</code> – wiederkehrende Zahlung</li></ul></li></ul></td>\n    </tr>\n</tbody>\n</table>\n\nCodes zur Rückerstattung:\n\n<table>\n    <thead>\n    <tr>\n        <th>Code</th>\n        <th>Grund</th>\n        <th>Beschreibung</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td>1</td>\n        <td>Cancellation by the user request / the game request</td>\n        <td>Aus dem Kundenportal heraus eingeleitete Stornierung.</td>\n    </tr>\n    <tr>\n        <td>3</td>\n        <td>Integration error</td>\n        <td>Integrationsprobleme zwischen Xsolla und dem Spiel.<br /><b>Empfehlung: Benutzer nicht auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>5</td>\n        <td>Test payment</td>\n        <td>Testweise getätigte Transaktion gefolgt von Stornierung.<br /><b>Empfehlung: Benutzer nicht auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>7</td>\n        <td>Fraud notification from PS</td>\n        <td>Zahlung wurde vom Zahlungssystem abgelehnt. Potenzieller Betrug durch Zahlungssystem entdeckt. <br /><b>Empfehlung: Benutzer auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>9</td>\n        <td>Cancellation by the user request</td>\n        <td>Der Benutzer war aus irgendeinem Grund nicht zufrieden mit dem Spiel oder dem Einkauf.<br /><b>Empfehlung: Benutzer nicht auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>10</td>\n        <td>Cancellation by the game request</td>\n        <td>Das Spiel hat die Stornierung angefordert.<br /><b>Empfehlung: Benutzer nicht auf Sperrliste setzen.</b></td>\n    </tr>\n    </tbody>\n</table>\n",
        "operationId": "partial-refund",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "custom_parameters": {
                    "description": "Ihre benutzerdefinierten Parameter.",
                    "type": "object"
                  },
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "payment_details": {
                    "description": "Zahlungsdaten (Objekt).",
                    "properties": {
                      "direct_wht": {
                        "description": "Direkte Quellensteuer.",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Direkter Quellensteuersatz.",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "payment": {
                        "description": "Vom Benutzer entrichteter Betrag (Objekt).",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payment_method_fee": {
                        "description": "Gebühren des Zahlungssystems.",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payment_method_sum": {
                        "description": "Betrag, der vom Zahlungssystem abgebucht wird.",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payout": {
                        "description": "Details zur Auszahlung (Objekt).",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payout_currency_rate": {
                        "description": "Wechselkurs zwischen Zahlungs- und Auszahlungswährung.",
                        "type": "string"
                      },
                      "repatriation_commission": {
                        "description": "Objekt mit Daten über die Rückübertragungskosten, die Xsolla von Dritten auferlegt wurden.",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "sales_tax": {
                        "description": "Sales Tax (Objekt; nur in den USA und Kanada).",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Sales-Tax-Steuersatz.",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "vat": {
                        "description": "Angaben zur MwSt. (Objekt, nur in der EU).",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Mehrwertsteuersatz.",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "xsolla_balance_sum": {
                        "description": "Betrag, der vom Xsolla-Konto abgebucht wird.",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "xsolla_fee": {
                        "description": "Xsolla-Gebühr (Objekt).",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "purchase": {
                    "description": "Objekt, welches Angaben zum Kauf enthält.",
                    "properties": {
                      "checkout": {
                        "description": "Objekt, welches Angaben zur Bezahlung enthält.",
                        "properties": {
                          "amount": {
                            "description": "Kaufbetrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "total": {
                        "description": "Gesamtpreis des Einkaufs (Objekt).",
                        "properties": {
                          "amount": {
                            "description": "Zahlungsbetrag der Teilerstattung.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "required": [
                      "total"
                    ],
                    "type": "object"
                  },
                  "refund_details": {
                    "description": "Benutzerdaten (Objekt).",
                    "properties": {
                      "author": {
                        "description": "Erstattungsinitiator. Der Feldwert wird gemäß der Tabelle übermittelt:\n\n<table>\n    <thead>\n    <tr>\n        <th>Erstattungsinitiator</th>\n        <th>Feldwert</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td>Spiel (über API).</td>\n        <td>API</td>\n    </tr>\n    <tr>\n        <td>Kundenportal-Nutzer (automatische Erstattung).</td>\n        <td>E-Mail-Adresse des Nutzers</td>\n    </tr>\n    <tr>\n        <td>Kundenportal-Nutzer (mit Unterstützung des Xsolla-Kundensupports).</td>\n        <td>support@xsolla.com</td>\n    </tr>\n    <tr>\n        <td>Xsolla (mit Unterstützung des Xsolla-Kundensupports).</td>\n        <td>support@xsolla.com</td>\n    </tr>\n    </tbody>\n</table>\n",
                        "type": "string"
                      },
                      "code": {
                        "description": "Code-ID.",
                        "type": "integer"
                      },
                      "date": {
                        "description": "Datum der Erstattung.",
                        "type": "string"
                      },
                      "reason": {
                        "description": "Grund für die Rückerstattung.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "settings": {
                    "description": "Benutzerdefinierte Projekteinstellungen (Objekt).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "transaction": {
                    "description": "Details zur Transaktion (Objekt).",
                    "properties": {
                      "agreement": {
                        "description": "ID der Vereinbarung.",
                        "type": "integer"
                      },
                      "date": {
                        "description": "Transaktionsdatum.",
                        "type": "string"
                      },
                      "dry_run": {
                        "description": "Testtransaktion. Der Parameter hat den Wert 1, wenn es sich um eine Testtransaktion handelt. Er wird nicht gesendet, wenn es sich um eine echte Transaktion handelt.",
                        "type": "integer"
                      },
                      "external_id": {
                        "description": "Externe ID der Transaktion.",
                        "type": "string"
                      },
                      "id": {
                        "description": "ID der Transaktion.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Benutzerdaten (Objekt).",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "$ref": "#/components/schemas/user.email"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "ip": {
                        "$ref": "#/components/schemas/user.ip"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      },
                      "phone": {
                        "$ref": "#/components/schemas/user.phone"
                      },
                      "zip": {
                        "$ref": "#/components/schemas/user.zip"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "transaction",
                  "payment_details"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Teilerstattung",
        "tags": [
          "payments"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-d '{\n        \"notification_type\": \"partial_refund\",\n        \"settings\": {\n          \"project_id\": 18404,\n          \"merchant_id\": 2340\n        },\n        \"purchase\": {\n            \"checkout\": {\n                \"currency\": \"USD\",\n                \"amount\": 50\n            },\n            \"total\":{\n                \"currency\": \"USD\",\n                \"amount\": 200\n            }\n        },\n        \"user\": {\n            \"ip\": \"127.0.0.1\",\n            \"phone\": \"18777976552\",\n            \"email\": \"email@example.com\",\n            \"id\": \"1234567\",\n            \"name\": \"John Smith\",\n            \"country\": \"US\"\n        },\n        \"transaction\": {\n            \"id\": 1,\n            \"external_id\": 1,\n            \"dry_run\": 1,\n            \"agreement\": 1,\n            \"date\": \"2022-03-01 10:53:15\"\n        },\n        \"refund_details\": {\n            \"author\": \"email@example.com\",\n            \"date\": \"2022-03-01 10:56:48\"\n        },\n        \"payment_details\": {\n            \"sales_tax\": {\n                \"currency\": \"USD\",\n                \"amount\": 0\n            },\n            \"direct_wht\": {\n                \"currency\": \"USD\",\n                \"amount\": 0.70\n            },\n            \"xsolla_fee\": {\n                \"currency\": \"USD\",\n                \"amount\": \"10\"\n            },\n            \"payout\": {\n                \"currency\": \"USD\",\n                \"amount\": \"200\"\n            },\n            \"payment_method_fee\": {\n                \"currency\": \"USD\",\n                \"amount\": \"20\"\n            },\n            \"payment\": {\n                \"currency\": \"USD\",\n                \"amount\": \"230\"\n            },\n            \"repatriation_commission\": {\n                \"currency\": \"USD\",\n                \"amount\": 10\n            }\n        }\n    }\n}'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n    'notification_type' => 'partial_refund',\n    'settings' => array(\n      'project_id' => 18404,\n      'merchant_id' => 2340\n    ),\n    'purchase' => array(\n        'total' => array(\n            'currency' => 'USD',\n            'amount' => 9.99\n        )\n    ),\n    'user' => array(\n        'ip' => '127.0.0.1',\n        'phone' => '18777976552',\n        'email' => 'email@example.com',\n        'id' => '1234567',\n        'country' => 'US'\n    ),\n    'transaction' => array(\n        'id' => 87654321,\n        'payment_date' => '2014-09-23T19:25:25+04:00',\n        'payment_method' => 1380,\n        'dry_run' => 1,\n        'date' => '2022-03-31 10:53:15'\n    ),\n    'refund_details' => array(\n            'author' => 'email@example.com',\n            'date' => '2022-03-01 10:56:48'\n    ),\n    'payment_details' => array(\n        'payment' => array(\n            'currency' => 'USD',\n            'amount' => 9.99\n        ),\n        'vat' => array(\n            'currency' => 'USD',\n            'amount' => 0\n        ),\n        'sales_tax' => array(\n            'currency' => 'USD',\n            'amount' => 0\n        ),\n        'direct_wht' => array(\n            'currency' => 'USD',\n            'amount' => 70\n        ),\n        'payout_currency_rate' => 1,\n        'payout' => array(\n            'currency' => 'USD',\n            'amount' => 9.49\n        ),\n        'xsolla_fee' => array(\n            'currency' => 'USD',\n            'amount' => 0.19\n        ),\n        'payment_method_fee' => array(\n            'currency' => 'USD',\n            'amount' => 0.31\n        ),\n        'repatriation_commission' => array(\n            'currency' => 'USD',\n            'amount' => 0.2\n        )\n    )\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your_uri HTTP/1.1\nhost: your.host\naccept: application/json\ncontent-type: application/json\ncontent-length: 1220\nauthorization: Signature 31bd5924dd6cbc9cbe99d331c4a086a57291f9d7\n\n{\n    \"notification_type\": \"partial_refund\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"purchase\": {\n        \"checkout\": {\n            \"currency\": \"USD\",\n            \"amount\": 50\n        },\n        \"total\": {\n            \"currency\": \"USD\",\n            \"amount\": 200\n        }\n    },\n    \"user\": {\n        \"ip\": \"127.0.0.1\",\n        \"phone\": \"18777976552\",\n        \"email\": \"email@example.com\",\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\",\n        \"country\": \"US\"\n    },\n    \"transaction\": {\n        \"id\": 1,\n        \"external_id\": 1,\n        \"dry_run\": 1,\n        \"agreement\": 1,\n        \"date\": \"2022-03-31 10:53:15\"\n    },\n    \"refund_details\": {\n        \"author\": \"email@example.com\",\n        \"date\": \"2022-03-31 10:56:48\"\n    },\n    \"payment_details\": {\n        \"sales_tax\": {\n            \"currency\": \"USD\",\n            \"amount\": 0\n        },\n        \"direct_wht\": {\n            \"currency\": \"USD\",\n            \"amount\": 0.70\n        },\n        \"xsolla_fee\": {\n            \"currency\": \"USD\",\n            \"amount\": \"10\"\n        },\n        \"payout\": {\n            \"currency\": \"USD\",\n            \"amount\": \"200\"\n        },\n        \"payment_method_fee\": {\n            \"currency\": \"USD\",\n            \"amount\": \"20\"\n        },\n        \"payment\": {\n            \"currency\": \"USD\",\n            \"amount\": \"230\"\n        },\n        \"repatriation_commission\": {\n            \"currency\": \"USD\",\n            \"amount\": 10\n        }\n    }\n}"
          }
        ]
      }
    },
    "payment": {
      "post": {
        "description": "Wenn ein Nutzer eine Zahlung abschließt, sendet Xsolla die Zahlungsdetails in \neinem Webhook vom Typ `payment` an die Webhook-URL.\n\nDie erwarteten Antwortcodes sind im Abschnitt <b>Responses</b> beschrieben, Sie \nkönnen jedoch auch andere Antwortcodes verwenden:\n\n<table>\n    <thead>\n    <tr>\n        <th>Antwortcode</th>\n        <th>Beschreibung</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td><code>200</code>, <code>201</code>, <code>204</code></td>\n        <td>Eine erfolgreiche Antwort.</td>\n    </tr>\n    <tr>\n        <td><code>4xx</code></td>\n        <td>Ein Fehler ist aufgetreten. Beispielsweise wurde der angegebene Nutzer nicht gefunden oder eine ungültige Signatur wurde übermittelt.</td>\n    </tr>\n    <tr>\n        <td><code>5xx</code></td>\n        <td>Ein temporärer Serverfehler. Bei einer solchen Antwort versucht Xsolla automatisch, den Webhook erneut zu senden. Dabei verlängert sich das Intervall zwischen den Versuchen schrittweise, bis Ihr Listener den Empfang bestätigt. Es werden maximal 12 Versuche innerhalb eines Zeitraums von 48 Stunden unternommen.</td>\n    </tr>\n    </tbody>\n</table>\n\nWenn Sie die Webhook-URL im <a \nhref=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/store\">Kundenporta\nl</a> speichern, können Sie auch den Empfang zusätzlicher Informationen in \nWebhooks einrichten.\n\n<div class=\"note\">\n<p><strong>Hinweis</strong></p>\n<p>Wenn Sie sich am oder vor dem 22. Januar 2025 im Kundenportal registriert haben, finden Sie die Schalter in Ihre Projekt unter <a href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/payments\">Einstellungen &gt; Webhooks &gt; Testen &gt; Payments &gt; Erweiterte Einstellungen</a>.</p>\n</div>\n\n<table>\n<thead>\n    <tr>\n        <th>Schalter</th>\n        <th>Beschreibung</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Infos über das gespeicherte Zahlungskonto anzeigen</td>\n        <td>Informationen über die gespeicherte Zahlungsmethode werden in dem benutzerdefinierten Objekt <code>payment_account</code> übermittelt.</td>\n    </tr>\n    <tr>\n        <td>Infos über Transaktionen anzeigen, die mit gespeicherten Zahlungsmethoden getätigt wurden</td>\n        <td><p>Informationen werden in den folgenden benutzerdefinierten Parametern des Webhooks übermittelt.</p><ul><li><code>saved_payment_method</code>:<ul><li><code>0</code> – die gespeicherte Zahlungsmethode wurde nicht verwendet</li><li><code>1</code> – die Zahlungsmethode wurde während des aktuellen Bezahlvorgangs gespeichert</li><li><code>2</code> – die zuvor gespeicherte Zahlungsmethode wird verwendet</li></ul></li><li><code>payment_type</code>:<ul><li><code>1</code> – Einmalzahlung</li><li><code>2</code> – wiederkehrende Zahlung</li></ul></li></ul></td>\n    </tr>\n    <tr>\n        <td>Bestellobjekt dem Webhook hinzufügen</td>\n        <td>Die Informationen über die Bestellung werden im <code>order</code>-Objekt des <a href=\"/de/webhooks/operation/payment/\">Zahlung</a>-Webhooks übermittelt.</td>\n    </tr>\n    <tr>\n        <td>Nur notwendige Nutzerparameter ohne vertrauliche Daten senden</td>\n        <td><p>Im Webhook werden nur die folgenden Nutzerinformationen übermittelt:</p><ul><li>ID</li><li>Land</li></ul></td>\n    </tr>\n    <tr>\n        <td>BLZ und Endziffern von Karten anzeigen</td>\n        <td><p>Im Webhook werden nur die folgenden Informationen über die Bankkartennummer übermittelt:</p><ul><li>die ersten sechs Ziffern im Parameter <code>card_bin</code></li><li>die letzten vier Ziffern im Parameter <code>card_suffix</code></li></ul></td>\n    </tr>\n    <tr>\n        <td>Kartenmarke anzeigen</td>\n        <td>Die Marke der Karte, mit der die Zahlung getätigt wurde. Zum Beispiel: Mastercard oder Visa.</td>\n    </tr>\n    <tr>\n        <td>Länder-Quellensteuer und Nutzerakquisitionsgebühr anzeigen</td>\n        <td>Die Objekte <code>payment_details.​country_wht</code> und <code>payment_details.​user_acquisition_fee</code> werden im Webhook übermittelt. Der Schalter ist standardmäßig aktiviert.</td>\n    </tr>\n    <tr>\n        <td>3DS-Infos senden</td>\n        <td>Das Objekt <code>cards</code> mit den Daten für die \"3-D Secure\"-Prüfung wird im Webhook übermittelt.</td>\n    </tr>\n</tbody>\n</table>\n\n<div class=\"notice\">\n<p><strong>Hinweis</strong></p>\n<p>Die in einem Webhook versendeten Felder hängen von Folgendem ab:<ul><li>den erweiterten Einstellungen im Kundenportal</li><li>den bei Xsolla konfigurierten benutzerdefinierten Einstellungen</li></ul></p><p>Bei Fragen wenden Sie sich bitte an Ihren Customer Success Manager oder senden Sie eine E-Mail an <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>.</p>\n</div>\n",
        "operationId": "payment",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "custom_parameters": {
                    "description": "Ihre benutzerdefinierten Parameter.",
                    "type": "object"
                  },
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "payment_details": {
                    "description": "Zahlungsdaten (Objekt).",
                    "properties": {
                      "country_wht": {
                        "$ref": "#/components/schemas/country_whc"
                      },
                      "direct_wht": {
                        "description": "Direkte Quellensteuer.",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Direkter Quellensteuersatz.",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "payment": {
                        "description": "Vom Benutzer entrichteter Betrag (Objekt).",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payment_method_fee": {
                        "description": "Gebühren des Zahlungssystems.",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payment_method_sum": {
                        "description": "Betrag, der vom Zahlungssystem abgebucht wird.",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payout": {
                        "description": "Details zur Auszahlung (Objekt).",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payout_currency_rate": {
                        "description": "Wechselkurs zwischen Zahlungs- und Auszahlungswährung.",
                        "type": "string"
                      },
                      "repatriation_commission": {
                        "description": "Objekt mit Daten über die Rückübertragungskosten, die Xsolla von Dritten auferlegt wurden.",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "sales_tax": {
                        "description": "Sales Tax (Objekt; nur in den USA und Kanada).",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Sales-Tax-Steuersatz.",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "user_acquisition_fee": {
                        "description": "Der Gesamtbetrag der Nutzerakquisitionsgebühren, der für die durch Affiliate-Netzwerke und Influencer vermittelten Käufe abgezogen wird (Objekt).",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Gebührensatz für die Nutzerakquise (in %).",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "vat": {
                        "description": "Angaben zur MwSt. (Objekt, nur in der EU).",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Mehrwertsteuersatz.",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "xsolla_balance_sum": {
                        "description": "Betrag, der vom Xsolla-Konto abgebucht wird.",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "xsolla_fee": {
                        "description": "Xsolla-Gebühr (Objekt).",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "purchase": {
                    "description": "Objekt, welches Angaben zum Kauf enthält.",
                    "properties": {
                      "checkout": {
                        "description": "Objekt, welches Angaben zur Bezahlung enthält.",
                        "properties": {
                          "amount": {
                            "description": "Kaufbetrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "coupon": {
                        "description": "Angaben zum Gutschein (Objekt; falls ein Gutschein bei Abschluss des Abonnements genutzt wurde).",
                        "properties": {
                          "campaign_code": {
                            "description": "Kampagne.",
                            "type": "string"
                          },
                          "coupon_code": {
                            "description": "Gutscheincode.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "gift": {
                        "description": "Benutzerdaten (Objekt).",
                        "properties": {
                          "giver_id": {
                            "description": "Spender-ID.",
                            "type": "string"
                          },
                          "hide_giver_from_receiver": {
                            "description": "Legt fest, ob die Identität des Spenders vor dem Beschenkten geheim gehalten werden soll.",
                            "type": "string"
                          },
                          "message": {
                            "description": "Nachricht vom Spender.",
                            "type": "string"
                          },
                          "receiver_email": {
                            "description": "E-Mail des Geschenkempfängers.",
                            "type": "string"
                          },
                          "receiver_id": {
                            "description": "ID des Geschenkempfängers.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "order": {
                        "$ref": "#/components/schemas/order",
                        "properties": {
                          "id": {
                            "description": "Bestell-ID.",
                            "type": "integer"
                          },
                          "lineitems": {
                            "description": "Array von Parametern, die Informationen über Gegenstände enthalten.",
                            "items": {
                              "properties": {
                                "price": {
                                  "description": "Objekt mit Informationen über einen Artikelpreis.",
                                  "properties": {
                                    "amount": {
                                      "description": "Gesamtpreis des Artikels in der ausgewählten Währung.",
                                      "format": "float",
                                      "type": "number"
                                    },
                                    "currency": {
                                      "description": "Währung des Artikelpreises.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                },
                                "quantity": {
                                  "description": "Artikelmenge.",
                                  "type": "integer"
                                },
                                "sku": {
                                  "description": "Artikel-SKU.",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "type": "array"
                          }
                        }
                      },
                      "promotions": {
                        "description": "Werbeaktionen, die bei dieser Transaktion Verwendung finden.",
                        "items": {
                          "properties": {
                            "id": {
                              "description": "ID der Werbeaktion.",
                              "type": "integer"
                            },
                            "technical_name": {
                              "description": "Arbeitstitel der Werbeaktion.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "subscription": {
                        "description": "Angaben zum Abonnement (Objekt).",
                        "properties": {
                          "amount": {
                            "$ref": "#/components/schemas/amount-float"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "date_create": {
                            "$ref": "#/components/schemas/subscription.date_create"
                          },
                          "date_next_charge": {
                            "description": "Nächstes Rechnungsdatum. Datums- und Zeitangabe gemäß [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
                            "type": "string"
                          },
                          "plan_id": {
                            "$ref": "#/components/schemas/subscription.plan_id"
                          },
                          "product_id": {
                            "description": "Produkt-ID (falls sie im Zugriffstoken versendet wurde).",
                            "type": "string"
                          },
                          "subscription_id": {
                            "$ref": "#/components/schemas/subscription.subscription_id"
                          },
                          "tags": {
                            "$ref": "#/components/schemas/subscription.tags"
                          }
                        },
                        "type": "object"
                      },
                      "total": {
                        "description": "Gesamtpreis des Einkaufs (Objekt).",
                        "properties": {
                          "amount": {
                            "description": "Gesamtbetrag der Zahlung.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "required": [
                      "total"
                    ],
                    "type": "object"
                  },
                  "settings": {
                    "description": "Benutzerdefinierte Projekteinstellungen (Objekt).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "transaction": {
                    "description": "Details zur Transaktion (Objekt).",
                    "properties": {
                      "agreement": {
                        "description": "ID der Vereinbarung.",
                        "type": "integer"
                      },
                      "dry_run": {
                        "description": "Testtransaktion. Der Parameter hat den Wert 1, wenn es sich um eine Testtransaktion handelt. Er wird nicht gesendet, wenn es sich um eine echte Transaktion handelt.",
                        "type": "integer"
                      },
                      "external_id": {
                        "$ref": "#/components/schemas/external-id"
                      },
                      "id": {
                        "description": "ID der Transaktion.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "payment_date": {
                        "description": "Zahlungsdatum.",
                        "type": "string"
                      },
                      "payment_method": {
                        "description": "ID der Zahlungsart.",
                        "type": "integer"
                      },
                      "payment_method_name": {
                        "description": "Name der Zahlungsmethode.",
                        "type": "string"
                      },
                      "payment_method_order_id": {
                        "description": "Zahlungs-ID im Zahlungssystem.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Benutzerdaten (Objekt).",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "$ref": "#/components/schemas/user.email"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "ip": {
                        "$ref": "#/components/schemas/user.ip"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      },
                      "phone": {
                        "$ref": "#/components/schemas/user.phone"
                      },
                      "zip": {
                        "$ref": "#/components/schemas/user.zip"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "transaction",
                  "payment_details"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400-payment"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Zahlung",
        "tags": [
          "payments"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-d '{\n    \"notification_type\": \"payment\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"purchase\": {\n        \"subscription\": {\n            \"plan_id\": \"b5dac9c8\",\n            \"subscription_id\": \"10\",\n            \"product_id\": \"Demo Product\",\n            \"date_create\": \"2014-09-22T19:25:25+04:00\",\n            \"date_next_charge\": \"2014-10-22T19:25:25+04:00\",\n            \"currency\": \"USD\",\n            \"amount\": 9.99\n        },\n        \"checkout\": {\n            \"currency\": \"USD\",\n            \"amount\": 50\n        },\n        \"total\": {\n            \"currency\": \"USD\",\n            \"amount\": 200\n        },\n        \"promotions\": [{\n            \"technical_name\": \"Demo Promotion\",\n            \"id\": 853\n        }],\n        \"coupon\": {\n            \"coupon_code\": \"ICvj45S4FUOyy\",\n            \"campaign_code\": \"1507\"\n        },\n        \"order\": {\n          \"id\": 1234\n          \"lineitems\": [\n          {\n            \"sku\": \"com.xsolla.item_1\",\n            \"quantity\": 1,\n            \"price\": {\n              \"currency\": \"EUR\",\n              \"amount\": 6.5\n              }\n          }\n          ]\n          }\n    },\n    \"user\": {\n        \"ip\": \"127.0.0.1\",\n        \"phone\": \"18777976552\",\n        \"email\": \"email@example.com\",\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\",\n        \"country\": \"US\"\n    },\n    \"transaction\": {\n        \"id\": 1,\n        \"external_id\": 1,\n        \"payment_date\": \"2014-09-24T20:38:16+04:00\",\n        \"payment_method\": 1,\n        \"payment_method_name\": \"PayPal\",\n        \"payment_method_order_id\": 1234567890123456789,\n        \"dry_run\": 1,\n        \"agreement\": 1\n    },\n    \"payment_details\": {\n        \"payment\": {\n            \"currency\": \"USD\",\n            \"amount\": 230\n        },\n        \"vat\": {\n            \"currency\": \"USD\",\n            \"amount\": 0,\n            \"percent\": 20\n        },\n        \"sales_tax\": {\n            \"currency\": \"USD\",\n            \"amount\": 0,\n            \"percent\": 0\n        },\n        \"direct_wht\": {\n            \"currency\": \"USD\",\n            \"amount\": 0,\n            \"percent\": 0\n        },\n        \"payout_currency_rate\": \"1\",\n        \"payout\": {\n            \"currency\": \"USD\",\n            \"amount\": 200\n        },\n        \"country_wht\": {\n            \"currency\": \"USD\",\n            \"amount\": 2,\n            \"percent\": 10\n        },\n        \"user_acquisition_fee\": {\n            \"currency\": \"USD\",\n            \"amount\": 2,\n            \"percent\": 1\n        },\n        \"xsolla_fee\": {\n            \"currency\": \"USD\",\n            \"amount\": 10\n        },\n        \"payment_method_fee\": {\n            \"currency\": \"USD\",\n            \"amount\": 20\n        },\n        \"repatriation_commission\": {\n            \"currency\": \"USD\",\n            \"amount\": 10\n        }\n    },\n    \"custom_parameters\": {\n        \"parameter1\": \"value1\",\n        \"parameter2\": \"value2\"\n    }\n}'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n    'notification_type' => 'payment',\n    'settings' => array(\n      'project_id' => 18404,\n      'merchant_id' => 2340\n    ),\n    'purchase' => array(\n        'total' => array(\n            'currency' => 'USD',\n            'amount' => 9.99\n        )\n    ),\n    'user' => array(\n        'ip' => '127.0.0.1',\n        'phone' => '18777976552',\n        'email' => 'email@example.com',\n        'id' => '1234567',\n        'country' => 'US'\n    ),\n    'transaction' => array(\n        'id' => 87654321,\n        'payment_date' => '2014-09-23T19:25:25+04:00',\n        'payment_method' => 1380,\n        'payment_method_name' => 'PayPal'\n        'payment_method_order_id' => 1234567890123456789,\n        'dry_run' => 1\n    ),\n    'payment_details' => array(\n        'payment' => array(\n            'currency' => 'USD',\n            'amount' => 9.99\n        ),\n        'vat' => array(\n            'currency' => 'USD',\n            'amount' => 0\n        ),\n        'sales_tax' => array(\n            'currency' => 'USD',\n            'amount' => 0\n        ),\n        'direct_wht' => array(\n            'currency' => 'USD',\n            'amount' => 70\n        ),\n        'payout_currency_rate' => '1',\n        'country_wht ' => array(\n            'currency' => 'USD',\n            'amount' => 2,\n            'percent' => 10\n        ),\n        'user_acquisition_fee' => array(\n            'currency' => 'USD',\n            'amount' => 2,\n            'percent' => 1\n        ),\n        'payout' => array(\n            'currency' => 'USD',\n            'amount' => 9.49\n        ),\n        'xsolla_fee' => array(\n            'currency' => 'USD',\n            'amount' => 0.19\n        ),\n        'payment_method_fee' => array(\n            'currency' => 'USD',\n            'amount' => 0.31\n        ),\n        'repatriation_commission' => array(\n            'currency' => 'USD',\n            'amount' => 0.2\n        )\n    )\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your_uri HTTP/1.1\nhost: your.host\naccept: application/json\ncontent-type: application/json\ncontent-length: 1721\nauthorization: Signature 34553d151e656110c656696c919f9a10e05de542\n\n{\n    \"notification_type\": \"payment\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"purchase\":{\n        \"subscription\": {\n            \"plan_id\": \"b5dac9c8\",\n            \"subscription_id\": \"10\",\n            \"product_id\": \"Demo Product\",\n            \"date_create\": \"2014-09-22T19:25:25+04:00\",\n            \"date_next_charge\": \"2014-10-22T19:25:25+04:00\",\n            \"currency\": \"USD\",\n            \"amount\": 9.99\n        },\n        \"checkout\": {\n            \"currency\": \"USD\",\n            \"amount\": 50\n        },\n        \"total\": {\n            \"currency\": \"USD\",\n            \"amount\": 200\n        },\n        \"promotions\": [{\n            \"technical_name\": \"Demo Promotion\",\n            \"id\": 853\n        }],\n        \"coupon\": {\n            \"coupon_code\": \"ICvj45S4FUOyy\",\n            \"campaign_code\": \"1507\"\n        },\n        \"order\": {\n          \"id\": 1234\n          \"lineitems\": [\n          {\n            \"sku\": \"com.xsolla.item_1\",\n            \"quantity\": 1,\n            \"price\": {\n              \"currency\": \"EUR\",\n              \"amount\": 6.5\n              }\n          }\n          ]\n          }\n    },\n    \"user\": {\n        \"ip\": \"127.0.0.1\",\n        \"phone\": \"18777976552\",\n        \"email\": \"email@example.com\",\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\",\n        \"country\": \"US\"\n    },\n    \"transaction\": {\n        \"id\": 1,\n        \"external_id\": 1,\n        \"payment_date\": \"2014-09-24T20:38:16+04:00\",\n        \"payment_method\": 1,\n        \"payment_method_name\": \"PayPal\"\n        \"payment_method_order_id\": 1234567890123456789,\n        \"dry_run\": 1,\n        \"agreement\": 1\n    },\n    \"payment_details\": {\n        \"payment\": {\n            \"currency\": \"USD\",\n            \"amount\": 230\n        },\n        \"vat\": {\n            \"currency\": \"USD\",\n            \"amount\": 0,\n            \"percent\": 20\n        },\n        \"sales_tax\": {\n            \"currency\": \"USD\",\n            \"amount\": 0,\n            \"percent\": 0\n        },\n        \"direct_wht\": {\n            \"currency\": \"USD\",\n            \"amount\": 0,\n            \"percent\": 0\n        },\n        \"payout_currency_rate\": \"1\",\n        \"country_wht\": {\n            \"currency\": \"USD\",\n            \"amount\": 2,\n            \"percent\": 10\n        },\n        \"user_acquisition_fee\": {\n            \"currency\": \"USD\",\n            \"amount\": 2,\n            \"percent\": 1\n        },\n        \"payout\": {\n            \"currency\": \"USD\",\n            \"amount\": 200\n        },\n        \"xsolla_fee\": {\n            \"currency\": \"USD\",\n            \"amount\": 10\n        },\n        \"payment_method_fee\": {\n            \"currency\": \"USD\",\n            \"amount\": 20\n        },\n        \"repatriation_commission\": {\n            \"currency\": \"USD\",\n            \"amount\": 10\n        }\n    },\n    \"custom_parameters\": {\n        \"parameter1\": \"value1\",\n        \"parameter2\": \"value2\"\n    }\n}"
          }
        ]
      }
    },
    "payment-declined": {
      "post": {
        "description": "Wenn eine Transaktion von einem Zahlungssystem abgelehnt wird, sendet Xsolla \ndie Transaktionsdetails in einem Webhook vom Typ `ps_declined` an die von Ihnen \nfestgelegte Webhook-URL. Der Webhook wird während der Autorisierung- oder \nZahlungsabwicklung gesendet. In diesem Fall wird der Webhook \n[payment](/de/webhooks/operation/payment/)\\ [order_paid](/de/webhooks/operation/successful-order-payment/) nicht gesendet.\n\nTypische Gründe für von Zahlungssystemen abgelehnte Zahlungen:\n\n* Die Kartenautorisierung ist fehlgeschlagen (z. B. konnte das Zahlungssystem den \n  Autorisierungsvorgang aufgrund eines technischen Fehlers oder einer \n  ausbleibenden Antwort der Bank nicht abschließen) oder wurde abgelehnt (z. B. \n  hat die Bank geantwortet, die Transaktion jedoch aufgrund unzureichender \n  Deckung oder ungültiger Kartendaten abgelehnt).\n* Die \"3-D Secure\"-Prüfung ist fehlgeschlagen, wurde nicht abgeschlossen oder es \n  kam zu einem Timeout, weil der Nutzer nicht rechtzeitig bestätigt hat.\n* Der Zahlungsabwickler oder die abrechnende Bank (Acquirer) ist vorübergehend \n  nicht verfügbar oder antwortet aufgrund eines nicht behebbaren Fehlers (z. B. \n  einem geschlossenen Konto oder einer ungültigen Kartennummer) mit einer \n  endgültigen Ablehnung. Ein erneuter Versuch ohne Behebung des zugrunde \n  liegenden Problems führt nicht zu einer erfolgreichen Transaktion.\n\nNicht zu verwechseln mit:\n\n* Ablehnung durch Betrugsbekämpfungssysteme; diese werden über den Webhook \n  [afs_reject](https://developers.xsolla.com/de/webhooks/operation/afs-rejected-transaction/) gemeldet.\n* Erstattungen oder Teilerstattungen nach einer erfolgreichen Zahlung; diese \n  werden über die Webhooks \n  [refund](https://developers.xsolla.com/de/webhooks/operation/refund/) und \n  [partial_refund](https://developers.xsolla.com/de/webhooks/operation/partial-refund/) gemeldet.\n\n<div class=\"note\">\n<p><strong>Hinweis</strong></p>\n<p> Wenden Sie sich an Ihren Customer Success Manager oder senden Sie eine E-Mail an <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>, wenn Sie den Webhook <code>ps_declined</code> erhalten möchten.</p>\n</div>\n",
        "operationId": "payment-declined",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "refund_details": {
                    "description": "Benutzerdaten (Objekt).",
                    "properties": {
                      "author": {
                        "description": "Erstattungsinitiator. Der Feldwert wird gemäß der Tabelle übermittelt:\n\n<table>\n    <thead>\n    <tr>\n        <th>Erstattungsinitiator</th>\n        <th>Feldwert</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td>Spiel (über API).</td>\n        <td>API</td>\n    </tr>\n    <tr>\n        <td>Kundenportal-Nutzer (automatische Erstattung).</td>\n        <td>E-Mail-Adresse des Nutzers</td>\n    </tr>\n    <tr>\n        <td>Kundenportal-Nutzer (mit Unterstützung des Xsolla-Kundensupports).</td>\n        <td>support@xsolla.com</td>\n    </tr>\n    <tr>\n        <td>Xsolla (mit Unterstützung des Xsolla-Kundensupports).</td>\n        <td>support@xsolla.com</td>\n    </tr>\n    </tbody>\n</table>\n",
                        "type": "string"
                      },
                      "code": {
                        "description": "Code-ID.\n\n<table>\n    <thead>\n    <tr>\n        <th>Code</th>\n        <th>Grund</th>\n        <th>Beschreibung</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td>1</td>\n        <td>Cancellation by the user request / the game request</td>\n        <td>Aus dem Kundenportal heraus eingeleitete Stornierung.</td>\n    </tr>\n    <tr>\n        <td>2</td>\n        <td>Chargeback</td>\n        <td>Rückbuchung der Transaktion angefordert.</td>\n    </tr>\n    <tr>\n        <td>3</td>\n        <td>Integration error</td>\n        <td>Integrationsprobleme zwischen Xsolla und dem Spiel.<br /><b>Empfehlung: Benutzer nicht auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>4</td>\n        <td>Potential fraud</td>\n        <td>Betrugsverdacht.<br /><b>Empfehlung: Benutzer auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>5</td>\n        <td>Test payment</td>\n        <td>Testweise getätigte Transaktion gefolgt von Stornierung.<br /><b>Empfehlung: Benutzer nicht auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>6</td>\n        <td>User invoice expired</td>\n        <td>Rechnung überfällig (wird bei Postpaid-Zahlungsweise genutzt).</td>\n    </tr>\n    <tr>\n        <td>7</td>\n        <td>Fraud notification from PS</td>\n        <td>Zahlung wurde vom Zahlungssystem abgelehnt. Potenzieller Betrug durch Zahlungssystem entdeckt. <br /><b>Empfehlung: Benutzer auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>8</td>\n        <td>Cancellation by the PS request</td>\n        <td>Zahlungssystem hat Stornierung angefordert.<br /><b>Empfehlung: Benutzer nicht auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>9</td>\n        <td>Cancellation by the user request</td>\n        <td>Der Benutzer war aus irgendeinem Grund nicht zufrieden mit dem Spiel oder dem Einkauf.<br /><b>Empfehlung: Benutzer nicht auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>10</td>\n        <td>Cancellation by the game request</td>\n        <td>Das Spiel hat die Stornierung angefordert.<br /><b>Empfehlung: Benutzer nicht auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>11</td>\n        <td>Account holder called to report fraud</td>\n        <td>Der Kontoinhaber gibt an, dass die Transaktion nicht von ihm getätigt wurde.</td>\n    </tr>\n    <tr>\n        <td>12</td>\n        <td>Friendly fraud</td>\n        <td>Es wurde ein \"Friendly Fraud\" gemeldet.</td>\n    </tr>\n    <tr>\n        <td>13</td>\n        <td>Duplicate</td>\n        <td>Duplizierte Transaktion für dieselbe Rechnung.</td>\n    </tr>\n    </tbody>\n</table>\n",
                        "type": "integer"
                      },
                      "reason": {
                        "description": "Grund für die Rückerstattung.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "settings": {
                    "description": "Benutzerdefinierte Projekteinstellungen (Objekt).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "transaction": {
                    "description": "Details zur Transaktion (Objekt).",
                    "properties": {
                      "dry_run": {
                        "description": "Testtransaktion. Der Parameter hat den Wert 1, wenn es sich um eine Testtransaktion handelt. Er wird nicht gesendet, wenn es sich um eine echte Transaktion handelt.",
                        "type": "integer"
                      },
                      "external_id": {
                        "description": "Externe ID der Transaktion.",
                        "type": "string"
                      },
                      "id": {
                        "description": "ID der Transaktion.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "payment_method": {
                        "description": "ID der Zahlungsart.",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Benutzerdaten (Objekt).",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "$ref": "#/components/schemas/user.email"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "ip": {
                        "$ref": "#/components/schemas/user.ip"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "transaction"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400-payment"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Abgelehnte Zahlung",
        "tags": [
          "payments"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'Accept: application/json' \\\n-H 'Content-Type: application/json' \\\n-H 'Authorization: Signature 80543ba63e1e50cf05f15150fe75e7245da9a898' \\\n-d '{\n  \"notification_type\": \"ps_declined\",\n  \"settings\": {\n    \"project_id\": \"18404\",\n    \"merchant_id\": \"2340\"\n  },\n  \"user\": {\n    \"ip\": \"127.0.0.1\",\n    \"email\": \"email@example.com\",\n    \"id\": \"1234567\",\n    \"country\": \"US\"\n  },\n  \"transaction\": {\n    \"id\": \"1\",\n    \"dry_run\": \"1\",\n    \"payment_method\": \"1\"\n  },\n  \"refund_details\": {\n    \"author\": \"support@xsolla.com\",\n    \"code\": \"8\",\n    \"reason\": \"Cancellation by the PS request\",\n    \"reason_detail\": \"Insufficient funds\"\n  }\n}'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n  'notification_type' => 'ps_declined',\n  'settings' => array(\n    'project_id' => '18404',\n    'merchant_id' => '2340',\n  ),\n  'user' => array(\n    'ip' => '127.0.0.1',\n    'email' => 'email@example.com',\n    'id' => '1234567',\n    'country' => 'US',\n  ),\n  'transaction' => array(\n    'id' => '1',\n    'dry_run' => '1',\n    'payment_method' => '1',\n  ),\n  'refund_details' => array(\n    'author' => 'support@xsolla.com',\n    'code' => '8',\n    'reason' => 'Cancellation by the PS request',\n    'reason_detail' => 'Insufficient funds',\n  ),\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your_uri HTTP/1.1\nhost: your.host\naccept: application/json\ncontent-type: application/json\ncontent-length: 338\nauthorization: Signature 80543ba63e1e50cf05f15150fe75e7245da9a898\n\n{\n  \"notification_type\": \"ps_declined\",\n  \"settings\": {\n    \"project_id\": \"18404\",\n    \"merchant_id\": \"2340\"\n  },\n  \"user\": {\n    \"ip\": \"127.0.0.1\",\n    \"email\": \"email@example.com\",\n    \"id\": \"1234567\",\n    \"country\": \"US\"\n  },\n  \"transaction\": {\n    \"id\": \"1\",\n    \"dry_run\": \"1\",\n    \"payment_method\": \"1\"\n  },\n  \"refund_details\": {\n    \"author\": \"support@xsolla.com\",\n    \"code\": \"8\",\n    \"reason\": \"Cancellation by the PS request\",\n    \"reason_detail\": \"Insufficient funds\"\n  }\n}"
          }
        ]
      }
    },
    "personalized-partner-catalog": {
      "post": {
        "description": "Xsolla sendet den Webhook <code>partner_side_catalog</code> mitsamt der \nBenutzer- und Projektparameter an die Webhook-URL, wenn ein Benutzer mit dem \nShop interagiert.\n\nGeben Sie eine Liste der <code>item_id</code> oder der SKUs der für den \nBenutzer erhältlichen Artikel zurück. In diesem Fall können Sie auch die \nInformation einfügen, dass ein bestimmter Benutzer eine bestimmte Menge eines \nbestimmten Produkts kaufen kann. Mit dieser Funktion können Sie die Anzahl und \nArt der Produkte steuern, die der Benutzer in den Warenkorb legen und kaufen \nkann.\n\n<div class=\"notice\">\n<p><strong>Hinweis</strong></p>\n<p>Beachten Sie bei der Verarbeitung des Webhooks die folgenden Einschränkungen:<ul><li>Der Webhook muss innerhalb von drei Sekunden verarbeitet werden. Dauert die Verarbeitung länger, geben die API-Aufrufe <a href=\"/de/api/catalog/virtual-items-currency-catalog/get-virtual-items\">Liste virtueller Gegenstände abrufen</a>, <a href=\"/api/catalog/payment-server-side/admin-create-payment-token\">Zahlungstoken erstellen</a> und <a href=\"/api/catalog/payment-client-side/create-order\">Bestellung anlegen</a> einen Fehler zurück.</li><li>Die Webhook-Antwort darf höchstens 64 kB groß sein. Antworten, die diese Obergrenze überschreiten, werden nicht verarbeitet – der Nutzer sieht einen leeren Katalog und kann keine Artikel kaufen. Um die maximal zulässige Antwortgröße zu ändern, wenden Sie sich bitte an Ihren Customer Success Manager oder senden Sie eine E-Mail an <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>.</li></ul></p>\n</div>\n",
        "operationId": "personalized-partner-catalog",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "user": {
                    "description": "Benutzerdaten (Objekt).",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "currency": {
                        "$ref": "#/components/schemas/currency"
                      },
                      "locale": {
                        "$ref": "#/components/schemas/locale"
                      },
                      "user_id": {
                        "description": "Benutzer-ID. Wenn der Nutzer nicht authentifiziert ist, wird der Wert `null` gesendet.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "user_id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "user"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "date_from": "2024-08-11T23:59:59+08:00",
                    "date_until": "2024-08-12T23:59:59+08:00",
                    "quantity": 0,
                    "sku": "com.xsolla.boots_1"
                  },
                  {
                    "date_from": "2024-08-11T23:59:59+08:00",
                    "date_until": "2024-08-12T23:59:59+08:00",
                    "quantity": null,
                    "sku": "com.xsolla.sword_1"
                  },
                  {
                    "quantity": 1,
                    "sku": "com.xsolla.helmet_1"
                  },
                  {
                    "content": [
                      {
                        "description": "Description of custom content item",
                        "image_url": "https://example.com/content_image.png",
                        "name": "Custom content item",
                        "quantity": 5
                      }
                    ],
                    "description": "Custom description",
                    "image_url": "https://example.com/image.png",
                    "json_attributes": {
                      "purchased": 0,
                      "type": "lootbox"
                    },
                    "name": "Custom name",
                    "quantity": null,
                    "sku": "com.xsolla.custom_item_1"
                  },
                  {
                    "available": 7,
                    "sku": "com.xsolla.limited_item_1",
                    "total": 10
                  }
                ],
                "schema": {
                  "items": {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "properties": {
                              "quantity": {
                                "$ref": "#/components/schemas/quantity"
                              }
                            },
                            "title": "quantity"
                          },
                          {
                            "properties": {
                              "available": {
                                "$ref": "#/components/schemas/available"
                              },
                              "total": {
                                "$ref": "#/components/schemas/total"
                              }
                            },
                            "title": "available"
                          }
                        ],
                        "properties": {
                          "content": {
                            "$ref": "#/components/schemas/bundle_content"
                          },
                          "date_from": {
                            "$ref": "#/components/schemas/date_from"
                          },
                          "date_until": {
                            "$ref": "#/components/schemas/date_until"
                          },
                          "description": {
                            "$ref": "#/components/schemas/description"
                          },
                          "image_url": {
                            "$ref": "#/components/schemas/image_url"
                          },
                          "json_attributes": {
                            "$ref": "#/components/schemas/json_attributes"
                          },
                          "name": {
                            "$ref": "#/components/schemas/name"
                          },
                          "sku": {
                            "$ref": "#/components/schemas/sku"
                          }
                        },
                        "required": [
                          "sku"
                        ],
                        "title": "sku"
                      },
                      {
                        "oneOf": [
                          {
                            "properties": {
                              "quantity": {
                                "$ref": "#/components/schemas/quantity"
                              }
                            },
                            "title": "quantity"
                          },
                          {
                            "properties": {
                              "available": {
                                "$ref": "#/components/schemas/available"
                              },
                              "total": {
                                "$ref": "#/components/schemas/total"
                              }
                            },
                            "title": "available"
                          }
                        ],
                        "properties": {
                          "content": {
                            "$ref": "#/components/schemas/bundle_content"
                          },
                          "date_from": {
                            "$ref": "#/components/schemas/date_from"
                          },
                          "date_until": {
                            "$ref": "#/components/schemas/date_until"
                          },
                          "description": {
                            "$ref": "#/components/schemas/description"
                          },
                          "image_url": {
                            "$ref": "#/components/schemas/image_url"
                          },
                          "item_id": {
                            "$ref": "#/components/schemas/item_id"
                          },
                          "json_attributes": {
                            "$ref": "#/components/schemas/json_attributes"
                          },
                          "name": {
                            "$ref": "#/components/schemas/name"
                          }
                        },
                        "required": [
                          "item_id"
                        ],
                        "title": "item_id"
                      }
                    ],
                    "type": "object"
                  },
                  "type": "array"
                }
              }
            },
            "description": "Gibt eine Liste der für den Benutzer verfügbaren Artikel zurück und gibt an, wie oft ein bestimmter Benutzer einen bestimmten Artikel kaufen kann."
          },
          "404": {
            "description": "Benutzer nicht gefunden."
          }
        },
        "summary": "Katalogpersonalisierung aufseiten des Partners",
        "tags": [
          "personalization"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature d90d319f05df7b0f86d2485f48e7079f0f752523' \\\n-d '{\n        \"notification_type\": \"partner_side_catalog\",\n        \"user\": {\n            \"user_id\": \"12345\",\n            \"country\": \"US\"\n        }\n    }'"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost:           your.hostname\naccept:         application/json\ncontent-type:   application/json\nauthorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523\n\n{\n    \"notification_type\": \"partner_side_catalog\",\n    \"user\": {\n      \"user_id\": \"12345\",\n      \"country\": \"US\"\n    }\n}"
          }
        ]
      }
    },
    "refund": {
      "post": {
        "description": "Wenn eine Zahlung storniert wird, sendet Xsolla die Details der stornierten \nTransaktion in einem Webhook vom Typ `refund` an die Webhook-URL.\n\nOb und wie weitere Zustellversuche unternommen werden, hängt davon ab, wer die \nErstattung veranlasst hat:\n* Wenn Sie die Erstattung veranlasst haben, wird der Webhook nicht erneut \n  gesendet. Die Zahlung wird dem Nutzer unabhängig von der Antwort auf einen \n  Webhook erstattet.\n* Wenn die Erstattung von einem Dritten veranlasst wurde (beispielsweise einem \n  Zahlungssystem oder dem Xsolla-Kundensupport) und als Antwort auf einen Webhook \n  der Statuscode \"5xx\" zurückgegeben wurde, wird der Webhook in immer längeren \n  Intervallen erneut gesendet. Innerhalb von 48 Stunden nach dem ersten Versuch \n  werden maximal 12 weitere Zustellversuche unternommen.\n\nDetaillierte Informationen zum Erstattungsvorgang finden Sie in der \nentsprechenden [Anleitung](/de/doc/pay-station/features/refund/).\n\n<div class=\"notice\">\n<p><strong>Hinweis</strong></p>\n<p>Die Zahlung wird dem Nutzer auch dann erstattet, wenn alle folgenden Bedingungen erfüllt sind:<ul><li>Xsolla hat die Erstattung veranlasst.</li><li>Als Antwort auf einen Webhook wurde ein Statuscode <code>4xx</code> zurückgegeben, oder es wurde nach allen weiteren Zustellversuchen keine Antwort empfangen, oder es wurde der Statuscode <code>5xx</code> zurückgegeben.</li></ul></p>\n</div>\n\nWenn Sie die Webhook-URL im <a \nhref=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/store\">Kundenporta\nl</a> speichern, können Sie auch den Empfang zusätzlicher Informationen in \nWebhooks einrichten.\n\n<div class=\"note\">\n<p><strong>Hinweis</strong></p>\n<p>Wenn Sie sich am oder vor dem 22. Januar 2025 im Kundenportal registriert haben, finden Sie die Schalter in Ihre Projekt unter <a href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/payments\">Einstellungen &gt; Webhooks &gt; Testen &gt; Payments &gt; Erweiterte Einstellungen</a>.</p>\n</div>\n\n<table>\n<thead>\n    <tr>\n        <th>Schalter</th>\n        <th>Beschreibung</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Infos über Transaktionen anzeigen, die mit gespeicherten Zahlungsmethoden getätigt wurden</td>\n        <td><p>Informationen werden in den folgenden benutzerdefinierten Parametern des Webhooks übermittelt.</p><ul><li><code>saved_payment_method</code>:<ul><li><code>0</code> – die gespeicherte Zahlungsmethode wurde nicht verwendet</li><li><code>1</code> – die Zahlungsmethode wurde während des aktuellen Bezahlvorgangs gespeichert</li><li><code>2</code> – die zuvor gespeicherte Zahlungsmethode wird verwendet</li></ul></li><li><code>payment_type</code>:<ul><li><code>1</code> – Einmalzahlung</li><li><code>2</code> – wiederkehrende Zahlung</li></ul></li></ul></td>\n    </tr>\n    <tr>\n        <td>Infos über den Erstattungsgrund anzeigen</td>\n        <td>Ausführliche Informationen zu den Gründen der Erstattung.</td>\n    </tr>\n</tbody>\n</table>\n\nCodes zur Rückerstattung:\n\n<table>\n    <thead>\n    <tr>\n        <th>Code</th>\n        <th>Grund</th>\n        <th>Beschreibung</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td>1</td>\n        <td>Cancellation by the user request / the game request</td>\n        <td>Aus dem Kundenportal heraus eingeleitete Stornierung.</td>\n    </tr>\n    <tr>\n        <td>2</td>\n        <td>Chargeback</td>\n        <td>Rückbuchung der Transaktion angefordert.</td>\n    </tr>\n    <tr>\n        <td>3</td>\n        <td>Integration error</td>\n        <td>Integrationsprobleme zwischen Xsolla und dem Spiel.<br /><b>Empfehlung: Benutzer nicht auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>4</td>\n        <td>Potential fraud</td>\n        <td>Betrugsverdacht.<br /><b>Empfehlung: Benutzer auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>5</td>\n        <td>Test payment</td>\n        <td>Testweise getätigte Transaktion gefolgt von Stornierung.<br /><b>Empfehlung: Benutzer nicht auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>6</td>\n        <td>User invoice expired</td>\n        <td>Rechnung überfällig (wird bei Postpaid-Zahlungsweise genutzt).</td>\n    </tr>\n    <tr>\n        <td>7</td>\n        <td>Fraud notification from PS</td>\n        <td>Zahlung wurde vom Zahlungssystem abgelehnt. Potenzieller Betrug durch Zahlungssystem entdeckt. <br /><b>Empfehlung: Benutzer auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>8</td>\n        <td>Cancellation by the PS request</td>\n        <td>Zahlungssystem hat Stornierung angefordert.<br /><b>Empfehlung: Benutzer nicht auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>9</td>\n        <td>Cancellation by the user request</td>\n        <td>Der Benutzer war aus irgendeinem Grund nicht zufrieden mit dem Spiel oder dem Einkauf.<br /><b>Empfehlung: Benutzer nicht auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>10</td>\n        <td>Cancellation by the game request</td>\n        <td>Das Spiel hat die Stornierung angefordert.<br /><b>Empfehlung: Benutzer nicht auf Sperrliste setzen.</b></td>\n    </tr>\n    <tr>\n        <td>11</td>\n        <td>Account holder called to report fraud</td>\n        <td>Der Kontoinhaber gibt an, dass die Transaktion nicht von ihm getätigt wurde.</td>\n    </tr>\n    <tr>\n        <td>12</td>\n        <td>Friendly fraud</td>\n        <td>Es wurde ein \"Friendly Fraud\" gemeldet.</td>\n    </tr>\n    <tr>\n        <td>13</td>\n        <td>Duplicate</td>\n        <td>Duplizierte Transaktion für dieselbe Rechnung.</td>\n    </tr>\n    </tbody>\n</table>\n",
        "operationId": "refund",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "custom_parameters": {
                    "description": "Ihre benutzerdefinierten Parameter.",
                    "type": "object"
                  },
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "payment_details": {
                    "description": "Zahlungsdaten (Objekt).",
                    "properties": {
                      "country_wht": {
                        "$ref": "#/components/schemas/country_whc"
                      },
                      "direct_wht": {
                        "description": "Direkte Quellensteuer.",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Direkter Quellensteuersatz.",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "payment": {
                        "description": "Vom Benutzer entrichteter Betrag (Objekt).",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payment_method_fee": {
                        "description": "Gebühren des Zahlungssystems.",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payment_method_sum": {
                        "description": "Betrag, der vom Zahlungssystem abgebucht wird.",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payout": {
                        "description": "Details zur Auszahlung (Objekt).",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payout_currency_rate": {
                        "description": "Wechselkurs zwischen Zahlungs- und Auszahlungswährung.",
                        "type": "string"
                      },
                      "repatriation_commission": {
                        "description": "Objekt mit Daten über die Rückübertragungskosten, die Xsolla von Dritten auferlegt wurden.",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "sales_tax": {
                        "description": "Sales Tax (Objekt; nur in den USA und Kanada).",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Sales-Tax-Steuersatz.",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "user_acquisition_fee": {
                        "description": "Der Gesamtbetrag der Nutzerakquisitionsgebühren, der für die durch Affiliate-Netzwerke und Influencer vermittelten Käufe abgezogen wird (Objekt).",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Gebührensatz für die Nutzerakquise (in %).",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "vat": {
                        "description": "Angaben zur MwSt. (Objekt, nur in der EU).",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Mehrwertsteuersatz.",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "xsolla_balance_sum": {
                        "description": "Betrag, der vom Xsolla-Konto abgebucht wird.",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "xsolla_fee": {
                        "description": "Xsolla-Gebühr (Objekt).",
                        "properties": {
                          "amount": {
                            "description": "Betrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "purchase": {
                    "description": "Objekt, welches Angaben zum Kauf enthält.",
                    "properties": {
                      "checkout": {
                        "description": "Objekt, welches Angaben zur Bezahlung enthält.",
                        "properties": {
                          "amount": {
                            "description": "Kaufbetrag.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "subscription": {
                        "description": "Angaben zum Abonnement (Objekt).",
                        "properties": {
                          "amount": {
                            "$ref": "#/components/schemas/amount-float"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "date_create": {
                            "$ref": "#/components/schemas/subscription.date_create"
                          },
                          "plan_id": {
                            "$ref": "#/components/schemas/subscription.plan_id"
                          },
                          "subscription_id": {
                            "$ref": "#/components/schemas/subscription.subscription_id"
                          },
                          "tags": {
                            "$ref": "#/components/schemas/subscription.tags"
                          }
                        },
                        "type": "object"
                      },
                      "total": {
                        "description": "Gesamtpreis des Einkaufs (Objekt).",
                        "properties": {
                          "amount": {
                            "description": "Gesamtbetrag der Zahlung.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "required": [
                      "total"
                    ],
                    "type": "object"
                  },
                  "refund_details": {
                    "description": "Benutzerdaten (Objekt).",
                    "properties": {
                      "author": {
                        "description": "Erstattungsinitiator. Der Feldwert wird gemäß der Tabelle übermittelt:\n\n<table>\n    <thead>\n    <tr>\n        <th>Erstattungsinitiator</th>\n        <th>Feldwert</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td>Spiel (über API).</td>\n        <td>API</td>\n    </tr>\n    <tr>\n        <td>Kundenportal-Nutzer (automatische Erstattung).</td>\n        <td>E-Mail-Adresse des Nutzers</td>\n    </tr>\n    <tr>\n        <td>Kundenportal-Nutzer (mit Unterstützung des Xsolla-Kundensupports).</td>\n        <td>support@xsolla.com</td>\n    </tr>\n    <tr>\n        <td>Xsolla (mit Unterstützung des Xsolla-Kundensupports).</td>\n        <td>support@xsolla.com</td>\n    </tr>\n    </tbody>\n</table>\n",
                        "type": "string"
                      },
                      "code": {
                        "description": "Code-ID.",
                        "type": "integer"
                      },
                      "reason": {
                        "description": "Grund für die Rückerstattung.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "settings": {
                    "description": "Benutzerdefinierte Projekteinstellungen (Objekt).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "transaction": {
                    "description": "Details zur Transaktion (Objekt).",
                    "properties": {
                      "agreement": {
                        "description": "ID der Vereinbarung.",
                        "type": "integer"
                      },
                      "dry_run": {
                        "description": "Testtransaktion. Der Parameter hat den Wert 1, wenn es sich um eine Testtransaktion handelt. Er wird nicht gesendet, wenn es sich um eine echte Transaktion handelt.",
                        "type": "integer"
                      },
                      "external_id": {
                        "description": "Externe ID der Transaktion.",
                        "type": "string"
                      },
                      "id": {
                        "description": "ID der Transaktion.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "payment_method_order_id": {
                        "description": "Zahlungs-ID im Zahlungssystem.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Benutzerdaten (Objekt).",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "$ref": "#/components/schemas/user.email"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "ip": {
                        "$ref": "#/components/schemas/user.ip"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      },
                      "phone": {
                        "$ref": "#/components/schemas/user.phone"
                      },
                      "zip": {
                        "$ref": "#/components/schemas/user.zip"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "transaction",
                  "payment_details"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Erstattung",
        "tags": [
          "payments"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-d '{\n        \"notification_type\": \"refund\",\n        \"settings\": {\n          \"project_id\": 18404,\n          \"merchant_id\": 2340\n        },\n        \"purchase\": {\n            \"subscription\": {\n                \"plan_id\": \"b5dac9c8\",\n                \"subscription_id\": \"10\",\n                \"date_create\": \"2014-09-22T19:25:25+04:00\",\n                \"currency\": \"USD\",\n                \"amount\": 9.99\n            },\n            \"checkout\": {\n                \"currency\": \"USD\",\n                \"amount\": 50\n            },\n            \"total\":{\n                \"currency\": \"USD\",\n                \"amount\": 200\n            }\n        },\n        \"user\": {\n            \"ip\": \"127.0.0.1\",\n            \"phone\": \"18777976552\",\n            \"email\": \"email@example.com\",\n            \"id\": \"1234567\",\n            \"name\": \"John Smith\",\n            \"country\": \"US\"\n        },\n        \"transaction\": {\n            \"id\": 1,\n            \"external_id\": 1,\n            \"dry_run\": 1,\n            \"agreement\": 1\n        },\n        \"refund_details\": {\n            \"code\": 4,\n            \"reason\": \"Potential fraud\"\n        },\n        \"payment_details\": {\n            \"sales_tax\": {\n                \"currency\": \"USD\",\n                \"amount\": 0\n            },\n            \"direct_wht\": {\n                \"currency\": \"USD\",\n                \"amount\": 0.70\n            },\n            \"xsolla_fee\": {\n                \"currency\": \"USD\",\n                \"amount\": \"10\"\n            },\n            \"payout\": {\n                \"currency\": \"USD\",\n                \"amount\": \"200\"\n            },\n            \"payment_method_fee\": {\n                \"currency\": \"USD\",\n                \"amount\": \"20\"\n            },\n            \"payment\": {\n                \"currency\": \"USD\",\n                \"amount\": \"230\"\n            },\n            \"repatriation_commission\": {\n                \"currency\": \"USD\",\n                \"amount\": 10\n            }\n        }\n    }\n}'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n    'notification_type' => 'refund',\n    'settings' => array(\n      'project_id' => 18404,\n      'merchant_id' => 2340\n    ),\n    'purchase' => array(\n        'total' => array(\n            'currency' => 'USD',\n            'amount' => 9.99\n        )\n    ),\n    'user' => array(\n        'ip' => '127.0.0.1',\n        'phone' => '18777976552',\n        'email' => 'email@example.com',\n        'id' => '1234567',\n        'country' => 'US'\n    ),\n    'transaction' => array(\n        'id' => 87654321,\n        'payment_date' => '2014-09-23T19:25:25+04:00',\n        'payment_method' => 1380,\n        'dry_run' => 1\n    ),\n    'refund_details' => array(\n            'code' => 4,\n            'reason' => 'Potential fraud'\n    ),\n    'payment_details' => array(\n        'payment' => array(\n            'currency' => 'USD',\n            'amount' => 9.99\n        ),\n        'vat' => array(\n            'currency' => 'USD',\n            'amount' => 0\n        ),\n        'sales_tax' => array(\n            'currency' => 'USD',\n            'amount' => 0\n        ),\n        'direct_wht' => array(\n            'currency' => 'USD',\n            'amount' => 70\n        ),\n        'payout_currency_rate' => 1,\n        'payout' => array(\n            'currency' => 'USD',\n            'amount' => 9.49\n        ),\n        'xsolla_fee' => array(\n            'currency' => 'USD',\n            'amount' => 0.19\n        ),\n        'payment_method_fee' => array(\n            'currency' => 'USD',\n            'amount' => 0.31\n        ),\n        'repatriation_commission' => array(\n            'currency' => 'USD',\n            'amount' => 0.2\n        )\n    )\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your_uri HTTP/1.1\nhost: your.host\naccept: application/json\ncontent-type: application/json\ncontent-length: 1220\nauthorization: Signature 31bd5924dd6cbc9cbe99d331c4a086a57291f9d7\n\n{\n    \"notification_type\": \"refund\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"purchase\": {\n        \"subscription\": {\n            \"plan_id\": \"b5dac9c8\",\n            \"subscription_id\": \"10\",\n            \"date_create\": \"2014-09-22T19:25:25+04:00\",\n            \"currency\": \"USD\",\n            \"amount\": 9.99\n        },\n        \"checkout\": {\n            \"currency\": \"USD\",\n            \"amount\": 50\n        },\n        \"total\": {\n            \"currency\": \"USD\",\n            \"amount\": 200\n        }\n    },\n    \"user\": {\n        \"ip\": \"127.0.0.1\",\n        \"phone\": \"18777976552\",\n        \"email\": \"email@example.com\",\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\",\n        \"country\": \"US\"\n    },\n    \"transaction\": {\n        \"id\": 1,\n        \"external_id\": 1,\n        \"dry_run\": 1,\n        \"agreement\": 1\n    },\n    \"refund_details\": {\n        \"code\": 4,\n        \"reason\": \"Potential fraud\"\n    },\n    \"payment_details\": {\n        \"sales_tax\": {\n            \"currency\": \"USD\",\n            \"amount\": 0\n        },\n        \"direct_wht\": {\n            \"currency\": \"USD\",\n            \"amount\": 0.70\n        },\n        \"xsolla_fee\": {\n            \"currency\": \"USD\",\n            \"amount\": \"10\"\n        },\n        \"payout\": {\n            \"currency\": \"USD\",\n            \"amount\": \"200\"\n        },\n        \"payment_method_fee\": {\n            \"currency\": \"USD\",\n            \"amount\": \"20\"\n        },\n        \"payment\": {\n            \"currency\": \"USD\",\n            \"amount\": \"230\"\n        },\n        \"repatriation_commission\": {\n            \"currency\": \"USD\",\n            \"amount\": 10\n        }\n    }\n}"
          }
        ]
      }
    },
    "remove-payment-account": {
      "post": {
        "description": "Wenn ein Benutzer ein Zahlungskonto aus den gespeicherten Konten entfernt, sendet Xsolla einen Webhook vom Typ `payment_account_remove` an die Webhook-URL. Wenden Sie sich an Ihren Customer Success Manager oder senden Sie eine E-Mail an <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>, wenn Sie diesen Webhook erhalten möchten.",
        "operationId": "remove-payment-account",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "payment_account": {
                    "description": "Details des Zahlungskontos (Objekt).",
                    "properties": {
                      "id": {
                        "$ref": "#/components/schemas/payment_account.id"
                      },
                      "name": {
                        "$ref": "#/components/schemas/payment_account.name"
                      },
                      "payment_method": {
                        "$ref": "#/components/schemas/payment_account.payment_method"
                      },
                      "type": {
                        "$ref": "#/components/schemas/payment_account.type"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  },
                  "settings": {
                    "description": "Benutzerdefinierte Projekteinstellungen (Objekt).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Benutzerdaten (Objekt).",
                    "properties": {
                      "email": {
                        "$ref": "#/components/schemas/user.email"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Zahlungskonto entfernen",
        "tags": [
          "payments"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \\\n-d '{\n    \"notification_type\": \"payment_account_remove\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"email\": \"email@example.com\",\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\"\n    },\n    \"payment_account\": {\n        \"id\": \"12345678\",\n        \"name\": \"email@example.com\",\n        \"payment_method\": \"24\",\n        \"type\": \"paypal\"\n    }\n}'"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost:           your.hostname\naccept:         application/json\ncontent-length: 258\ncontent-type:   application/json\nauthorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523\n\n\n{\n    \"notification_type\": \"payment_account_remove\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"email\": \"email@example.com\",\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\"\n    },\n    \"payment_account\": {\n        \"id\": \"12345678\",\n        \"name\": \"email@example.com\",\n        \"payment_method\": \"24\",\n        \"type\": \"paypal\"\n    }\n}"
          }
        ]
      }
    },
    "successful-order-payment": {
      "post": {
        "description": "Xsolla sendet den Webhook <code>order_paid</code> an die angegebene URL, wenn \nder Nutzer die Bestellung erfolgreich bezahlt hat.\n\nDer Webhook <code>order_paid</code> enthält Informationen zu den gekauften \nArtikeln, Zahlungsdaten und Transaktionsdetails.\n\nDer Webhook <code>order_paid</code> wird nicht gesendet, wenn die Zahlung nicht \nerfolgreich war, zum Beispiel:\n* die Zahlungsmaske geöffnet wurde, aber der Benutzer die Bestellung nicht \n  bezahlt hat\n* die Zahlungsmaske geöffnet wurde, aber während der Zahlung Fehler auftraten\n\nEs wird empfohlen, den Webhook <code>order_paid</code> in weniger als drei \nSekunden zu verarbeiten.\n\n<div class=\"notice\">\n<p><strong>Hinweis</strong></p>\n<p>Die in einem Webhook versendeten Felder hängen von den folgenden Einstellungen ab:<ul><li>den im Kundenportal unter <a href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/store\">Projekteinstellungen &gt; Webhooks &gt; Erweiterte Einstellungen</a> konfigurierten Einstellungen</li><li>den bei Xsolla konfigurierten Einstellungen</li></ul></p><p>Bei Fragen wenden Sie sich bitte an Ihren Customer Success Manager oder senden Sie eine E-Mail an <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>.</p>\n</div>\n\nDie erwarteten Antworten sind im Abschnitt <b>Antworten</b> beschrieben. Sie \nkönnen andere Antwortcodes verwenden. Abhängig vom Antwortcode und je nachdem, \nob die automatische Zahlungserstattung aktiviert ist oder nicht, sieht die \nWebhook-Verarbeitungslogik aufseiten von Xsolla wie folgt aus:\n\n<table>\n    <thead>\n    <tr>\n        <th>Antwortcode</th>\n        <th>Automatische Zahlungserstattung ist deaktiviert (standardmäßig)</th>\n        <th>Automatische Zahlungserstattung ist aktiviert</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td><code>400</code>, <code>401</code>, <code>402</code>, <code>403</code>, <code>404</code>, <code>409</code>, <code>422</code>, <code>415</code></td>\n        <td>Keine Aktionen</td>\n        <td>Benutzer erhält automatische eine Erstattung</td>\n    </tr>\n    <tr>\n        <td><code>200</code>, <code>201</code>, <code>204</code></td>\n        <td>Keine Aktionen</td>\n        <td>Keine Aktionen</td>\n    </tr>\n    <tr>\n        <td>Anderer Code oder keine Antwort auf Webhook</td>\n        <td>Mehrere Webhooks werden innerhalb eines bestimmten Zeitintervalls gesendet: Zwei Versuche im Abstand von 5 Minuten, sieben Versuche im Abstand von jeweils 15 Minuten, zehn Versuche im Abstand von jeweils 60 Minuten.</td>\n        <td>Mehrere Webhooks werden innerhalb eines bestimmten Zeitintervalls gesendet: Zwei Versuche im Abstand von 5 Minuten, sieben Versuche im Abstand von jeweils 15 Minuten, zehn Versuche im Abstand von jeweils 60 Minuten. Wurden alle Webhooks gesendet, ohne eine erfolgreiche Antwort erhalten zu haben, wird dem Benutzer automatisch eine Erstattung ausgestellt.</td>\n    </tr>\n    </tbody>\n</table>\n\nWenden Sie sich an Ihre Customer Success Manager oder senden Sie eine E-Mail an \ncsm@xsolla.com, um die automatische Erstattungsfunktion zu verknüpfen.\n",
        "operationId": "successful-order-payment",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "billing": {
                    "description": "Transaktions- und Zahlungsdetails.",
                    "properties": {
                      "notification_type": {
                        "$ref": "#/components/schemas/notification_type"
                      },
                      "payment_details": {
                        "description": "Zahlungsdaten (Objekt).",
                        "properties": {
                          "country_wht": {
                            "$ref": "#/components/schemas/country_whc"
                          },
                          "direct_wht": {
                            "description": "Direkte Quellensteuer.",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              },
                              "percent": {
                                "description": "Direkter Quellensteuersatz.",
                                "format": "float",
                                "type": "number"
                              }
                            },
                            "type": "object"
                          },
                          "payment": {
                            "description": "Vom Benutzer entrichteter Betrag (Objekt).",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "payment_method_fee": {
                            "description": "Gebühren des Zahlungssystems.",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "payment_method_sum": {
                            "description": "Betrag, der vom Zahlungssystem abgebucht wird.",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "payout": {
                            "description": "Details zur Auszahlung (Objekt).",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "payout_currency_rate": {
                            "description": "Wechselkurs zwischen Zahlungs- und Auszahlungswährung.",
                            "type": "string"
                          },
                          "repatriation_commission": {
                            "description": "Objekt mit Daten über die Rückübertragungskosten, die Xsolla von Dritten auferlegt wurden.",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "sales_tax": {
                            "description": "Sales Tax (Objekt; nur in den USA und Kanada).",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              },
                              "percent": {
                                "description": "Sales-Tax-Steuersatz.",
                                "format": "float",
                                "type": "number"
                              }
                            },
                            "type": "object"
                          },
                          "user_acquisition_fee": {
                            "description": "Der Gesamtbetrag der Nutzerakquisitionsgebühren, der für die durch Affiliate-Netzwerke und Influencer vermittelten Käufe abgezogen wird (Objekt).",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              },
                              "percent": {
                                "description": "Gebührensatz für die Nutzerakquise (in %).",
                                "format": "float",
                                "type": "number"
                              }
                            },
                            "type": "object"
                          },
                          "vat": {
                            "description": "Angaben zur MwSt. (Objekt, nur in der EU).",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              },
                              "percent": {
                                "description": "Mehrwertsteuersatz.",
                                "format": "float",
                                "type": "number"
                              }
                            },
                            "type": "object"
                          },
                          "xsolla_balance_sum": {
                            "description": "Betrag, der vom Xsolla-Konto abgebucht wird.",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "xsolla_fee": {
                            "description": "Xsolla-Gebühr (Objekt).",
                            "properties": {
                              "amount": {
                                "description": "Betrag.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "purchase": {
                        "description": "Objekt, welches Angaben zum Kauf enthält.",
                        "properties": {
                          "coupon": {
                            "description": "Angaben zum Gutschein (Objekt; falls ein Gutschein bei Abschluss des Abonnements genutzt wurde).",
                            "properties": {
                              "campaign_code": {
                                "description": "Kampagne.",
                                "type": "string"
                              },
                              "coupon_code": {
                                "description": "Gutscheincode.",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "gift": {
                            "description": "Benutzerdaten (Objekt).",
                            "properties": {
                              "giver_id": {
                                "description": "Spender-ID.",
                                "type": "string"
                              },
                              "hide_giver_from_receiver": {
                                "description": "Legt fest, ob die Identität des Spenders vor dem Beschenkten geheim gehalten werden soll.",
                                "type": "string"
                              },
                              "message": {
                                "description": "Nachricht vom Spender.",
                                "type": "string"
                              },
                              "receiver_email": {
                                "description": "E-Mail des Geschenkempfängers.",
                                "type": "string"
                              },
                              "receiver_id": {
                                "description": "ID des Geschenkempfängers.",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "promotions": {
                            "description": "Werbeaktionen, die bei dieser Transaktion Verwendung finden.",
                            "items": {
                              "properties": {
                                "id": {
                                  "description": "ID der Werbeaktion.",
                                  "type": "integer"
                                },
                                "technical_name": {
                                  "description": "Arbeitstitel der Werbeaktion.",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "type": "array"
                          },
                          "subscription": {
                            "description": "Angaben zum Abonnement (Objekt).",
                            "properties": {
                              "amount": {
                                "$ref": "#/components/schemas/amount-float"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              },
                              "date_create": {
                                "$ref": "#/components/schemas/subscription.date_create"
                              },
                              "date_next_charge": {
                                "description": "Nächstes Rechnungsdatum. Datums- und Zeitangabe gemäß [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
                                "type": "string"
                              },
                              "plan_id": {
                                "$ref": "#/components/schemas/subscription.plan_id"
                              },
                              "product_id": {
                                "description": "Produkt-ID (falls sie im Zugriffstoken versendet wurde).",
                                "type": "string"
                              },
                              "subscription_id": {
                                "$ref": "#/components/schemas/subscription.subscription_id"
                              },
                              "tags": {
                                "$ref": "#/components/schemas/subscription.tags"
                              }
                            },
                            "type": "object"
                          },
                          "total": {
                            "description": "Gesamtpreis des Einkaufs (Objekt).",
                            "properties": {
                              "amount": {
                                "description": "Gesamtbetrag der Zahlung.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "required": [
                          "total"
                        ],
                        "type": "object"
                      },
                      "settings": {
                        "description": "Benutzerdefinierte Projekteinstellungen (Objekt).",
                        "properties": {
                          "merchant_id": {
                            "$ref": "#/components/schemas/settings.merchant_id"
                          },
                          "project_id": {
                            "$ref": "#/components/schemas/settings.project_id"
                          }
                        },
                        "type": "object"
                      },
                      "transaction": {
                        "description": "Details zur Transaktion (Objekt).",
                        "properties": {
                          "agreement": {
                            "description": "ID der Vereinbarung.",
                            "type": "integer"
                          },
                          "dry_run": {
                            "description": "Testtransaktion. Der Parameter hat den Wert 1, wenn es sich um eine Testtransaktion handelt. Er wird nicht gesendet, wenn es sich um eine echte Transaktion handelt.",
                            "type": "integer"
                          },
                          "external_id": {
                            "$ref": "#/components/schemas/external-id"
                          },
                          "id": {
                            "description": "ID der Transaktion.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "payment_date": {
                            "description": "Zahlungsdatum.",
                            "type": "string"
                          },
                          "payment_method": {
                            "description": "ID der Zahlungsart.",
                            "type": "integer"
                          },
                          "payment_method_name": {
                            "description": "Name der Zahlungsmethode.",
                            "type": "string"
                          },
                          "payment_method_order_id": {
                            "description": "Zahlungs-ID im Zahlungssystem.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "required": [
                      "notification_type",
                      "transaction",
                      "payment_details"
                    ],
                    "type": "object"
                  },
                  "custom_parameters": {
                    "description": "Zusätzliche Informationen.",
                    "type": "object"
                  },
                  "items": {
                    "description": "Liste der vom Nutzer gekauften Artikel.\n\nDie im Array enthaltenen Parameter hängen von der Webhook-Version ab. In \nVersion 2 sind zusätzliche Parameter enthalten: `is_free`, `is_bonus` und \n`is_bundle_content`. Geben Sie die entsprechende Nummer im Parameter `version` \nim API-Aufruf [Informationen zu Webhook-Einstellungen \naktualisieren](/de/api/igs/operation/update-webhook/) an, um die Version zu \nwechseln.\n",
                    "items": {
                      "oneOf": [
                        {
                          "properties": {
                            "amount": {
                              "description": "Gesamtkosten der Artikel basierend auf ihrer Menge.",
                              "type": "string"
                            },
                            "custom_attributes": {
                              "description": "Ein JSON-Objekt mit Artikelattributen und ‑werten.",
                              "type": "object"
                            },
                            "is_pre_order": {
                              "description": "Ist `true` festgelegt, kann der Artikel vorbestellt werden.",
                              "type": "boolean"
                            },
                            "promotions": {
                              "$ref": "#/components/schemas/items.promotions"
                            },
                            "quantity": {
                              "description": "Menge der Gegenstände.",
                              "type": "integer"
                            },
                            "sku": {
                              "$ref": "#/components/schemas/items.sku"
                            },
                            "type": {
                              "$ref": "#/components/schemas/items.type"
                            }
                          },
                          "required": [
                            "sku",
                            "type",
                            "quantity",
                            "amount",
                            "promotions",
                            "is_pre_order"
                          ],
                          "title": "Version = 1",
                          "type": "object"
                        },
                        {
                          "properties": {
                            "amount": {
                              "description": "Gesamtkosten der Artikel basierend auf ihrer Menge.",
                              "type": "string"
                            },
                            "custom_attributes": {
                              "description": "Ein JSON-Objekt mit Artikelattributen und ‑werten.",
                              "type": "object"
                            },
                            "is_bonus": {
                              "description": "Ist `true` festgelegt, ist der Artikel ein Bonus.",
                              "type": "boolean"
                            },
                            "is_bundle_content": {
                              "description": "Ist `true` festgelegt, gehört der Artikel zu einem Bundle.",
                              "type": "boolean"
                            },
                            "is_free": {
                              "description": "Ist `true` festgelegt, ist der Artikel kostenlos.",
                              "type": "boolean"
                            },
                            "is_pre_order": {
                              "description": "Ist `true` festgelegt, kann der Artikel vorbestellt werden.",
                              "type": "boolean"
                            },
                            "promotions": {
                              "$ref": "#/components/schemas/items.promotions"
                            },
                            "quantity": {
                              "description": "Menge der Gegenstände.",
                              "type": "integer"
                            },
                            "sku": {
                              "$ref": "#/components/schemas/items.sku"
                            },
                            "type": {
                              "$ref": "#/components/schemas/items.type"
                            }
                          },
                          "required": [
                            "sku",
                            "type",
                            "quantity",
                            "amount",
                            "promotions",
                            "is_pre_order",
                            "is_free",
                            "is_bonus",
                            "is_bundle_content"
                          ],
                          "title": "Version = 2",
                          "type": "object"
                        }
                      ]
                    },
                    "type": "array"
                  },
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "order": {
                    "description": "Bestellinformationen.",
                    "properties": {
                      "amount": {
                        "description": "Die Gesamtkosten eines Warenkorbs basierend auf der gewählten Währung.",
                        "type": "string"
                      },
                      "comment": {
                        "description": "Benutzeranmerkung der Bestellung.",
                        "nullable": true,
                        "type": "string"
                      },
                      "coupons": {
                        "description": "Angewandte Gutscheine. Wird der Gutschein nicht angewendet, wird kein Array zurückgegeben.",
                        "items": {
                          "properties": {
                            "code": {
                              "description": "Der Code eines angewandten Gutscheins.",
                              "type": "string"
                            },
                            "external_id": {
                              "description": "Externe ID.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "currency": {
                        "description": "Währung der Bestellung. Bei virtuellen Währungen wird die SKU und bei echten Währungen der aus drei Buchstaben bestehende Code gemäß [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) genutzt.",
                        "type": "string"
                      },
                      "currency_type": {
                        "$ref": "#/components/schemas/currency-type"
                      },
                      "id": {
                        "description": "Eindeutige Kennung der Bestellung des Benutzers aufseiten von Xsolla.",
                        "type": "integer"
                      },
                      "invoice_id": {
                        "description": "Rechnungs-ID bei Zahlungen mit echter Währung. Bei Zahlungen mit virtueller Währung oder bei kostenlosen Artikeln wird der Wert `null` genutzt.",
                        "nullable": true,
                        "type": "string"
                      },
                      "mode": {
                        "description": "Zahlungsmodus. `default` wird bei realen Zahlungen verwendet; `sandbox` bei Testzahlungen.",
                        "enum": [
                          "default",
                          "sandbox"
                        ],
                        "type": "string"
                      },
                      "platform": {
                        "description": "Zahlungsplattform. Bei über Xsolla abgewickelten Zahlungen wird der Wert `xsolla` verwendet. Bei anderen Zahlungen wird als Wert der Name der entsprechenden Publishing-Plattform verwendet.",
                        "enum": [
                          "xsolla",
                          "playstation_network",
                          "xbox_live",
                          "pc_standalone",
                          "nintendo_shop",
                          "google_play",
                          "app_store_ios",
                          "android_standalone",
                          "ios_standalone",
                          "android_other",
                          "ios_other",
                          "pc_other"
                        ],
                        "nullable": true,
                        "type": "string"
                      },
                      "promocodes": {
                        "description": "Angewandte Promocodes. Wird der Promocode nicht angewandt, wird kein Array zurückgegeben.",
                        "items": {
                          "properties": {
                            "code": {
                              "description": "Der Code eines angewandten Promocodes.",
                              "type": "string"
                            },
                            "external_id": {
                              "description": "Externe ID.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "promotions": {
                        "$ref": "#/components/schemas/order.promotions"
                      },
                      "status": {
                        "description": "Bestellstatus.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "mode",
                      "currency_type",
                      "currency",
                      "amount",
                      "status",
                      "platform",
                      "comment",
                      "invoice_id",
                      "promotions"
                    ],
                    "type": "object"
                  },
                  "user": {
                    "description": "Benutzerinformationen.",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "description": "E-Mail-Adresse des Benutzers.",
                        "type": "string"
                      },
                      "external_id": {
                        "description": "Benutzer-ID.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "external_id",
                      "email"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "items",
                  "order",
                  "user",
                  "transaction",
                  "payment_details"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Zur Signalisierung einer erfolgreiche Verarbeitung."
          },
          "400": {
            "description": "Im Falle eines Fehlers in den bereitgestellten Daten (z. B. fehlender erforderlicher Parameter, fehlgeschlagene Autorisierung usw.)."
          }
        },
        "summary": "Erfolgreiche Bezahlung der Bestellung (mit Zahlungs- und Transaktionsdetails)",
        "tags": [
          "combined-webhooks"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \\\n-d '{\n    \"notification_type\": \"order_paid\",\n    \"items\": [\n      {\n        \"sku\": \"com.xsolla.item_1\",\n        \"type\": \"virtual_good\",\n        \"is_pre_order\": false,\n        \"quantity\": 3,\n        \"amount\": \"1000\",\n        \"promotions\": [\n          {\n            \"amount_without_discount\": \"6000\",\n            \"amount_with_discount\": \"5000\",\n            \"sequence\": 1\n          },\n          {\n            \"amount_without_discount\": \"5000\",\n            \"amount_with_discount\": \"4000\",\n            \"sequence\": 2\n          }\n        ],\n        \"custom_attributes\":\n          {\n            \"purchased\": 0,\n            \"attr\": \"value\"\n          }\n      },\n      {\n        \"sku\": \"com.xsolla.item_new_1\",\n        \"type\": \"bundle\",\n        \"is_pre_order\": false,\n        \"quantity\": 1,\n        \"amount\": \"1000\",\n        \"promotions\": []\n      },\n      {\n        \"sku\": \"com.xsolla.gold_1\",\n        \"type\": \"virtual_currency\",\n        \"is_pre_order\": false,\n        \"quantity\": 1500,\n        \"amount\": null,\n        \"promotions\": []\n      }\n    ],\n    \"order\": {\n      \"id\": 1,\n      \"mode\": \"default\",\n      \"currency_type\": \"virtual\",\n      \"currency\": \"sku_currency\",\n      \"amount\": \"2000\",\n      \"status\": \"paid\",\n      \"platform\": \"xsolla\",\n      \"comment\": null,\n      \"invoice_id\": \"1\",\n      \"promotions\": [\n        {\n          \"amount_without_discount\": \"4000\",\n          \"amount_with_discount\": \"2000\",\n          \"sequence\": 1\n        }\n      ],\n      \"promocodes\": [\n        {\n          \"code\": \"promocode_some_code\",\n          \"external_id\": \"promocode_sku\"\n        }\n      ],\n      \"coupons\": [\n        {\n          \"code\": \"WINTER2021\",\n          \"external_id\": \"coupon_sku\"\n        }\n      ]\n    },\n    \"user\": {\n      \"external_id\": \"id_xsolla_login_1\",\n      \"email\": \"gc_user@xsolla.com\",\n      \"country\": \"US\"\n    },\n    \"billing\": {\n      \"notification_type\": \"payment\",\n      \"settings\": {\n        \"project_id\": 18404,\n        \"merchant_id\": 2340\n      },\n      \"purchase\": {\n          \"subscription\": {\n              \"plan_id\": \"b5dac9c8\",\n              \"subscription_id\": \"10\",\n              \"product_id\": \"Demo Product\",\n              \"date_create\": \"2014-09-22T19:25:25+04:00\",\n              \"date_next_charge\": \"2014-10-22T19:25:25+04:00\",\n              \"currency\": \"USD\",\n              \"amount\": 9.99\n          },\n          \"total\": {\n              \"currency\": \"USD\",\n              \"amount\": 200\n          },\n          \"promotions\": [{\n              \"technical_name\": \"Demo Promotion\",\n              \"id\": 853\n          }],\n          \"coupon\": {\n              \"coupon_code\": \"ICvj45S4FUOyy\",\n              \"campaign_code\": \"1507\"\n          }\n        },\n      \"transaction\": {\n          \"id\": 1,\n          \"external_id\": 1,\n          \"payment_date\": \"2014-09-24T20:38:16+04:00\",\n          \"payment_method\": 1,\n          \"payment_method_name\": \"PayPal\",\n          \"payment_method_order_id\": 1234567890123456789,\n          \"dry_run\": 1,\n          \"agreement\": 1\n      },\n      \"payment_details\": {\n          \"payment\": {\n              \"currency\": \"USD\",\n              \"amount\": 230\n          },\n          \"vat\": {\n              \"currency\": \"USD\",\n              \"amount\": 0,\n              \"percent\": 20\n          },\n          \"sales_tax\": {\n              \"currency\": \"USD\",\n              \"amount\": 0,\n              \"percent\": 0\n          },\n          \"direct_wht\": {\n              \"currency\": \"USD\",\n              \"amount\": 0,\n              \"percent\": 0\n          },\n          \"payout_currency_rate\": \"1\",\n          \"payout\": {\n              \"currency\": \"USD\",\n              \"amount\": 200\n          },\n          \"country_wht\": {\n              \"currency\": \"USD\",\n              \"amount\": 2,\n              \"percent\": 10\n          },\n          \"user_acquisition_fee\": {\n              \"currency\": \"USD\",\n              \"amount\": 2,\n              \"percent\": 1\n          },\n          \"xsolla_fee\": {\n              \"currency\": \"USD\",\n              \"amount\": 10\n          },\n          \"payment_method_fee\": {\n              \"currency\": \"USD\",\n              \"amount\": 20\n          },\n          \"repatriation_commission\": {\n              \"currency\": \"USD\",\n              \"amount\": 10\n          }\n      }\n    }\n ,\n  \"custom_parameters\": {\n    \"parameter1\": \"value1\",\n    \"parameter2\": \"value2\"\n  }\n}"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost:           your.hostname\naccept:         application/json\ncontent-length: 258\ncontent-type:   application/json\nauthorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523\n\n\n{\n    \"notification_type\": \"order_paid\",\n    \"items\": [\n      {\n        \"sku\": \"com.xsolla.item_1\",\n        \"type\": \"virtual_good\",\n        \"is_pre_order\": false,\n        \"quantity\": 3,\n        \"amount\": \"1000\",\n        \"promotions\": [\n          {\n            \"amount_without_discount\": \"6000\",\n            \"amount_with_discount\": \"5000\",\n            \"sequence\": 1\n          },\n          {\n            \"amount_without_discount\": \"5000\",\n            \"amount_with_discount\": \"4000\",\n            \"sequence\": 2\n          }\n        ],\n        \"custom_attributes\":\n          {\n            \"purchased\": 0,\n            \"attr\": \"value\"\n          }\n      },\n      {\n        \"sku\": \"com.xsolla.item_new_1\",\n        \"type\": \"bundle\",\n        \"is_pre_order\": false,\n        \"quantity\": 1,\n        \"amount\": \"1000\",\n        \"promotions\": []\n      },\n      {\n        \"sku\": \"com.xsolla.gold_1\",\n        \"type\": \"virtual_currency\",\n        \"is_pre_order\": false,\n        \"quantity\": 1500,\n        \"amount\": null,\n        \"promotions\": []\n      }\n    ],\n    \"order\": {\n      \"id\": 1,\n      \"mode\": \"default\",\n      \"currency_type\": \"virtual\",\n      \"currency\": \"sku_currency\",\n      \"amount\": \"2000\",\n      \"status\": \"paid\",\n      \"platform\": \"xsolla\",\n      \"comment\": null,\n      \"invoice_id\": \"1\",\n      \"promotions\": [\n        {\n          \"amount_without_discount\": \"4000\",\n          \"amount_with_discount\": \"2000\",\n          \"sequence\": 1\n        }\n      ],\n      \"promocodes\": [\n        {\n          \"code\": \"promocode_some_code\",\n          \"external_id\": \"promocode_sku\"\n        }\n      ],\n      \"coupons\": [\n        {\n          \"code\": \"WINTER2021\",\n          \"external_id\": \"coupon_sku\"\n        }\n      ]\n    },\n    \"user\": {\n      \"external_id\": \"id_xsolla_login_1\",\n      \"email\": \"gc_user@xsolla.com\",\n      \"country\": \"US\"\n    },\n    \"billing\": {\n      \"notification_type\": \"payment\",\n      \"settings\": {\n        \"project_id\": 18404,\n        \"merchant_id\": 2340\n      },\n      \"purchase\":{\n          \"subscription\": {\n              \"plan_id\": \"b5dac9c8\",\n              \"subscription_id\": \"10\",\n              \"product_id\": \"Demo Product\",\n              \"date_create\": \"2014-09-22T19:25:25+04:00\",\n              \"date_next_charge\": \"2014-10-22T19:25:25+04:00\",\n              \"currency\": \"USD\",\n              \"amount\": 9.99\n          },\n          \"total\": {\n              \"currency\": \"USD\",\n              \"amount\": 200\n          },\n          \"promotions\": [{\n              \"technical_name\": \"Demo Promotion\",\n              \"id\": 853\n          }],\n          \"coupon\": {\n              \"coupon_code\": \"ICvj45S4FUOyy\",\n              \"campaign_code\": \"1507\"\n          }\n      },\n      \"transaction\": {\n          \"id\": 1,\n          \"external_id\": 1,\n          \"payment_date\": \"2014-09-24T20:38:16+04:00\",\n          \"payment_method\": 1,\n          \"payment_method_name\": \"PayPal\",\n          \"payment_method_order_id\": 1234567890123456789,\n          \"dry_run\": 1,\n          \"agreement\": 1\n      },\n      \"payment_details\": {\n          \"payment\": {\n              \"currency\": \"USD\",\n              \"amount\": 230\n          },\n          \"vat\": {\n              \"currency\": \"USD\",\n              \"amount\": 0,\n              \"percent\": 20\n          },\n          \"sales_tax\": {\n              \"currency\": \"USD\",\n              \"amount\": 0,\n              \"percent\": 0\n          },\n          \"direct_wht\": {\n              \"currency\": \"USD\",\n              \"amount\": 0,\n              \"percent\": 0\n          },\n          \"payout_currency_rate\": \"1\",\n          \"country_wht\": {\n              \"currency\": \"USD\",\n              \"amount\": 2,\n              \"percent\": 10\n          },\n          \"user_acquisition_fee\": {\n              \"currency\": \"USD\",\n              \"amount\": 2,\n              \"percent\": 1\n          },\n          \"payout\": {\n              \"currency\": \"USD\",\n              \"amount\": 200\n          },\n          \"xsolla_fee\": {\n              \"currency\": \"USD\",\n              \"amount\": 10\n          },\n          \"payment_method_fee\": {\n              \"currency\": \"USD\",\n              \"amount\": 20\n          },\n          \"repatriation_commission\": {\n              \"currency\": \"USD\",\n              \"amount\": 10\n          }\n      }\n    },\n    \"custom_parameters\": {\n        \"parameter1\": \"value1\",\n        \"parameter2\": \"value2\"\n        }\n    }"
          }
        ]
      }
    },
    "successful-order-payment-separate": {
      "post": {
        "description": "Xsolla sendet den Webhook <code>order_paid</code> an die angegebene URL, wenn \ndie folgenden Bedingungen erfüllt sind:\n1. Der Benutzer hat die Bestellung erfolgreich bezahlt.\n2. Xsolla hat eine Antwort über die erfolgreiche Verarbeitung des Webhooks \n   [Zahlung](/de/webhooks/operation/payment/) erhalten.\n\nDer Webhook <code>order_paid</code> enthält Informationen zu den gekauften \nArtikeln und Transaktionsdetails.\n\nDer Webhook <code>order_paid</code> wird nicht gesendet, wenn:\n* die Zahlung nicht erfolgreich war, zum Beispiel:\n  * die Zahlungsmaske geöffnet wurde, aber der Benutzer die Bestellung nicht \n    bezahlt hat\n  * die Zahlungsmaske geöffnet wurde, aber während der Zahlung Fehler auftraten\n* die Antwort über die erfolgreiche Verarbeitung des Webhooks \n  [Zahlung](/de/webhooks/operation/payment/) nicht eingegangen ist.\n\nEs wird empfohlen, den Webhook <code>order_paid</code> in weniger als drei \nSekunden zu verarbeiten.\n\nDie erwarteten Antworten sind im Abschnitt <b>Antworten</b> beschrieben. Sie \nkönnen andere Antwortcodes verwenden. Abhängig vom Antwortcode und je nachdem, \nob die automatische Zahlungserstattung aktiviert ist oder nicht, sieht die \nWebhook-Verarbeitungslogik aufseiten von Xsolla wie folgt aus:\n\n<table>\n    <thead>\n    <tr>\n        <th>Antwortcode</th>\n        <th>Automatische Zahlungserstattung ist deaktiviert (standardmäßig)</th>\n        <th>Automatische Zahlungserstattung ist aktiviert</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td><code>400</code>, <code>401</code>, <code>402</code>, <code>403</code>, <code>404</code>, <code>409</code>, <code>422</code>, <code>415</code></td>\n        <td>Keine Aktionen</td>\n        <td>Benutzer erhält automatische eine Erstattung</td>\n    </tr>\n    <tr>\n        <td><code>200</code>, <code>201</code>, <code>204</code></td>\n        <td>Keine Aktionen</td>\n        <td>Keine Aktionen</td>\n    </tr>\n    <tr>\n        <td>Anderer Code oder keine Antwort auf Webhook</td>\n        <td>Mehrere Webhooks werden innerhalb eines bestimmten Zeitintervalls gesendet: Zwei Versuche im Abstand von 5 Minuten, sieben Versuche im Abstand von jeweils 15 Minuten, zehn Versuche im Abstand von jeweils 60 Minuten.</td>\n        <td>Mehrere Webhooks werden innerhalb eines bestimmten Zeitintervalls gesendet: Zwei Versuche im Abstand von 5 Minuten, sieben Versuche im Abstand von jeweils 15 Minuten, zehn Versuche im Abstand von jeweils 60 Minuten. Wurden alle Webhooks gesendet, ohne eine erfolgreiche Antwort erhalten zu haben, wird dem Benutzer automatisch eine Erstattung ausgestellt.</td>\n    </tr>\n    </tbody>\n</table>\n\nWenden Sie sich an Ihre Customer Success Manager oder senden Sie eine E-Mail an \ncsm@xsolla.com, um die automatische Erstattungsfunktion zu verknüpfen.\n",
        "operationId": "successful-order-payment-separate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "custom_parameters": {
                    "description": "Zusätzliche Informationen.",
                    "type": "object"
                  },
                  "items": {
                    "description": "Liste der vom Nutzer gekauften Artikel.\n\nDie im Array enthaltenen Parameter hängen von der Webhook-Version ab. In \nVersion 2 sind zusätzliche Parameter enthalten: `is_free`, `is_bonus` und \n`is_bundle_content`. Geben Sie die entsprechende Nummer im Parameter `version` \nim API-Aufruf [Informationen zu Webhook-Einstellungen \naktualisieren](/de/api/igs/operation/update-webhook/) an, um die Version zu \nwechseln.\n",
                    "items": {
                      "oneOf": [
                        {
                          "properties": {
                            "amount": {
                              "description": "Gesamtkosten der Artikel basierend auf ihrer Menge.",
                              "type": "string"
                            },
                            "custom_attributes": {
                              "description": "Ein JSON-Objekt mit Artikelattributen und ‑werten.",
                              "type": "object"
                            },
                            "is_pre_order": {
                              "description": "Ist `true` festgelegt, kann der Artikel vorbestellt werden.",
                              "type": "boolean"
                            },
                            "promotions": {
                              "$ref": "#/components/schemas/items.promotions"
                            },
                            "quantity": {
                              "description": "Menge der Gegenstände.",
                              "type": "integer"
                            },
                            "sku": {
                              "$ref": "#/components/schemas/items.sku"
                            },
                            "type": {
                              "$ref": "#/components/schemas/items.type"
                            }
                          },
                          "required": [
                            "sku",
                            "type",
                            "quantity",
                            "amount",
                            "promotions",
                            "is_pre_order"
                          ],
                          "title": "Version = 1",
                          "type": "object"
                        },
                        {
                          "properties": {
                            "amount": {
                              "description": "Gesamtkosten der Artikel basierend auf ihrer Menge.",
                              "type": "string"
                            },
                            "custom_attributes": {
                              "description": "Ein JSON-Objekt mit Artikelattributen und ‑werten.",
                              "type": "object"
                            },
                            "is_bonus": {
                              "description": "Ist `true` festgelegt, ist der Artikel ein Bonus.",
                              "type": "boolean"
                            },
                            "is_bundle_content": {
                              "description": "Ist `true` festgelegt, gehört der Artikel zu einem Bundle.",
                              "type": "boolean"
                            },
                            "is_free": {
                              "description": "Ist `true` festgelegt, ist der Artikel kostenlos.",
                              "type": "boolean"
                            },
                            "is_pre_order": {
                              "description": "Ist `true` festgelegt, kann der Artikel vorbestellt werden.",
                              "type": "boolean"
                            },
                            "promotions": {
                              "$ref": "#/components/schemas/items.promotions"
                            },
                            "quantity": {
                              "description": "Menge der Gegenstände.",
                              "type": "integer"
                            },
                            "sku": {
                              "$ref": "#/components/schemas/items.sku"
                            },
                            "type": {
                              "$ref": "#/components/schemas/items.type"
                            }
                          },
                          "required": [
                            "sku",
                            "type",
                            "quantity",
                            "amount",
                            "promotions",
                            "is_pre_order",
                            "is_free",
                            "is_bonus",
                            "is_bundle_content"
                          ],
                          "title": "Version = 2",
                          "type": "object"
                        }
                      ]
                    },
                    "type": "array"
                  },
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "order": {
                    "description": "Bestellinformationen.",
                    "properties": {
                      "amount": {
                        "description": "Die Gesamtkosten eines Warenkorbs basierend auf der gewählten Währung.",
                        "type": "string"
                      },
                      "comment": {
                        "description": "Benutzeranmerkung der Bestellung.",
                        "nullable": true,
                        "type": "string"
                      },
                      "coupons": {
                        "description": "Angewandte Gutscheine. Wird der Gutschein nicht angewendet, wird kein Array zurückgegeben.",
                        "items": {
                          "properties": {
                            "code": {
                              "description": "Der Code eines angewandten Gutscheins.",
                              "type": "string"
                            },
                            "external_id": {
                              "description": "Externe ID.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "currency": {
                        "description": "Währung der Bestellung. Bei virtuellen Währungen wird die SKU und bei echten Währungen der aus drei Buchstaben bestehende Code gemäß [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) genutzt.",
                        "type": "string"
                      },
                      "currency_type": {
                        "$ref": "#/components/schemas/currency-type"
                      },
                      "id": {
                        "description": "Eindeutige Kennung der Bestellung des Benutzers aufseiten von Xsolla.",
                        "type": "integer"
                      },
                      "invoice_id": {
                        "description": "Rechnungs-ID bei Zahlungen mit echter Währung. Bei Zahlungen mit virtueller Währung oder bei kostenlosen Artikeln wird der Wert `null` genutzt.",
                        "nullable": true,
                        "type": "string"
                      },
                      "mode": {
                        "description": "Zahlungsmodus. `default` wird bei realen Zahlungen verwendet; `sandbox` bei Testzahlungen.",
                        "enum": [
                          "default",
                          "sandbox"
                        ],
                        "type": "string"
                      },
                      "platform": {
                        "description": "Zahlungsplattform. Bei über Xsolla abgewickelten Zahlungen wird der Wert `xsolla` verwendet. Bei anderen Zahlungen wird als Wert der Name der entsprechenden Publishing-Plattform verwendet.",
                        "enum": [
                          "xsolla",
                          "playstation_network",
                          "xbox_live",
                          "pc_standalone",
                          "nintendo_shop",
                          "google_play",
                          "app_store_ios",
                          "android_standalone",
                          "ios_standalone",
                          "android_other",
                          "ios_other",
                          "pc_other"
                        ],
                        "nullable": true,
                        "type": "string"
                      },
                      "promocodes": {
                        "description": "Angewandte Promocodes. Wird der Promocode nicht angewandt, wird kein Array zurückgegeben.",
                        "items": {
                          "properties": {
                            "code": {
                              "description": "Der Code eines angewandten Promocodes.",
                              "type": "string"
                            },
                            "external_id": {
                              "description": "Externe ID.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "promotions": {
                        "$ref": "#/components/schemas/order.promotions"
                      },
                      "status": {
                        "description": "Bestellstatus.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "mode",
                      "currency_type",
                      "currency",
                      "amount",
                      "status",
                      "platform",
                      "comment",
                      "invoice_id",
                      "promotions"
                    ],
                    "type": "object"
                  },
                  "user": {
                    "description": "Benutzerinformationen.",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "description": "E-Mail-Adresse des Benutzers.",
                        "type": "string"
                      },
                      "external_id": {
                        "description": "Benutzer-ID.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "external_id",
                      "email"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "items",
                  "order",
                  "user"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Zur Signalisierung einer erfolgreiche Verarbeitung."
          },
          "400": {
            "description": "Im Falle eines Fehlers in den bereitgestellten Daten (z. B. fehlender erforderlicher Parameter, fehlgeschlagene Autorisierung usw.)."
          }
        },
        "summary": "Erfolgreiche Bezahlung der Bestellung (ohne Zahlungs- und Transaktionsdetails)",
        "tags": [
          "separate-webhooks"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \\\n-d '{\n    \"notification_type\": \"order_paid\",\n    \"items\": [\n      {\n        \"sku\": \"com.xsolla.v.item_1\",\n        \"type\": \"virtual_good\",\n        \"is_pre_order\": false,\n        \"quantity\": 3,\n        \"amount\": \"1000\",\n        \"promotions\": [\n          {\n            \"amount_without_discount\": \"6000\",\n            \"amount_with_discount\": \"5000\",\n            \"sequence\": 1\n          },\n          {\n            \"amount_without_discount\": \"5000\",\n            \"amount_with_discount\": \"4000\",\n            \"sequence\": 2\n          }\n        ],\n        \"custom_attributes\":\n          {\n            \"purchased\": 0,\n            \"attr\": \"value\"\n          }\n      },\n      {\n        \"sku\": \"com.xsolla.v.item_new_1\",\n        \"type\": \"bundle\",\n        \"is_pre_order\": false,\n        \"quantity\": 1,\n        \"amount\": \"1000\",\n        \"promotions\": []\n      },\n      {\n        \"sku\": \"com.xsolla.gold_1\",\n        \"type\": \"virtual_currency\",\n        \"is_pre_order\": false,\n        \"quantity\": 1500,\n        \"amount\": \"[null]\",\n        \"promotions\": []\n      }\n    ],\n    \"order\": {\n      \"id\": 1,\n      \"mode\": \"default\",\n      \"currency_type\": \"virtual\",\n      \"currency\": \"sku_currency\",\n      \"amount\": \"2000\",\n      \"status\": \"paid\",\n      \"platform\": \"xsolla\",\n      \"comment\": null,\n      \"invoice_id\": \"1\",\n      \"promotions\": [\n        {\n          \"amount_without_discount\": \"4000\",\n          \"amount_with_discount\": \"2000\",\n          \"sequence\": 1\n        }\n      ],\n      \"promocodes\": [\n        {\n          \"code\": \"promocode_some_code\",\n          \"external_id\": \"promocode_sku\"\n        }\n      ],\n      \"coupons\": [\n        {\n          \"code\": \"WINTER2021\",\n          \"external_id\": \"coupon_sku\"\n        }\n      ]\n    },\n    \"user\": {\n      \"external_id\": \"id_xsolla_login_1\",\n      \"email\": \"gc_user@xsolla.com\",\n      \"country\": \"US\"\n    }\n\n}'"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost:           your.hostname\naccept:         application/json\ncontent-length: 258\ncontent-type:   application/json\nauthorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523\n\n\n{\n    \"notification_type\": \"order_paid\",\n    \"items\": [\n      {\n        \"sku\": \"com.xsolla.v.item_1\",\n        \"type\": \"virtual_good\",\n        \"is_pre_order\": false,\n        \"quantity\": 3,\n        \"amount\": \"1000\",\n        \"promotions\": [\n          {\n            \"amount_without_discount\": \"6000\",\n            \"amount_with_discount\": \"5000\",\n            \"sequence\": 1\n          },\n          {\n            \"amount_without_discount\": \"5000\",\n            \"amount_with_discount\": \"4000\",\n            \"sequence\": 2\n          }\n        ],\n        \"custom_attributes\":\n          {\n            \"purchased\": 0,\n            \"attr\": \"value\"\n          }\n      },\n      {\n        \"sku\": \"com.xsolla.v.item_new_1\",\n        \"type\": \"bundle\",\n        \"is_pre_order\": false,\n        \"quantity\": 1,\n        \"amount\": \"1000\",\n        \"promotions\": []\n      },\n      {\n        \"sku\": \"com.xsolla.gold_1\",\n        \"type\": \"virtual_currency\",\n        \"is_pre_order\": false,\n        \"quantity\": 1500,\n        \"amount\": \"[null]\",\n        \"promotions\": []\n      }\n    ],\n    \"order\": {\n      \"id\": 1,\n      \"mode\": \"default\",\n      \"currency_type\": \"virtual\",\n      \"currency\": \"sku_currency\",\n      \"amount\": \"2000\",\n      \"status\": \"paid\",\n      \"platform\": \"xsolla\",\n      \"comment\": null,\n      \"invoice_id\": \"1\",\n      \"promotions\": [\n        {\n          \"amount_without_discount\": \"4000\",\n          \"amount_with_discount\": \"2000\",\n          \"sequence\": 1\n        }\n      ],\n      \"promocodes\": [\n        {\n          \"code\": \"promocode_some_code\",\n          \"external_id\": \"promocode_sku\"\n        }\n      ],\n      \"coupons\": [\n        {\n          \"code\": \"WINTER2021\",\n          \"external_id\": \"coupon_sku\"\n        }\n      ]\n    },\n    \"user\": {\n      \"external_id\": \"id_xsolla_login_1\",\n      \"email\": \"gc_user@xsolla.com\",\n      \"country\": \"US\"\n    }\n}"
          }
        ]
      }
    },
    "updated-subscription": {
      "post": {
        "description": "Bei jeder Abonnementverlängerung, oder wenn bestimmte Abonnementparameter (`plan_id`, `date_next_charge`) geändert werden, sendet Xsolla einen Webhook vom Typ `update_subscription` an die Webhook-URL.",
        "operationId": "updated-subscription",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "settings": {
                    "description": "Benutzerdefinierte Projekteinstellungen (Objekt).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "subscription": {
                    "description": "Angaben zum Abonnement (Objekt).",
                    "properties": {
                      "date_next_charge": {
                        "$ref": "#/components/schemas/subscription.date_next_charge"
                      },
                      "plan_id": {
                        "$ref": "#/components/schemas/subscription.plan_id"
                      },
                      "product_id": {
                        "$ref": "#/components/schemas/subscription.product_id"
                      },
                      "subscription_id": {
                        "$ref": "#/components/schemas/subscription.subscription_id"
                      },
                      "tags": {
                        "$ref": "#/components/schemas/subscription.tags"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Benutzerdaten (Objekt).",
                    "properties": {
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Aktualisiertes Abonnement",
        "tags": [
          "subscriptions"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \\\n-d '{\n        \"notification_type\": \"update_subscription\",\n        \"settings\": {\n          \"project_id\": 18404,\n          \"merchant_id\": 2340\n        },\n        \"user\": {\n            \"id\": \"1234567\",\n            \"name\": \"John Smith\"\n        },\n        \"subscription\": {\n            \"plan_id\": \"b5dac9c8\",\n            \"subscription_id\": \"10\",\n            \"product_id\": \"Demo Product\",\n            \"date_next_charge\": \"2015-01-22T19:25:25+04:00\"\n        }\n    }'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n    'notification_type' => 'update_subscription',\n    'settings' => array(\n      'project_id' => 18404,\n      'merchant_id' => 2340\n    ),\n    'user' => array(\n        'id' => '1234567',\n        'name' => 'John Smith'\n    ),\n    'subscription' => array(\n        'plan_id' => 'b5dac9c8',\n        'subscription_id' => '10',\n        'product_id' => 'Demo Product',\n        'date_next_charge' => '2015-01-22T19:25:25+04:00'\n    )\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost: your.hostname\naccept: application/json\ncontent-type: application/json\ncontent-length: 240\nauthorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f\n\n{\n    \"notification_type\": \"update_subscription\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\"\n    },\n    \"subscription\": {\n        \"plan_id\": \"b5dac9c8\",\n        \"subscription_id\": \"10\",\n        \"product_id\": \"Demo Product\",\n        \"date_next_charge\": \"2015-01-22T19:25:25+04:00\"\n    }\n}"
          }
        ]
      }
    },
    "user-search": {
      "post": {
        "description": "<nt>Public User ID</nt> ist ein Parameter, der den Benutzer eindeutig identifiziert und ihm bekannt ist, im Gegensatz zur <nt>User ID</nt> (<nt>Public User ID</nt> kann eine E-Mail-Adresse, ein Anzeigename usw. sein). Xsolla sendet einen Webhook vom Typ `user_search`, wenn ein Kauf außerhalb des Spieleshops getätigt wird (z. B. an einem Automaten).",
        "operationId": "user-search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "settings": {
                    "description": "Benutzerdefinierte Projekteinstellungen (Objekt).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Benutzerdaten (Objekt).",
                    "properties": {
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "public_id": {
                        "$ref": "#/components/schemas/user.public_id"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "user"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Benutzersuche",
        "tags": [
          "user-validation"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \\\n-d '{\n    \"notification_type\": \"user_search\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"public_id\": \"email@example.com\"\n    }\n}'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n    'notification_type' => 'user_search',\n    'settings' => array(\n      'project_id' => 18404,\n      'merchant_id' => 2340\n    ),\n    'user' => array(\n        'public_id' => 'email@example.com'\n    )\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost: your.hostname\naccept: application/json\ncontent-type: application/json\ncontent-length: 240\nauthorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f\n\n{\n    \"notification_type\": \"user_search\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"public_id\": \"email@example.com\"\n    }\n}"
          }
        ]
      }
    },
    "user-validation": {
      "post": {
        "description": "Xsolla sendet einen Webhook vom Typ `user_validation` an die Webhook-URL, um zu \nüberprüfen, ob ein Benutzer im Spiel registriert ist. Die Anfrage wird im \nRahmen des Bezahlvorgangs mehrfach gesendet:\n\n* wenn ein Benutzer eine Zahlungsmethode im Zahlungsportal auswählt\n* wenn ein Benutzer Daten in die Zahlungsmaske eingibt, z. B. Bankkartendaten \n  oder die Postleitzahl bei Zahlung über PayPal\n* wenn ein Benutzer auf **Jetzt bezahlen** klickt, um mit der Zahlung fortzufahren\n* wenn der Bezahlvorgang abgeschlossen ist und der Transaktionsstatus sich in \n  `done` ändert\n\nDie Anfrage wird beim Bezahlen gesendet, ganz gleich, welche Zahlungsmethode \nzum Einsatz kommt.\n\nWenn Sie die Webhook-URL im Kundenportal speichern, können Sie Berechtigungen \nerteilen, detaillierte Informationen in Webhooks zu empfangen. Aktivieren Sie \ndazu im Kundenportal unter <a \nhref=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/store\">Projekteins\ntellungen &gt; Webhooks &gt; Erweiterte Einstellungen</a> die entsprechenden \nSchalter.\n\n<div class=\"note\">\n<p><strong>Hinweis</strong></p>\n<p>Wenn Sie sich am oder vor dem 22. Januar 2025 im Kundenportal registriert haben, finden Sie die Schalter unter <a href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/payments\">Projekteinstellungen &gt; Webhooks &gt; Testen &gt; Payments &gt; Erweiterte Einstellungen</a>.</p>\n</div>\n\n<table>\n<thead>\n    <tr>\n        <th>Schalter</th>\n        <th>Beschreibung</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Nur notwendige Nutzerparameter ohne vertrauliche Daten senden</td>\n        <td><p>Im Webhook werden nur die folgenden Nutzerinformationen übermittelt:</p><ul><li>ID</li><li>Land</li></ul></td>\n    </tr>\n    <tr>\n        <td>Individuelle Parameter senden</td>\n        <td>Informationen über <a href=\"/de/api/pay-station/operation/create-token/\">individuelle Tokenparameter</a> werden in dem Webhook übermittelt.</td>\n    </tr>\n</tbody>\n</table>\n",
        "operationId": "user-validation",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "settings": {
                    "description": "Benutzerdefinierte Projekteinstellungen (Objekt).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Benutzerdaten (Objekt).",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "$ref": "#/components/schemas/user.email"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "ip": {
                        "$ref": "#/components/schemas/user.ip"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      },
                      "phone": {
                        "$ref": "#/components/schemas/user.phone"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Benutzervalidierung",
        "tags": [
          "user-validation"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \\\n-d '{\n    \"notification_type\":\"user_validation\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"ip\": \"127.0.0.1\",\n        \"phone\": \"18777976552\",\n        \"email\": \"email@example.com\",\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\",\n        \"country\": \"US\"\n    }\n}'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n    'notification_type' => 'user_validation',\n    'settings' => array(\n      'project_id' => 18404,\n      'merchant_id' => 2340\n    ),\n    'user' => array(\n        'ip' => '127.0.0.1',\n        'phone' => '18777976552',\n        'email'=> 'email@example.com',\n        'id'=> '1234567',\n        'country' => 'US'\n    )\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost: your.hostname\naccept: application/json\ncontent-type: application/json\ncontent-length: 240\nauthorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f\n\n{\n    \"notification_type\": \"user_validation\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"ip\": \"127.0.0.1\",\n        \"phone\": \"18777976552\",\n        \"email\": \"email@example.com\",\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\",\n        \"country\": \"US\"\n    }\n}"
          }
        ]
      }
    },
    "user-validation-in-webshop": {
      "post": {
        "description": "Xsolla sendet einen Webhook von einer Webshop-Seite, um zu prüfen, ob ein Benutzer im Spiel vorhanden ist. Der Webhook wird von der folgenden IP-Adresse gesendet: 34.102.38.178.\n <div class=\"note\"><strong>Hinweis</strong><br><br>\nDer Webhook dient lediglich der Benutzervalidierung im Webshop. Wie man Webhooks im Site Builder konfiguriert, erfahren Sie in dieser <a target=\"_blank\" href=\"https://developers.xsolla.com/de/solutions/web-shop/authentication-and-analytics/set-up-authentication/\">Anleitung</a>.</div>",
        "operationId": "user-validation-in-webshop",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "settings": {
                    "description": "Benutzerdefinierte Projekteinstellungen (Objekt).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Benutzerdaten (Objekt).",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "user"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "attributes": [
                    {
                      "key": "level",
                      "value": "2"
                    },
                    {
                      "key": "register_country",
                      "value": "AE"
                    }
                  ],
                  "removingKeys": [
                    "company"
                  ],
                  "user": {
                    "appPlayerId": "cuid12345",
                    "id": "1234567890",
                    "name": "test-name",
                    "picture": "https://example.com"
                  }
                },
                "schema": {
                  "properties": {
                    "attributes": {
                      "description": "Zur Personalisierung verwendete Benutzerattribute. Ausführliche Informationen finden Sie in der <a target=\"_blank\" href=\"https://developers.xsolla.com/de/doc/login/features/user-attributes/#login_features_user_attributes\">Dokumentation</a>.",
                      "items": {
                        "properties": {
                          "key": {
                            "description": "Attributname.",
                            "type": "string"
                          },
                          "value": {
                            "description": "Attributwert."
                          }
                        },
                        "required": [
                          "key",
                          "value"
                        ]
                      },
                      "type": "array"
                    },
                    "removingKeys": {
                      "description": "Liste der Attribute, die Sie löschen möchten. Wenn Sie dasselbe Attribut im Parameter `attributes` angeben, wird es nicht gelöscht.",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "user": {
                      "description": "Benutzerdaten (Objekt).",
                      "properties": {
                        "appPlayerId": {
                          "$ref": "#/components/schemas/appPlayerId"
                        },
                        "id": {
                          "description": "Benutzer-ID.",
                          "type": "string"
                        },
                        "name": {
                          "description": "Benutzername.",
                          "type": "string"
                        },
                        "picture": {
                          "description": "Link zum Benutzer-Avatar.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "user"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Gibt Informationen über den Benutzer zurück."
          },
          "404": {
            "description": "Benutzer nicht gefunden."
          }
        },
        "summary": "Benutzervalidierung im Web Shop",
        "tags": [
          "user-validation"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-d '{\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"id\": \"1234567\",\n        \"country\": \"US\"\n    }\n}'"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost: your.hostname\naccept: application/json\ncontent-type: application/json\ncontent-length: 240\n\n{\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"id\": \"1234567\",\n        \"country\": \"US\"\n    }\n}"
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "notification_type": {
        "description": "Benachrichtigungstyp.",
        "type": "string"
      },
      "payment_account.country": {
        "description": "Land des Zahlungskontos. Beispielsweise das Land der kartenausgebenden Bank oder das Land, das bei der Erstellung eines PayPal-Kontos angegeben wurde. Ländercode bestehend aus zwei Großbuchstaben gemäß [ISO 3166-1 Alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).",
        "type": "string"
      },
      "payment_account.id": {
        "description": "ID des Zahlungskontos.",
        "type": "string"
      },
      "payment_account.name": {
        "description": "Name des Zahlungskontos im Zahlungssystem (z. B. Zahlungskartennummer, E-Mail-Adresse).",
        "type": "string"
      },
      "payment_account.payment_method": {
        "description": "ID der Zahlungsart.",
        "type": "integer"
      },
      "payment_account.type": {
        "description": "Art des Zahlungskontos (z. B. Karte, PayPal).",
        "type": "string"
      },
      "settings.merchant_id": {
        "description": "Händler-ID.",
        "type": "integer"
      },
      "settings.project_id": {
        "description": "Projekt-ID. Dieser Parameter wird im [Kundenportal](https://publisher.xsolla.com/) neben dem Projektnamen angezeigt.",
        "type": "integer"
      },
      "user.country": {
        "description": "Land des Benutzers. Ländercode, bestehend aus 2 Großbuchstaben gemäß [ISO 3166-1 ALPHA-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).",
        "type": "string"
      },
      "user.email": {
        "description": "E-Mail des Benutzers.",
        "type": "string"
      },
      "user.id": {
        "description": "Benutzer-ID.",
        "type": "string"
      },
      "user.ip": {
        "description": "Benutzer-IP.",
        "type": "string"
      },
      "user.name": {
        "description": "Benutzername.",
        "type": "string"
      },
      "user.zip": {
        "description": "Postleitzahl des Benutzers.",
        "type": "string"
      },
      "subscription.date_create": {
        "description": "Datum, an dem das Abonnement abgeschlossen wurde. Datums- und Zeitangabe gemäß [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
        "type": "string"
      },
      "subscription.date_end": {
        "description": "Kündigungszeitpunkt des Abonnements. Datums- und Zeitangabe gemäß [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
        "type": "string"
      },
      "subscription.plan_id": {
        "description": "ID des Abo-Modells (extern, falls das Abo-Modell über die API angelegt wurde).",
        "type": "string"
      },
      "subscription.product_id": {
        "description": "Produkt-ID (falls sie im Zugriffstoken versendet wurde).",
        "type": "string"
      },
      "subscription.subscription_id": {
        "description": "In der Xsolla-Datenbank erfasste Abonnement-ID.",
        "type": "integer"
      },
      "subscription.tags": {
        "description": "Abo-Modell-Markierungen.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "subscription.date_next_charge": {
        "description": "Nächstes Rechnungsdatum. Datums- und Zeitangabe gemäß [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
        "type": "string"
      },
      "subscription.is_gift": {
        "description": "Ob das Abonnement verschenkt wurde. Der Parameter wird nur übermittelt, wenn `true` als Wert festgelegt ist.",
        "type": "boolean"
      },
      "dispute-date": {
        "description": "Datum der Streitfalleröffnung gemäß dem Standard [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339).",
        "type": "string"
      },
      "dispute-reason": {
        "description": "Grund für die Eröffnung des Streitfalls. Eine Beschreibung von Gründen finden Sie in der [Dokumentation](/de/payment-ui-and-flow/anti-fraud/chargeback/#payments_chargeback_reasons).",
        "enum": [
          "non_receipt",
          "not_as_described",
          "duplicate_processing",
          "paid_by_other_means",
          "incorrect_amount",
          "credit_not_processed",
          "general",
          "fraud",
          "cancelled_recurring",
          "cancelled_merchandise",
          "late_presentment",
          "no_authorization",
          "problem_with_remittance",
          "other"
        ],
        "type": "string"
      },
      "dispute-status": {
        "description": "Status des Streitfalls.",
        "enum": [
          "new",
          "accepted",
          "no_actions_required",
          "won",
          "lost"
        ],
        "type": "string",
        "x-enumDescriptions": {
          "accepted": "<b>Akzeptiert</b>",
          "lost": "<b>Verloren</b>",
          "new": "<b>Neu</b>",
          "no_actions_required": "<b>Laufend</b>",
          "won": "<b>Gewonnen</b>"
        }
      },
      "dispute-type": {
        "description": "Art des Streitfalls.",
        "enum": [
          "1st_time_chargeback",
          "2nd_time_chargeback",
          "arbitration",
          "retrieval",
          "representment",
          "chargeback_reversal",
          "representment_reversal",
          "reimbursement",
          "dispute",
          "chargeback",
          "claim",
          "reimbursement_reversal",
          "inquiry",
          "other"
        ],
        "type": "string",
        "x-enumDescriptions": {
          "1st_time_chargeback": "Erste Rückbuchung.",
          "2nd_time_chargeback": "Zweite Rückbuchung (vor dem Schiedsverfahren).",
          "arbitration": "Beilegung eines Streitfalls zwischen der ausstellenden Bank und dem Händler, wenn die erste Rückbuchung und die zweite Rückbuchung abgelehnt wurden.",
          "chargeback": "Erste Rückbuchung.",
          "chargeback_reversal": "Die Rückbuchung wurde widerrufen.",
          "claim": "Ein Streit zwischen einem Kunden und einem Händler in PayPal.",
          "dispute": "Ein Karteninhaber hat bei der Bank Zahlungsdaten angefordert.",
          "inquiry": "Ein Karteninhaber hat bei der Bank Zahlungsdaten angefordert.",
          "other": "Wird für Rückbuchungen verwendet, die von keinem anderen Typ abgedeckt sind.",
          "reimbursement": "Die Erstattung ist erfolgt.",
          "reimbursement_reversal": "Die Rückbuchung wurde widerrufen.",
          "representment": "Das für Rückbuchungen zuständige Team hat die Nachweise an das Zahlungssystem geschickt.",
          "representment_reversal": "Die Rückbuchung wurde widerrufen.",
          "retrieval": "Ein Karteninhaber hat bei der Bank Zahlungsdaten angefordert."
        }
      },
      "date-create": {
        "description": "Zahlungsdatum.",
        "type": "string"
      },
      "external-id": {
        "description": "Externe Transaktions-ID. Ausführliche Informationen finden Sie in den [FAQs](/de/doc/pay-station/references/faq/#faq_payments_q_new_transaction_external_id).",
        "type": "string"
      },
      "transaction-id": {
        "description": "ID der Transaktion.",
        "format": "int64",
        "type": "integer"
      },
      "dispute-payment-method": {
        "description": "Zahlungsmethode.",
        "enum": [
          "credit_debit_card",
          "paypal"
        ],
        "type": "string",
        "x-enumDescriptions": {
          "credit_debit_card": "Kredit- oder Debitkarte",
          "paypal": "PayPal"
        }
      },
      "transaction-total-amount": {
        "description": "Zahlungsbetrag.",
        "format": "float",
        "type": "number"
      },
      "currency": {
        "description": "Währung. Währungscode, bestehend aus drei Buchstaben gemäß [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).",
        "type": "string"
      },
      "country_whc": {
        "description": "Objekt mit Daten zu Quellensteuern, die in bestimmten Ländern aufgrund grenzüberschreitender Transaktionen erhoben werden.",
        "properties": {
          "amount": {
            "description": "Betrag.",
            "format": "float",
            "type": "number"
          },
          "currency": {
            "$ref": "#/components/schemas/currency"
          },
          "percent": {
            "description": "Prozentsatz des Quellensteuersatzes.",
            "format": "float",
            "type": "number"
          }
        },
        "type": "object"
      },
      "amount-float": {
        "description": "Preis in echter Währung.",
        "format": "float",
        "type": "number"
      },
      "items.promotions": {
        "description": "Angewandte Werbeaktionen für bestimmte Artikel in der Bestellung.\nDas Array wird in den folgenden Fällen zurückgegeben:\n  - Eine Rabattaktion ist für einen bestimmten Artikel konfiguriert.\n  - Ein Promocode mit der Einstellung **Rabatt auf ausgewählte Artikel** wird angewendet.\n\nWerden keine Werbeaktionen auf Artikelebene angewandt, wird ein leeres Array zurückgegeben.",
        "items": {
          "properties": {
            "amount_with_discount": {
              "description": "Gesamtkosten der Gegenstände inklusive Rabatt.",
              "type": "string"
            },
            "amount_without_discount": {
              "description": "Gesamtkosten der Gegenstände ohne Rabatt.",
              "type": "string"
            },
            "sequence": {
              "description": "Reihenfolge der angewandten Werbeaktionen.",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "items.sku": {
        "description": "Eindeutige ID des Artikels. Bei Artikeln vom Typ `game_key` wird ein Wert im Format `sku_drm` verwendet.",
        "type": "string"
      },
      "items.type": {
        "description": "Artikeltyp.\nFür Artikel vom Typ `bundle`, einschließlich virtueller Währungspakete, zeigt das Array `items` Folgendes an:\n  - Parameter des Bundles oder des virtuellen Währungspakets\n  - Im Bundle enthaltene Artikel oder im Paket enthaltene Währungen\n  \nDer Typ `value_point` wird bei Vorgängen mit [Treuepunkten](/de/solutions/loyalty-as-service/) verwendet, d. h., wenn Punkte ausgegeben oder gutgeschrieben werden.",
        "enum": [
          "virtual_good",
          "virtual_currency",
          "game_key",
          "bundle",
          "value_point"
        ],
        "type": "string"
      },
      "currency-type": {
        "description": "Zahlungswährungstyp. Bei einer kostenlosen Bestellung ist `unknown` als Wert angegeben.",
        "enum": [
          "real",
          "virtual",
          "unknown",
          "loyalty_point"
        ],
        "type": "string",
        "x-enumDescriptions": {
          "loyalty_point": "Treuepunkte",
          "real": "echte Währung",
          "unknown": "kostenlose Bestellung",
          "virtual": "virtuelle Währung"
        }
      },
      "order.promotions": {
        "description": "Angewandte Werbeaktionen für die gesamte Bestellung.\nDas Array wird in den folgenden Fällen zurückgegeben:\n  - Eine Werbeaktion wirkt sich auf den Gesamtkaufbetrag aus, z. B. ein Aktionscode mit der Einstellung **Rabatt auf Kauf**.\n  - Es wird kein Rabatt auf den Kauf angewandt, aber es werden Bonusartikel der Bestellung hinzugefügt. In diesem Fall werden die Werte für den Preis mit ([amount_with_discount](/de/webhooks/#operation/order-cancellation!path=order/promotions/amount_with_discount&t=request)) und ohne Rabatt ([amount_without_discount](/de/webhooks/#operation/order-cancellation!path=order/promotions/amount_without_discount&t=request)) zurückgegeben, wobei beide Werte identisch sind, da kein Rabatt angewandt wird.\n\nWerden keine Werbeaktionen auf Bestellebene angewandt, wird ein leeres Array zurückgegeben.",
        "items": {
          "properties": {
            "amount_with_discount": {
              "description": "Gesamtkosten der Gegenstände inklusive Rabatt.",
              "type": "string"
            },
            "amount_without_discount": {
              "description": "Gesamtkosten der Gegenstände ohne Rabatt.",
              "type": "string"
            },
            "sequence": {
              "description": "Reihenfolge der angewandten Werbeaktionen.",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "user.phone": {
        "description": "Telefonnummer des Benutzers.",
        "type": "string"
      },
      "order": {
        "description": "Objekt mit Informationen über eine Bestellung. Wenn Sie diese Informationen erhalten möchten, stellen Sie den Schalter **Bestellobjekt dem Webhook hinzufügen** im [Kundenportal](https://publisher.xsolla.com/) unter **Projekteinstellungen &gt; Webhooks &gt; Erweiterte Einstellungen** auf **Ein**.",
        "type": "object"
      },
      "locale": {
        "description": "Nutzersprache. [Sprachencode](https://developers.xsolla.com/de/doc/pay-station/features/localization/), bestehend aus 2 Kleinbuchstaben.",
        "type": "string"
      },
      "quantity": {
        "deprecated": true,
        "description": "Anzahl der Artikel, die ein einzelner Nutzer kaufen kann. Um eine unbegrenzte Menge festzulegen, müssen Sie `null` übermitteln . Um den Artikel für den Kauf zu sperren, ihn aber im Katalog sichtbar zu lassen, müssen Sie \"0\" übermitteln.\n\nWenn Sie diesen Parameter verwenden, werden die Kauflimitinformationen nicht im Katalog angezeigt. Um diese Informationen im Katalog anzuzeigen (z. B. \"7/10\"), müssen Sie das Paar `available` und `total` anstelle von `quantity` übermitteln.",
        "type": "integer"
      },
      "available": {
        "description": "Verbleibende Anzahl der Artikel, die der Nutzer kaufen kann.\n\nÜbermitteln Sie das Paar `available` und `total`, um Kauflimitinformationen im Katalog anzuzeigen (z. B. \"7/10\").",
        "type": "integer"
      },
      "total": {
        "description": "Höchstzahl von Artikeln, die ein einzelner Nutzer kaufen kann.\n\nUm Kauflimitinformationen im Katalog anzuzeigen (z. B. \"7/10\"), müssen Sie das Paar `available` und `total` übermitteln.",
        "exclusiveMinimum": 0,
        "type": "integer"
      },
      "bundle_content": {
        "description": "Array von Objekten mit Bundle-Inhalten für die Anzeige im Katalog. Kann nur für den Bundle-Typ [partner_side_content](https://developers.xsolla.com/de/api/shop-builder/operation/admin-create-bundle/) verwendet werden.",
        "items": {
          "properties": {
            "description": {
              "description": "Im Katalog anzuzeigende Artikelbeschreibung als Teil des Bundles. Ist nichts angegeben, wird der Wert `null` übermittelt.",
              "maxLength": 255,
              "type": "string"
            },
            "image_url": {
              "description": "URL des im Katalog anzuzeigenden Artikelbildes als Teil des Bundles. Es wird nur das HTTPS-Protokoll unterstützt. Ist nichts angegeben, wird der Wert `null` übermittelt.",
              "format": "uri",
              "maxLength": 255,
              "type": "string"
            },
            "name": {
              "description": "Im Katalog anzuzeigender Artikelname als Teil des Bundles. Ist nichts angegeben, wird ein leerer String übermittelt.",
              "maxLength": 255,
              "type": "string"
            },
            "quantity": {
              "default": 1,
              "description": "Wie viele Exemplare des Artikels im Bundle enthalten sind.",
              "minimum": 1,
              "type": "integer"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "date_from": {
        "description": "Datum, ab dem der Artikel erhältlich ist. Formatiert gemäß dem Standard [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339).",
        "type": "string"
      },
      "date_until": {
        "description": "Datum, ab dem der Artikel nicht mehr erhältlich ist. Formatiert gemäß dem Standard [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339).",
        "type": "string"
      },
      "description": {
        "description": "Im Katalog anzuzeigende Artikelbeschreibung. Überschreibt die im Artikel gespeicherte Beschreibung.",
        "maxLength": 255,
        "type": "string"
      },
      "image_url": {
        "description": "URL des im Katalog anzuzeigenden Bilds. Überschreibt die im Artikel gespeicherte Bild-URL. Nur das HTTPS-Protokoll wird unterstützt. Entspricht die URL nicht den Vorgaben, wird sie ignoriert.",
        "format": "uri",
        "maxLength": 255,
        "type": "string"
      },
      "json_attributes": {
        "description": "Ein JSON-Objekt mit den Artikelattributen und den zugehörigen Werten. Überschreibt die im Artikel gespeicherten [custom_attributes](https://developers.xsolla.com/de/webhooks/operation/successful-order-payment/#!path=items/0/custom_attributes&t=request). Wenn das JSON die Vorgaben nicht erfüllt oder die maximale Länge überschreitet, wird es ignoriert.",
        "format": "json",
        "maxLength": 500,
        "type": "object"
      },
      "name": {
        "description": "Im Katalog anzuzeigender Artikelname. Überschreibt den im Artikel gespeicherten Namen.",
        "maxLength": 255,
        "type": "string"
      },
      "sku": {
        "description": "Die im Kundenportal angegebene eindeutige ID des Artikels. Sie sollten entweder die `sku` oder die `item_id` übermitteln.",
        "type": "string"
      },
      "item_id": {
        "description": "Eindeutige Artikel-ID aufseiten von Xsolla. Sie sollten entweder die `sku` oder die `item_id` übermitteln.",
        "type": "integer"
      },
      "user.public_id": {
        "description": "Public User ID.",
        "type": "string"
      },
      "appPlayerId": {
        "description": "Die Benutzer-ID wird vom App-Eigentümer während der Nutzerregistrierung vergeben (kundenspezifische ID).\n<div lang=\"en\" class=\"note\"><strong>Hinweis</strong><br><br>Xsolla übermittelt diese Daten im <code>custom_parameters</code>-Objekt bei dem Aufruf, einen Zahlungstoken abzurufen.</div>",
        "type": "string"
      }
    },
    "responses": {
      "204": {
        "description": "Zur Signalisierung einer erfolgreiche Verarbeitung."
      },
      "400": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "error": {
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Im Falle eines Fehlers in den bereitgestellten Daten (z. B. fehlender erforderlicher Parameter, fehlgeschlagene Autorisierung usw.).",
        "x-examples": {
          "application/json": {
            "INCORRECT_AMOUNT": {
              "summary": "Incorrect amount",
              "value": {
                "error": {
                  "code": "INCORRECT_AMOUNT",
                  "message": "Incorrect amount"
                }
              }
            },
            "INCORRECT_INVOICE": {
              "summary": "Incorrect invoice",
              "value": {
                "error": {
                  "code": "INCORRECT_INVOICE",
                  "message": "Incorrect invoice"
                }
              }
            },
            "INVALID_PARAMETER": {
              "summary": "Invalid parameter",
              "value": {
                "error": {
                  "code": "INVALID_PARAMETER",
                  "message": "Invalid parameter"
                }
              }
            },
            "INVALID_SIGNATURE": {
              "summary": "Invalid signature",
              "value": {
                "error": {
                  "code": "INVALID_SIGNATURE",
                  "message": "Invalid signature"
                }
              }
            },
            "INVALID_USER": {
              "summary": "Invalid user",
              "value": {
                "error": {
                  "code": "INVALID_USER",
                  "message": "Invalid user"
                }
              }
            }
          }
        }
      },
      "500": {
        "description": "Im Falle von temporären Fehlern mit Ihren Servern."
      },
      "400-payment": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "error": {
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Rückgabe im Falle eines Fehlers in den bereitgestellten Informationen (z. B. fehlender erforderlicher Parameter, fehlgeschlagene Autorisierung usw.). In diesem Fall wird zwar das Geld des Nutzers abgebucht, der Kauf schlägt jedoch fehl. Um eine Rückerstattung vorzunehmen, wenden Sie sich an den Xsolla-Kundendienst unter support@xsolla.com.",
        "x-examples": {
          "application/json": {
            "INCORRECT_AMOUNT": {
              "summary": "Incorrect amount",
              "value": {
                "error": {
                  "code": "INCORRECT_AMOUNT",
                  "message": "Incorrect amount"
                }
              }
            },
            "INCORRECT_INVOICE": {
              "summary": "Incorrect invoice",
              "value": {
                "error": {
                  "code": "INCORRECT_INVOICE",
                  "message": "Incorrect invoice"
                }
              }
            },
            "INVALID_PARAMETER": {
              "summary": "Invalid parameter",
              "value": {
                "error": {
                  "code": "INVALID_PARAMETER",
                  "message": "Invalid parameter"
                }
              }
            },
            "INVALID_SIGNATURE": {
              "summary": "Invalid signature",
              "value": {
                "error": {
                  "code": "INVALID_SIGNATURE",
                  "message": "Invalid signature"
                }
              }
            },
            "INVALID_USER": {
              "summary": "Invalid user",
              "value": {
                "error": {
                  "code": "INVALID_USER",
                  "message": "Invalid user"
                }
              }
            }
          }
        }
      }
    }
  },
  "x-tagGroups": [
    {
      "name": "Benutzervalidierung",
      "tags": [
        "user-validation"
      ]
    },
    {
      "name": "Payments",
      "tags": [
        "payments"
      ]
    },
    {
      "name": "Spieldienste",
      "tags": [
        "combined-webhooks",
        "separate-webhooks",
        "personalization"
      ]
    },
    {
      "name": "Anti-fraud",
      "tags": [
        "anti-fraud"
      ]
    },
    {
      "name": "Subscriptions",
      "tags": [
        "subscriptions"
      ]
    }
  ]
}