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>In-Game 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## In-Game 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 zu <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. Standardmäßig wird ein geheimer Schlüssel zum Signieren von Projekt-Webhooks \n   generiert. Wenn Sie einen neuen geheimen Schlüssel generieren möchten, klicken \n   Sie auf das Aktualisieren-Symbol.\n4. Klicken Sie auf <b>Webhooks aktiveren</b>.\n\n![Enable \nwebhooks](https://cdn.xsolla.net/developers/current/images/api_docs/enable.png)\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 zu <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## 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</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=\"/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</tbody>\n</table>\n\n![Erweiterte \nEinstellungen](https://cdn.xsolla.net/developers/current/images/api_docs/advanced-settings-upd.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/testing.png)\n\nDer Testbereich im Kundenportal variiert je nach dem, welche Webhook-\nEmpfangsoption ausgewählt sind.\n\n<b>Beim Empfang kombinierter Webhooks:</b>\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\n<b>Beim Empfang separater Webhooks:</b>\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\n![Testfehler](https://cdn.xsolla.net/developers/current/images/api_docs/test-error.png)\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 im Drop-down-Menü einen Artikeltyp aus. Ist der ausgewählte \n   Artikeltyp im Kundenportal nicht eingerichtet, klicken Sie auf:\n   * <b>Verknüpfen</b>, sofern das entsprechende Modul noch nicht verknüpft ist,\n   * <b>Konfigurieren</b>, sofern das Modul bereits verknüpft, aber die Einrichtung \n     noch nicht abgeschlossen ist. <br/>Durch Klick auf die Schaltfläche werden Sie \n     zum entsprechenden Abschnitt im Kundenportal weitergeleitet. Nachdem Sie den \n     Artikel angelegt haben, sollten Sie zum Webhook-Testbereich zurückkehren und \n     mit dem nächsten Schritt fortfahren.\n3. Füllen Sie die Pflichtfelder aus: <ol type=\"a\"> <li>Wählen Sie die SKU des \n   Artikels aus der der Drop-down-Liste aus, und legen Sie die Menge fest. Sie \n   können mehrere Artikel desselben Typs wählen, indem Sie auf <b>+</b> klicken \n   und einen weiteren Artikel in der neuen Zeile hinzufügen.</li> <li><b>Benutzer-\n   ID</b>\_– Zum Testen können Sie eine beliebige Kombination aus Buchstaben und \n   Ziffern angeben.</li> <li><b>Public-User-ID</b>\_– ID, die dem Nutzer bekannt \n   ist, z.\_B. E-Mail-Adresse oder Nickname. Dieses Feld wird angezeigt, sofern die \n   Public-User-ID in Ihrem Projekt unter <b>Pay Station &gt; Einstellungen</b> \n   aktiviert ist.</li> <li>Geben Sie einen beliebigen Wert in das Feld <b>Xsolla-\n   Bestell-ID</b> ein.</li> <li><b>Xsolla-Rechnungs-ID</b>\_– Transaktions-ID \n   aufseiten von Xsolla. Zum Testen können Sie eine beliebige Ziffernfolge \n   angeben.</li> <li><b>Rechnungs-ID</b>\_– Transaktions-ID aufseiten Ihres Spiels. \n   Zum Testen können Sie eine beliebige Kombination aus Buchstaben und Ziffern \n   angeben. Dieser Parameter ist für eine erfolgreiche Zahlung nicht erforderlich. \n   Allerdings können Sie die Transaktions-ID aufseiten Ihres Spiels mit der \n   Transaktions-ID aufseiten von Xsolla verknüpfen, indem Sie den Parameter \n   übermitteln.</li> <li><b>Betrag</b>\_– Zahlungsbetrag. Zum Testen können Sie \n   eine beliebige Ziffernfolge angeben.</li> <li><b>Währung</b>\_– Wählen Sie eine \n   Währung aus der Drop-down-Liste aus.</li> </ol>\n\n4. Klicken Sie auf <b>Webhooks testen</b>.\n\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 in Ihrem Projekt die Public-User-ID aktiviert ist, werden ebenso die \nErgebnisse einer Benutzerprüfung angezeigt.\n\nFür jeden Webhook müssen Sie die Verarbeitung beider Szenarien, also \nerfolgreich und fehlerbehaftet, konfigurieren.\n\n![Abschnitt zum Testen von \nZahlungen](https://cdn.xsolla.net/developers/current/images/api_docs/payments-tab.png)\n\n## Subscriptions\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>Im Kundenportal können Sie nur die grundlegenden Webhooks vom Typ \"Benutzervalidierung\" und \"Zahlung\" testen. Wie Sie andere Webhook-Typen testen, erfahren Sie unter:</p>\n<p><ul><li><a href=\"/doc/subscriptions/integration-guide/get-subscription-information/#guides_subscriptions_get_subscription_set_up_webhooks_test_payment\">Abonnementabschluss testen</a></li><li><a href=\"/doc/subscriptions/integration-guide/get-subscription-information/#guides_subscriptions_get_subscription_set_up_webhooks_test_renewal\">Abonnementverlängerung testen</a></li><li><a href=\"/doc/subscriptions/integration-guide/get-subscription-information/#guides_subscriptions_get_subscription_set_up_webhooks_test_cancelation\">Abonnementkündigung testen</a></li></ul></p>\n</div>\n\n<p></p>\n\n<div class=\"note\">\n<p><strong>Hinweis</strong></p>\n<p>Damit Sie Webhooks testen können, müssen Sie unter <b>Kundenportal &gt; Subscriptions &gt; Abo-Modelle</b> mindestens eine <a href=\"/doc/subscriptions/integration-guide/set-up-plan/\">Abo-Modell erstellt haben</a>.</p>\n</div>\n\nSo testen Sie die Webhooks: <ol> <li>Wechseln Sie im Testbereich zur \nRegisterkarte <b>Subscriptions</b>.</li> <li>Füllen Sie die Pflichtfelder aus: \n<ol type=\"a\"> <li><b>Benutzer-ID</b>\_– Zum Testen können Sie eine beliebige \nKombination aus Buchstaben und Ziffern angeben.</li> <li><b>Xsolla-Rechnungs-\nID</b>\_– Transaktions-ID aufseiten von Xsolla. Zum Testen können Sie eine \nbeliebige Ziffernfolge angeben.</li> <li><b>Public- User-ID</b>\_– ID, die einem \nNutzer bekannt ist, z.\_B. E-Mail-Adresse oder Nickname. Dieses Feld wird \nangezeigt, sofern die Public-User-ID in Ihrem Projekt unter Pay Station &gt; \nEinstellungen &gt; Sonstige Einstellungen aktiviert ist.</li> \n<li><b>Währung</b>\_– Wählen Sie eine Währung aus der Drop-down-Liste aus.</li> \n<li><b>ID des Abo-Modells</b>\_– Abo-Modell. Wählen Sie ein Abo-Modell aus der \nDrop-down-Liste.</li> <li><b>Abo-Produkt</b>\_– Wählen Sie ein Produkt aus der \nDrop-down-Liste (optional).</li> <li><b>Betrag</b>\_– Zahlungsbetrag. Zum Testen \nkönnen Sie eine beliebige Ziffernfolge angeben.</li> <li><b>Rechnungs-ID</b>\_– \nTransaktions-ID aufseiten Ihres Spiels. Zum Testen können Sie eine beliebige \nKombination aus Buchstaben und Ziffern angeben. Dieser Parameter ist nicht \nerforderlich, um die Zahlung erfolgreich zu verarbeiten. Allerdings können Sie \ndie Transaktions-ID aufseiten Ihres Spiels mit der Transaktions-ID aufseiten \nvon Xsolla verknüpfen, indem Sie den Parameter übermitteln.</li> \n<li><b>Probezeitraum</b>. Wenn Sie den <a href=\"/doc/subscriptions/integration-\nguide/get-subscription-\ninformation/#guides_subscriptions_get_subscription_set_up_webhooks_sandbox\">Absc\nhluss eines Abonnements ohne Probezeitraum</a> oder die <a \nhref=\"/doc/subscriptions/integration-guide/get-subscription-information/#guides_subscriptions_get_subscription_set_up_webhooks_test_renewal\"\n>Verlängerung eines Abonnements</a> testen möchten, geben Sie den Wert \n<code>0</code> an.</li> </ol> </li> <li>Klicken Sie auf <b>Webhooks \ntesten</b>.</li> </ol>\n\nUnter der angegebenen URL erhalten Sie Webhooks mit ausgefüllten Daten. Die \nTestergebnisse jedes Webhooks, sowohl für ein erfolgreiches Szenario als auch \nfür ein Fehlerszenario, werden unter der Schaltfläche <b>Webhooks testen</b> \nangezeigt.\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# 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' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \

            -d '{
                "notification_type":"payment_account_add",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "ip": "127.0.0.1",
                    "email": "email@example.com",
                    "id": "1234567",
                    "name": "John Smith",
                    "country": "US",
                    "zip": "12345"
                },
                "payment_account": {
                    "id": "12345678",
                    "name": "email@example.com",
                    "payment_method": "24",
                    "country": "US",
                    "type": "paypal"
                }
            }'
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host:           your.hostname
            accept:         application/json
            content-length: 255
            content-type:   application/json
            authorization:  Signature d09695066c52c1b8bdae92f2d6eb59f5b5f89843

            {
                "notification_type": "payment_account_add",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "ip": "127.0.0.1",
                    "email": "email@example.com",
                    "id": "1234567",
                    "name": "John Smith",
                    "country": "US",
                    "zip": "12345"
                },
                "payment_account": {
                    "id": "12345678",
                    "name": "email@example.com",
                    "payment_method": "24",
                    "country": "US",
                    "type": "paypal"
                }
            }
  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' \

            -X POST \

            -H 'authorization: Signature
            32c64a80d2527dc08906ae1891bac4489509b9f6' \

            -d '{
              "event": {
                "action": "adding",
                "date_of_last_action": "2020-11-27T10:09:05+03:00",
                "parameter": "email",
                "parameter_value": "email@example.com",
                "reason": "ps_reported_fraud",
                "transaction_id": "111111111",
                "project_id": "123456"
              },
              "notification_type": "afs_black_list"
            }'
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your_uri HTTP/1.1
            host: your.host
            accept: application/json
            content-type: application/json
            content-length: 233
            authorization: Signature 32c64a80d2527dc08906ae1891bac4489509b9f6

            {
              "event": {
                "action": "adding",
                "date_of_last_action": "2020-11-27T10:09:05+03:00",
                "parameter": "email",
                "parameter_value": "email@example.com",
                "reason": "ps_reported_fraud",
                "transaction_id": "111111111",
                "project_id": "123456"
              },
              "notification_type": "afs_black_list"
            }
  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: Initiator der Rückerstattung.
                      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.
                      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' \
            -X POST \
            -d '{
              "notification_type": "afs_reject",
              "settings": {
                "project_id": 18404,
                "merchant_id": 2340
              },
              "user": {
                "ip": "127.0.0.1",
                "phone": "18777976552",
                "email": "email@example.com",
                "id": "1234567",
                "name": "John Smith",
                "country": "US"
              },
              "transaction": {
                "id": 1,
                "external_id": 1,
                "dry_run": 1,
                "agreement": 1
              },
              "refund_details": {
                "code": 4,
                "reason": "Potential fraud"
              }
            }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
              'notification_type' => 'afs_reject',
              'settings' => array(
                'project_id' => 18404,
                'merchant_id' => 2340
              ),
              'user' => array(
                'ip' => '127.0.0.1',
                'phone' => '18777976552',
                'email' => 'email@example.com',
                'id' => '1234567',
                'country' => 'US'
              ),
              'transaction' => array(
                'id' => 87654321,
                'payment_method' => 1380,
                'dry_run' => 1
              ),
              'refund_details' => array(
                'code' => 4,
                'reason' => 'Potential fraud'
              )
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your_uri HTTP/1.1
            host: your.host
            accept: application/json
            content-type: application/json
            content-length: 1220
            authorization: Signature 31bd5924dd6cbc9cbe99d331c4a086a57291f9d7

            {
              "notification_type": "afs_reject",
              "settings": {
                "project_id": 18404,
                "merchant_id": 2340
              },
              "user": {
                "ip": "127.0.0.1",
                "phone": "18777976552",
                "email": "email@example.com",
                "id": "1234567",
                "name": "John Smith",
                "country": "US"
              },
              "transaction": {
                "id": 1,
                "external_id": 1,
                "dry_run": 1,
                "agreement": 1
              },
              "refund_details": {
                "code": 4,
                "reason": "Potential fraud"
              }
            }
  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' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            13342703ccaca5064ad33ba451d800c5e823db8f' \

            -d '{
                    "notification_type": "cancel_subscription",
                    "settings": {
                      "project_id": 18404,
                      "merchant_id": 2340
                    },
                    "user": {
                        "id": "1234567",
                        "name": "John Smith"
                    },
                    "subscription": {
                        "plan_id": "b5dac9c8",
                        "subscription_id": "10",
                        "product_id": "Demo Product",
                        "date_create": "2014-09-22T19:25:25+04:00",
                        "date_end": "2015-01-22T19:25:25+04:00"
                    }
                }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
                'notification_type' => 'cancel_subscription',
                'settings' => array(
                  'project_id' => 18404,
                  'merchant_id' => 2340
                ),
                'user' => array(
                    'id' => '1234567',
                    'name' => 'John Smith'
                ),
                'subscription' => array(
                    'plan_id' => 'b5dac9c8',
                    'subscription_id' => '10',
                    'product_id' => 'Demo Product',
                    'date_create' => '2014-09-22T19:25:25+04:00',
                    'date_end' => '2015-01-22T19:25:25+04:00',
                )
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host: your.hostname
            accept: application/json
            content-type: application/json
            content-length: 240
            authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f

            {
                "notification_type": "cancel_subscription",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user":{
                    "id": "1234567",
                    "name": "John Smith"
                },
                "subscription": {
                    "plan_id": "b5dac9c8",
                    "subscription_id": "10",
                    "product_id": "Demo Product",
                    "date_create": "2014-09-22T19:25:25+04:00",
                    "date_end": "2015-01-22T19:25:25+04:00"
                }
            }
  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' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            13342703ccaca5064ad33ba451d800c5e823db8f' \

            -d '{
                    "notification_type": "create_subscription",
                    "settings": {
                      "project_id": 18404,
                      "merchant_id": 2340
                    },
                    "user": {
                        "id": "1234567",
                        "name": "John Smith"
                    },
                    "subscription": {
                        "plan_id": "b5dac9c8",
                        "subscription_id": "10",
                        "product_id": "Demo Product",
                        "date_create": "2014-09-22T19:25:25+04:00",
                        "date_next_charge": "2015-01-22T19:25:25+04:00",
                        "trial": {
                                "value": 90,
                                "type": "day"
                            },
                        "is_gift": true
                    }
                }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
                'notification_type' => 'create_subscription',
                'settings' => array(
                  'project_id' => 18404,
                  'merchant_id' => 2340
                ),
                'user' => array(
                    'id' => '1234567',
                    'name' => 'John Smith'
                ),
                'subscription' => array(
                    'plan_id' => 'b5dac9c8',
                    'subscription_id' => '10',
                    'product_id' => 'Demo Product',
                    'date_create' => '2014-09-22T19:25:25+04:00',
                    'date_next_charge' => '2015-01-22T19:25:25+04:00',
                    'trial' =>  array(
                            'value' =>  90,
                            'type' =>  'day'
                        ),
                    'is_gift' => true,
                )
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            Host: your.hostname
            accept: application/json
            content-type: application/json
            content-length: 240
            authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f

            {
                "notification_type": "create_subscription",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "id": "1234567",
                    "name": "John Smith"
                },
                "subscription": {
                    "plan_id": "b5dac9c8",
                    "subscription_id": "10",
                    "product_id": "Demo Product",
                    "date_create": "2014-09-22T19:25:25+04:00",
                    "date_next_charge": "2015-01-22T19:25:25+04:00",
                    "trial": {
                            "value": 90,
                            "type": "day"
                        },
                    "is_gift": true
                }
            }
  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' \

            -X POST \

            -H 'authorization: Signature
            32c64a80d2527dc08906ae1891bac4489509b9f6' \

            -d '{
              "notification_type": "dispute",
              "action": "adding",
              "transaction": {
                "id": 123456789,
                "date_create": "2023-08-24T10:21:00+04:00",
                "total": {
                  "amount": 1,
                  "currency": "EUR"
                },
                "payment_method": "credit_debit_card"
              },
              "settings": {
                "project_id": 18404,
                "merchant_id": 2340
              },
              "user": {
                "id": "1234567",
                "email": "email@example.com",
                "country_code": "US"
              },
              "dispute": {
                "incoming_date": "2024-01-25T01:02:03+04:00",
                "reason": "not_as_described",
                "type": "retrieval",
                "status": "new"
              }
            }'
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your_uri HTTP/1.1
            host: your.host
            accept: application/json
            content-Type: application/json
            content-Length: 578
            authorization: Signature 31bd5924dd6cbc9cbe99d331c4a086a57291f9d7

            {
              "notification_type": "dispute",
              "action": "adding",
              "transaction": {
                "id": 123456789,
                "date_create": "2023-08-24T10:21:00+04:00",
                "total": {
                  "amount": 1,
                  "currency": "EUR"
                },
                "payment_method": "credit_debit_card"
              },
              "settings": {
                "project_id": 18404,
                "merchant_id": 2340
              },
              "user": {
                "id": "1234567",
                "email": "email@example.com",
                "country_code": "US"
              },
              "dispute": {
                "incoming_date": "2024-01-25T01:02:03+04:00",
                "reason": "not_as_described",
                "type": "retrieval",
                "status": "new"
              }
            }
  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' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            13342703ccaca5064ad33ba451d800c5e823db8f' \

            -d '{
                    "notification_type": "non_renewal_subscription",
                    "settings": {
                      "project_id": 12345,
                      "merchant_id": 1234
                    },
                    "user": {
                        "id": "1234567",
                        "email": "email@example.com"
                    },
                    "subscription": {
                        "plan_id": "a1bcd2e3",
                        "subscription_id": "10",
                        "date_create": "2014-12-22T15:25:25+04:00",
                        "date_next_charge": "2015-01-22T19:25:25+04:00",
                        "currency": "USD",
                        "amount": 0.03
                    }
                }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
                'notification_type' => 'non_renewal_subscription',
                'settings' => array(
                  'project_id' => 12345,
                  'merchant_id' => 1234
                ),
                'user' => array(
                    'id' => '1234567',
                    'email' => 'email@example.com'
                ),
                'subscription' => array(
                    'plan_id' => 'a1bcd2e3',
                    'subscription_id' => '10',
                    'date_create' => '2014-12-22T15:25:25+04:00',
                    'date_next_charge' => '2015-01-22T19:25:25+04:00',
                    'currency' => 'USD',
                    'amount' => 0.03
                )
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host: your.hostname
            accept: application/json
            content-type: application/json
            content-length: 240
            authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f

            {
                "notification_type": "non_renewal_subscription",
                "settings": {
                  "project_id": 12345,
                  "merchant_id": 1234
                },
                "user": {
                    "id": "1234567",
                    "email": "email@example.com"
                },
                "subscription": {
                    "plan_id": "a1bcd2e3",
                    "subscription_id": "10",
                    "date_create": "2014-12-22T15:25:25+04:00",
                    "date_next_charge": "2015-01-22T19:25:25+04:00",
                    "currency": "USD",
                    "amount": 0.03
                }
            }
  order-cancellation:
    post:
      description: >
        Xsolla sendet den Webhook <code>order_canceled</code> an die angegebene
        URL, 

        wenn die Zahlung vom Nutzer, Partner oder automatisch storniert wurde.
        Der 

        Webhook enthält Informationen über zurückgesandte Artikel, Zahlungsdaten
        und 

        Details zur stornierten Bestellung.


        Der Webhook wird nicht gesendet, wenn die Zahlung nicht erfolgreich war,
        zum 

        Beispiel:

        * das Zahlungsportal geöffnet wurde, aber der Nutzer die Bestellung
        nicht bezahlt 
          hat
        * das Zahlungsportal geöffnet wurde, aber während der Zahlung Fehler
        auftraten


        Die empfohlene Verarbeitungszeit für Webhooks beträgt maximal drei
        Sekunden.
      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:
                          description: >-
                            Quellensteuer, die in bestimmten Ländern aufgrund
                            grenzüberschreitender Transaktionen anfällt
                            (Objekt).
                          properties:
                            amount:
                              description: Betrag.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                            percent:
                              description: Quellensteuersatz des Landes (in %).
                              format: float
                              type: number
                          type: object
                        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:


                            <table>
                                <thead>
                                <tr>
                                    <th>Erstattungsinitiator</th>
                                    <th>Feldwert</th>
                                </tr>
                                </thead>
                                <tbody>
                                <tr>
                                    <td>Spiel (über API).</td>
                                    <td>API</td>
                                </tr>
                                <tr>
                                    <td>Kundenportal-Nutzer (automatische Erstattung).</td>
                                    <td>E-Mail-Adresse des Nutzers</td>
                                </tr>
                                <tr>
                                    <td>Kundenportal-Nutzer (mit Unterstützung des Xsolla-Kundensupports).</td>
                                    <td>support@xsolla.com</td>
                                </tr>
                                <tr>
                                    <td>Xsolla (mit Unterstützung des Xsolla-Kundensupports).</td>
                                    <td>support@xsolla.com</td>
                                </tr>
                                </tbody>
                            </table>
                          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.
                          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' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \

            -d '{
                "notification_type": "order_canceled",
                "items": [
                  {
                    "sku": "com.xsolla.v.item_1",
                    "type": "virtual_good",
                    "is_pre_order": false,
                    "quantity": 3,
                    "amount": "1000",
                    "promotions": [
                      {
                        "amount_without_discount": "6000",
                        "amount_with_discount": "5000",
                        "sequence": 1
                      },
                      {
                        "amount_without_discount": "5000",
                        "amount_with_discount": "4000",
                        "sequence": 2
                      }
                    ],
                    "custom_attributes": {
                        "purchased": 0,
                        "attr": "value"
                      }
                  },
                  {
                    "sku": "com.xsolla.v.item_new_1",
                    "type": "bundle",
                    "is_pre_order": false,
                    "quantity": 1,
                    "amount": "1000",
                    "promotions": []
                  },
                  {
                    "sku": "com.xsolla.gold_1",
                    "type": "virtual_currency",
                    "is_pre_order": false,
                    "quantity": 1500,
                    "amount": null,
                    "promotions": []
                  }
                ],
                "order": {
                  "id": 1,
                  "mode": "default",
                  "currency_type": "virtual",
                  "currency": "sku_currency",
                  "amount": "2000",
                  "status": "paid",
                  "platform": "xsolla",
                  "comment": null,
                  "invoice_id": "1",
                  "promotions": [
                    {
                      "amount_without_discount": "4000",
                      "amount_with_discount": "2000",
                      "sequence": 1
                    }
                  ],
                  "promocodes": [
                    {
                      "code": "promocode_some_code",
                      "external_id": "promocode_sku"
                    }
                  ],
                  "coupons": [
                    {
                      "code": "WINTER2021",
                      "external_id": "coupon_sku"
                    }
                  ]
                },
                "user": {
                  "external_id": "id_xsolla_login_1",
                  "email": "email@example.com",
                  "country": "US"
                },
                "billing": {
                  "notification_type": "refund",
                  "settings": {
                    "project_id": 18404,
                    "merchant_id": 2340
                  },
                  "purchase": {
                          "subscription": {
                              "plan_id": "b5dac9c8",
                              "subscription_id": "10",
                              "date_create": "2014-09-22T19:25:25+04:00",
                              "currency": "USD",
                              "amount": 9.99
                          },
                          "total":{
                              "currency": "USD",
                              "amount": 200
                          }
                      },
                  "transaction": {
                          "id": 1,
                          "external_id": 1,
                          "dry_run": 1,
                          "agreement": 1
                      },
                  "refund_details": {
                          "code": 4,
                          "reason": "Potential fraud"
                      },
                  "payment_details": {
                          "sales_tax": {
                              "currency": "USD",
                              "amount": 0
                          },
                          "direct_wht": {
                              "currency": "USD",
                              "amount": 0.70
                          },
                          "xsolla_fee": {
                              "currency": "USD",
                              "amount": "10"
                          },
                          "payout": {
                              "currency": "USD",
                              "amount": "200"
                          },
                          "payment_method_fee": {
                              "currency": "USD",
                              "amount": "20"
                          },
                          "payment": {
                              "currency": "USD",
                              "amount": "230"
                          },
                          "repatriation_commission": {
                              "currency": "USD",
                              "amount": 10
                          }
                      }
                }
            }
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host:           your.hostname
            accept:         application/json
            content-length: 258
            content-type:   application/json
            authorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523


            {
                "notification_type": "order_canceled",
                "items": [
                  {
                    "sku": "com.xsolla.v.item_1",
                    "type": "virtual_good",
                    "is_pre_order": false,
                    "quantity": 3,
                    "amount": "1000",
                    "promotions": [
                      {
                        "amount_without_discount": "6000",
                        "amount_with_discount": "5000",
                        "sequence": 1
                      },
                      {
                        "amount_without_discount": "5000",
                        "amount_with_discount": "4000",
                        "sequence": 2
                      }
                    ],
                    "custom_attributes": {
                        "purchased": 0,
                        "attr": "value"
                      }
                  },
                  {
                    "sku": "com.xsolla.v.item_new_1",
                    "type": "bundle",
                    "is_pre_order": false,
                    "quantity": 1,
                    "amount": "1000",
                    "promotions": []
                  },
                  {
                    "sku": "com.xsolla.gold_1",
                    "type": "virtual_currency",
                    "is_pre_order": false,
                    "quantity": 1500,
                    "amount": null,
                    "promotions": []
                  }
                ],
                "order": {
                  "id": 1,
                  "mode": "default",
                  "currency_type": "virtual",
                  "currency": "sku_currency",
                  "amount": "2000",
                  "status": "paid",
                  "platform": "xsolla",
                  "comment": null,
                  "invoice_id": "1",
                  "promotions": [
                    {
                      "amount_without_discount": "4000",
                      "amount_with_discount": "2000",
                      "sequence": 1
                    }
                  ],
                  "promocodes": [
                    {
                      "code": "promocode_some_code",
                      "external_id": "promocode_sku"
                    }
                  ],
                  "coupons": [
                    {
                      "code": "WINTER2021",
                      "external_id": "coupon_sku"
                    }
                  ]
                },
                "user": {
                  "external_id": "id_xsolla_login_1",
                  "email": "email@example.com",
                  "country": "US"
                },
                "billing": {
                  "notification_type": "refund",
                  "settings": {
                    "project_id": 18404,
                    "merchant_id": 2340
                  },
                  "purchase": {
                      "subscription": {
                          "plan_id": "b5dac9c8",
                          "subscription_id": "10",
                          "date_create": "2014-09-22T19:25:25+04:00",
                          "currency": "USD",
                          "amount": 9.99
                      },
                      "total": {
                          "currency": "USD",
                          "amount": 200
                      }
                  },
                  "transaction": {
                      "id": 1,
                      "external_id": 1,
                      "dry_run": 1,
                      "agreement": 1
                  },
                  "refund_details": {
                      "code": 4,
                      "reason": "Potential fraud"
                  },
                  "payment_details": {
                      "sales_tax": {
                          "currency": "USD",
                          "amount": 0
                      },
                      "direct_wht": {
                          "currency": "USD",
                          "amount": 0.70
                      },
                      "xsolla_fee": {
                          "currency": "USD",
                          "amount": "10"
                      },
                      "payout": {
                          "currency": "USD",
                          "amount": "200"
                      },
                      "payment_method_fee": {
                          "currency": "USD",
                          "amount": "20"
                      },
                      "payment": {
                          "currency": "USD",
                          "amount": "230"
                      },
                      "repatriation_commission": {
                          "currency": "USD",
                          "amount": 10
                      }
                    }
                  }
                }
  order-cancellation-separate:
    post:
      description: >
        Xsolla sendet den Webhook <code>order_canceled</code> an die angegebene
        URL, 

        wenn die Zahlung vom Nutzer, Partner oder automatisch storniert wurde.
        Der 

        Webhook enthält Informationen über zurückgesandte Artikel und Details
        zur 

        stornierten Bestellung.


        Der Webhook wird nicht gesendet, wenn die Zahlung nicht erfolgreich war,
        zum 

        Beispiel:

        * das Zahlungsportal geöffnet wurde, aber der Nutzer die Bestellung
        nicht bezahlt 
          hat
        * das Zahlungsportal geöffnet wurde, aber während der Zahlung Fehler
        auftraten


        Die empfohlene Verarbeitungszeit für Webhooks beträgt maximal drei
        Sekunden.
      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' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \

            -d '{
                "notification_type": "order_canceled",
                "items": [
                  {
                    "sku": "com.xsolla.v.item_1",
                    "type": "virtual_good",
                    "is_pre_order": false,
                    "quantity": 3,
                    "amount": "1000",
                    "promotions": [
                      {
                        "amount_without_discount": "6000",
                        "amount_with_discount": "5000",
                        "sequence": 1
                      },
                      {
                        "amount_without_discount": "5000",
                        "amount_with_discount": "4000",
                        "sequence": 2
                      }
                    ],
                    "custom_attributes": {
                        "purchased": 0,
                        "attr": "value"
                      }
                  },
                  {
                    "sku": "com.xsolla.v.item_new_1",
                    "type": "bundle",
                    "is_pre_order": false,
                    "quantity": 1,
                    "amount": "1000",
                    "promotions": []
                  },
                  {
                    "sku": "com.xsolla.gold_1",
                    "type": "virtual_currency",
                    "is_pre_order": false,
                    "quantity": 1500,
                    "amount": "[null]",
                    "promotions": []
                  }
                ],
                "order": {
                  "id": 1,
                  "mode": "default",
                  "currency_type": "virtual",
                  "currency": "sku_currency",
                  "amount": "2000",
                  "status": "paid",
                  "platform": "xsolla",
                  "comment": null,
                  "invoice_id": "1",
                  "promotions": [
                    {
                      "amount_without_discount": "4000",
                      "amount_with_discount": "2000",
                      "sequence": 1
                    }
                  ],
                  "promocodes": [
                    {
                      "code": "promocode_some_code",
                      "external_id": "promocode_sku"
                    }
                  ],
                  "coupons": [
                    {
                      "code": "WINTER2021",
                      "external_id": "coupon_sku"
                    }
                  ]
                },
                "user": {
                  "external_id": "id_xsolla_login_1",
                  "email": "email@example.com",
                  "country": "US"
                }

            }'
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host:           your.hostname
            accept:         application/json
            content-length: 258
            content-type:   application/json
            authorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523


            {
                "notification_type": "order_canceled",
                "items": [
                  {
                    "sku": "com.xsolla.v.item_1",
                    "type": "virtual_good",
                    "is_pre_order": false,
                    "quantity": 3,
                    "amount": "1000",
                    "promotions": [
                      {
                        "amount_without_discount": "6000",
                        "amount_with_discount": "5000",
                        "sequence": 1
                      },
                      {
                        "amount_without_discount": "5000",
                        "amount_with_discount": "4000",
                        "sequence": 2
                      }
                    ],
                    "custom_attributes": {
                        "purchased": 0,
                        "attr": "value"
                      }
                  },
                  {
                    "sku": "com.xsolla.v.item_new_1",
                    "type": "bundle",
                    "is_pre_order": false,
                    "quantity": 1,
                    "amount": "1000",
                    "promotions": []
                  },
                  {
                    "sku": "com.xsolla.gold_1",
                    "type": "virtual_currency",
                    "is_pre_order": false,
                    "quantity": 1500,
                    "amount": "[null]",
                    "promotions": []
                  }
                ],
                "order": {
                  "id": 1,
                  "mode": "default",
                  "currency_type": "virtual",
                  "currency": "sku_currency",
                  "amount": "2000",
                  "status": "paid",
                  "platform": "xsolla",
                  "comment": null,
                  "invoice_id": "1",
                  "promotions": [
                    {
                      "amount_without_discount": "4000",
                      "amount_with_discount": "2000",
                      "sequence": 1
                    }
                  ],
                  "promocodes": [
                    {
                      "code": "promocode_some_code",
                      "external_id": "promocode_sku"
                    }
                  ],
                  "coupons": [
                    {
                      "code": "WINTER2021",
                      "external_id": "coupon_sku"
                    }
                  ]
                },
                "user": {
                  "external_id": "id_xsolla_login_1",
                  "email": "email@example.com",
                  "country": "US"
                }
            }
  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:


                        <table>
                            <thead>
                            <tr>
                                <th>Erstattungsinitiator</th>
                                <th>Feldwert</th>
                            </tr>
                            </thead>
                            <tbody>
                            <tr>
                                <td>Spiel (über API).</td>
                                <td>API</td>
                            </tr>
                            <tr>
                                <td>Kundenportal-Nutzer (automatische Erstattung).</td>
                                <td>E-Mail-Adresse des Nutzers</td>
                            </tr>
                            <tr>
                                <td>Kundenportal-Nutzer (mit Unterstützung des Xsolla-Kundensupports).</td>
                                <td>support@xsolla.com</td>
                            </tr>
                            <tr>
                                <td>Xsolla (mit Unterstützung des Xsolla-Kundensupports).</td>
                                <td>support@xsolla.com</td>
                            </tr>
                            </tbody>
                        </table>
                      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.
                      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' \
            -X POST \
            -d '{
                    "notification_type": "partial_refund",
                    "settings": {
                      "project_id": 18404,
                      "merchant_id": 2340
                    },
                    "purchase": {
                        "checkout": {
                            "currency": "USD",
                            "amount": 50
                        },
                        "total":{
                            "currency": "USD",
                            "amount": 200
                        }
                    },
                    "user": {
                        "ip": "127.0.0.1",
                        "phone": "18777976552",
                        "email": "email@example.com",
                        "id": "1234567",
                        "name": "John Smith",
                        "country": "US"
                    },
                    "transaction": {
                        "id": 1,
                        "external_id": 1,
                        "dry_run": 1,
                        "agreement": 1,
                        "date": "2022-03-01 10:53:15"
                    },
                    "refund_details": {
                        "author": "email@example.com",
                        "date": "2022-03-01 10:56:48"
                    },
                    "payment_details": {
                        "sales_tax": {
                            "currency": "USD",
                            "amount": 0
                        },
                        "direct_wht": {
                            "currency": "USD",
                            "amount": 0.70
                        },
                        "xsolla_fee": {
                            "currency": "USD",
                            "amount": "10"
                        },
                        "payout": {
                            "currency": "USD",
                            "amount": "200"
                        },
                        "payment_method_fee": {
                            "currency": "USD",
                            "amount": "20"
                        },
                        "payment": {
                            "currency": "USD",
                            "amount": "230"
                        },
                        "repatriation_commission": {
                            "currency": "USD",
                            "amount": 10
                        }
                    }
                }
            }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
                'notification_type' => 'partial_refund',
                'settings' => array(
                  'project_id' => 18404,
                  'merchant_id' => 2340
                ),
                'purchase' => array(
                    'total' => array(
                        'currency' => 'USD',
                        'amount' => 9.99
                    )
                ),
                'user' => array(
                    'ip' => '127.0.0.1',
                    'phone' => '18777976552',
                    'email' => 'email@example.com',
                    'id' => '1234567',
                    'country' => 'US'
                ),
                'transaction' => array(
                    'id' => 87654321,
                    'payment_date' => '2014-09-23T19:25:25+04:00',
                    'payment_method' => 1380,
                    'dry_run' => 1,
                    'date' => '2022-03-31 10:53:15'
                ),
                'refund_details' => array(
                        'author' => 'email@example.com',
                        'date' => '2022-03-01 10:56:48'
                ),
                'payment_details' => array(
                    'payment' => array(
                        'currency' => 'USD',
                        'amount' => 9.99
                    ),
                    'vat' => array(
                        'currency' => 'USD',
                        'amount' => 0
                    ),
                    'sales_tax' => array(
                        'currency' => 'USD',
                        'amount' => 0
                    ),
                    'direct_wht' => array(
                        'currency' => 'USD',
                        'amount' => 70
                    ),
                    'payout_currency_rate' => 1,
                    'payout' => array(
                        'currency' => 'USD',
                        'amount' => 9.49
                    ),
                    'xsolla_fee' => array(
                        'currency' => 'USD',
                        'amount' => 0.19
                    ),
                    'payment_method_fee' => array(
                        'currency' => 'USD',
                        'amount' => 0.31
                    ),
                    'repatriation_commission' => array(
                        'currency' => 'USD',
                        'amount' => 0.2
                    )
                )
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your_uri HTTP/1.1
            host: your.host
            accept: application/json
            content-type: application/json
            content-length: 1220
            authorization: Signature 31bd5924dd6cbc9cbe99d331c4a086a57291f9d7

            {
                "notification_type": "partial_refund",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "purchase": {
                    "checkout": {
                        "currency": "USD",
                        "amount": 50
                    },
                    "total": {
                        "currency": "USD",
                        "amount": 200
                    }
                },
                "user": {
                    "ip": "127.0.0.1",
                    "phone": "18777976552",
                    "email": "email@example.com",
                    "id": "1234567",
                    "name": "John Smith",
                    "country": "US"
                },
                "transaction": {
                    "id": 1,
                    "external_id": 1,
                    "dry_run": 1,
                    "agreement": 1,
                    "date": "2022-03-31 10:53:15"
                },
                "refund_details": {
                    "author": "email@example.com",
                    "date": "2022-03-31 10:56:48"
                },
                "payment_details": {
                    "sales_tax": {
                        "currency": "USD",
                        "amount": 0
                    },
                    "direct_wht": {
                        "currency": "USD",
                        "amount": 0.70
                    },
                    "xsolla_fee": {
                        "currency": "USD",
                        "amount": "10"
                    },
                    "payout": {
                        "currency": "USD",
                        "amount": "200"
                    },
                    "payment_method_fee": {
                        "currency": "USD",
                        "amount": "20"
                    },
                    "payment": {
                        "currency": "USD",
                        "amount": "230"
                    },
                    "repatriation_commission": {
                        "currency": "USD",
                        "amount": 10
                    }
                }
            }
  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</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:
                      description: >-
                        Quellensteuer, die in bestimmten Ländern aufgrund
                        grenzüberschreitender Transaktionen anfällt (Objekt).
                      properties:
                        amount:
                          description: Betrag.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                        percent:
                          description: Quellensteuersatz des Landes (in %).
                          format: float
                          type: number
                      type: object
                    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.
                      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' \
            -X POST \
            -d '{
                "notification_type": "payment",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "purchase": {
                    "subscription": {
                        "plan_id": "b5dac9c8",
                        "subscription_id": "10",
                        "product_id": "Demo Product",
                        "date_create": "2014-09-22T19:25:25+04:00",
                        "date_next_charge": "2014-10-22T19:25:25+04:00",
                        "currency": "USD",
                        "amount": 9.99
                    },
                    "checkout": {
                        "currency": "USD",
                        "amount": 50
                    },
                    "total": {
                        "currency": "USD",
                        "amount": 200
                    },
                    "promotions": [{
                        "technical_name": "Demo Promotion",
                        "id": 853
                    }],
                    "coupon": {
                        "coupon_code": "ICvj45S4FUOyy",
                        "campaign_code": "1507"
                    },
                    "order": {
                      "id": 1234
                      "lineitems": [
                      {
                        "sku": "com.xsolla.item_1",
                        "quantity": 1,
                        "price": {
                          "currency": "EUR",
                          "amount": 6.5
                          }
                      }
                      ]
                      }
                },
                "user": {
                    "ip": "127.0.0.1",
                    "phone": "18777976552",
                    "email": "email@example.com",
                    "id": "1234567",
                    "name": "John Smith",
                    "country": "US"
                },
                "transaction": {
                    "id": 1,
                    "external_id": 1,
                    "payment_date": "2014-09-24T20:38:16+04:00",
                    "payment_method": 1,
                    "payment_method_name": "PayPal",
                    "payment_method_order_id": 1234567890123456789,
                    "dry_run": 1,
                    "agreement": 1
                },
                "payment_details": {
                    "payment": {
                        "currency": "USD",
                        "amount": 230
                    },
                    "vat": {
                        "currency": "USD",
                        "amount": 0,
                        "percent": 20
                    },
                    "sales_tax": {
                        "currency": "USD",
                        "amount": 0,
                        "percent": 0
                    },
                    "direct_wht": {
                        "currency": "USD",
                        "amount": 0,
                        "percent": 0
                    },
                    "payout_currency_rate": "1",
                    "payout": {
                        "currency": "USD",
                        "amount": 200
                    },
                    "country_wht": {
                        "currency": "USD",
                        "amount": 2,
                        "percent": 10
                    },
                    "user_acquisition_fee": {
                        "currency": "USD",
                        "amount": 2,
                        "percent": 1
                    },
                    "xsolla_fee": {
                        "currency": "USD",
                        "amount": 10
                    },
                    "payment_method_fee": {
                        "currency": "USD",
                        "amount": 20
                    },
                    "repatriation_commission": {
                        "currency": "USD",
                        "amount": 10
                    }
                },
                "custom_parameters": {
                    "parameter1": "value1",
                    "parameter2": "value2"
                }
            }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
                'notification_type' => 'payment',
                'settings' => array(
                  'project_id' => 18404,
                  'merchant_id' => 2340
                ),
                'purchase' => array(
                    'total' => array(
                        'currency' => 'USD',
                        'amount' => 9.99
                    )
                ),
                'user' => array(
                    'ip' => '127.0.0.1',
                    'phone' => '18777976552',
                    'email' => 'email@example.com',
                    'id' => '1234567',
                    'country' => 'US'
                ),
                'transaction' => array(
                    'id' => 87654321,
                    'payment_date' => '2014-09-23T19:25:25+04:00',
                    'payment_method' => 1380,
                    'payment_method_name' => 'PayPal'
                    'payment_method_order_id' => 1234567890123456789,
                    'dry_run' => 1
                ),
                'payment_details' => array(
                    'payment' => array(
                        'currency' => 'USD',
                        'amount' => 9.99
                    ),
                    'vat' => array(
                        'currency' => 'USD',
                        'amount' => 0
                    ),
                    'sales_tax' => array(
                        'currency' => 'USD',
                        'amount' => 0
                    ),
                    'direct_wht' => array(
                        'currency' => 'USD',
                        'amount' => 70
                    ),
                    'payout_currency_rate' => '1',
                    'country_wht ' => array(
                        'currency' => 'USD',
                        'amount' => 2,
                        'percent' => 10
                    ),
                    'user_acquisition_fee' => array(
                        'currency' => 'USD',
                        'amount' => 2,
                        'percent' => 1
                    ),
                    'payout' => array(
                        'currency' => 'USD',
                        'amount' => 9.49
                    ),
                    'xsolla_fee' => array(
                        'currency' => 'USD',
                        'amount' => 0.19
                    ),
                    'payment_method_fee' => array(
                        'currency' => 'USD',
                        'amount' => 0.31
                    ),
                    'repatriation_commission' => array(
                        'currency' => 'USD',
                        'amount' => 0.2
                    )
                )
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your_uri HTTP/1.1
            host: your.host
            accept: application/json
            content-type: application/json
            content-length: 1721
            authorization: Signature 34553d151e656110c656696c919f9a10e05de542

            {
                "notification_type": "payment",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "purchase":{
                    "subscription": {
                        "plan_id": "b5dac9c8",
                        "subscription_id": "10",
                        "product_id": "Demo Product",
                        "date_create": "2014-09-22T19:25:25+04:00",
                        "date_next_charge": "2014-10-22T19:25:25+04:00",
                        "currency": "USD",
                        "amount": 9.99
                    },
                    "checkout": {
                        "currency": "USD",
                        "amount": 50
                    },
                    "total": {
                        "currency": "USD",
                        "amount": 200
                    },
                    "promotions": [{
                        "technical_name": "Demo Promotion",
                        "id": 853
                    }],
                    "coupon": {
                        "coupon_code": "ICvj45S4FUOyy",
                        "campaign_code": "1507"
                    },
                    "order": {
                      "id": 1234
                      "lineitems": [
                      {
                        "sku": "com.xsolla.item_1",
                        "quantity": 1,
                        "price": {
                          "currency": "EUR",
                          "amount": 6.5
                          }
                      }
                      ]
                      }
                },
                "user": {
                    "ip": "127.0.0.1",
                    "phone": "18777976552",
                    "email": "email@example.com",
                    "id": "1234567",
                    "name": "John Smith",
                    "country": "US"
                },
                "transaction": {
                    "id": 1,
                    "external_id": 1,
                    "payment_date": "2014-09-24T20:38:16+04:00",
                    "payment_method": 1,
                    "payment_method_name": "PayPal"
                    "payment_method_order_id": 1234567890123456789,
                    "dry_run": 1,
                    "agreement": 1
                },
                "payment_details": {
                    "payment": {
                        "currency": "USD",
                        "amount": 230
                    },
                    "vat": {
                        "currency": "USD",
                        "amount": 0,
                        "percent": 20
                    },
                    "sales_tax": {
                        "currency": "USD",
                        "amount": 0,
                        "percent": 0
                    },
                    "direct_wht": {
                        "currency": "USD",
                        "amount": 0,
                        "percent": 0
                    },
                    "payout_currency_rate": "1",
                    "country_wht": {
                        "currency": "USD",
                        "amount": 2,
                        "percent": 10
                    },
                    "user_acquisition_fee": {
                        "currency": "USD",
                        "amount": 2,
                        "percent": 1
                    },
                    "payout": {
                        "currency": "USD",
                        "amount": 200
                    },
                    "xsolla_fee": {
                        "currency": "USD",
                        "amount": 10
                    },
                    "payment_method_fee": {
                        "currency": "USD",
                        "amount": 20
                    },
                    "repatriation_commission": {
                        "currency": "USD",
                        "amount": 10
                    }
                },
                "custom_parameters": {
                    "parameter1": "value1",
                    "parameter2": "value2"
                }
            }
  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:


                        <table>
                            <thead>
                            <tr>
                                <th>Erstattungsinitiator</th>
                                <th>Feldwert</th>
                            </tr>
                            </thead>
                            <tbody>
                            <tr>
                                <td>Spiel (über API).</td>
                                <td>API</td>
                            </tr>
                            <tr>
                                <td>Kundenportal-Nutzer (automatische Erstattung).</td>
                                <td>E-Mail-Adresse des Nutzers</td>
                            </tr>
                            <tr>
                                <td>Kundenportal-Nutzer (mit Unterstützung des Xsolla-Kundensupports).</td>
                                <td>support@xsolla.com</td>
                            </tr>
                            <tr>
                                <td>Xsolla (mit Unterstützung des Xsolla-Kundensupports).</td>
                                <td>support@xsolla.com</td>
                            </tr>
                            </tbody>
                        </table>
                      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:
                    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.
                      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' \

            -X POST \

            -H 'Accept: application/json' \

            -H 'Content-Type: application/json' \

            -H 'Authorization: Signature
            80543ba63e1e50cf05f15150fe75e7245da9a898' \

            -d '{
              "notification_type": "ps_declined",
              "settings": {
                "project_id": "18404",
                "merchant_id": "2340"
              },
              "user": {
                "ip": "127.0.0.1",
                "email": "email@example.com",
                "id": "1234567",
                "country": "US"
              },
              "transaction": {
                "id": "1",
                "dry_run": "1",
                "payment_method": "1"
              },
              "refund_details": {
                "author": "support@xsolla.com",
                "code": "8",
                "reason": "Cancellation by the PS request",
                "reason_detail": "Insufficient funds"
              }
            }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
              'notification_type' => 'ps_declined',
              'settings' => array(
                'project_id' => '18404',
                'merchant_id' => '2340',
              ),
              'user' => array(
                'ip' => '127.0.0.1',
                'email' => 'email@example.com',
                'id' => '1234567',
                'country' => 'US',
              ),
              'transaction' => array(
                'id' => '1',
                'dry_run' => '1',
                'payment_method' => '1',
              ),
              'refund_details' => array(
                'author' => 'support@xsolla.com',
                'code' => '8',
                'reason' => 'Cancellation by the PS request',
                'reason_detail' => 'Insufficient funds',
              ),
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your_uri HTTP/1.1
            host: your.host
            accept: application/json
            content-type: application/json
            content-length: 338
            authorization: Signature 80543ba63e1e50cf05f15150fe75e7245da9a898

            {
              "notification_type": "ps_declined",
              "settings": {
                "project_id": "18404",
                "merchant_id": "2340"
              },
              "user": {
                "ip": "127.0.0.1",
                "email": "email@example.com",
                "id": "1234567",
                "country": "US"
              },
              "transaction": {
                "id": "1",
                "dry_run": "1",
                "payment_method": "1"
              },
              "refund_details": {
                "author": "support@xsolla.com",
                "code": "8",
                "reason": "Cancellation by the PS request",
                "reason_detail": "Insufficient funds"
              }
            }
  personalized-partner-catalog:
    post:
      description: >
        Xsolla sendet den Webhook <code>partner_side_catalog</code> mitsamt der 

        Benutzer- und Projektparameter an die Webhook-URL, wenn ein Benutzer mit
        dem 

        Shop interagiert.


        Geben Sie eine Liste der <code>item_id</code> oder der SKUs der für den 

        Benutzer erhältlichen Artikel zurück. In diesem Fall können Sie auch
        die 

        Information einfügen, dass ein bestimmter Benutzer eine bestimmte Menge
        eines 

        bestimmten Produkts kaufen kann. Mit dieser Funktion können Sie die
        Anzahl und 

        Art der Produkte steuern, die der Benutzer in den Warenkorb legen und
        kaufen 

        kann.


        Es wird empfohlen, den Webhook <code>partner_side_catalog</code> in
        weniger als 

        drei Sekunden zu verarbeiten.
      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' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            d90d319f05df7b0f86d2485f48e7079f0f752523' \

            -d '{
                    "notification_type": "partner_side_catalog",
                    "user": {
                        "user_id": "12345",
                        "country": "US"
                    }
                }'
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host:           your.hostname
            accept:         application/json
            content-type:   application/json
            authorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523

            {
                "notification_type": "partner_side_catalog",
                "user": {
                  "user_id": "12345",
                  "country": "US"
                }
            }
  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</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:
                      description: >-
                        Quellensteuer, die in bestimmten Ländern aufgrund
                        grenzüberschreitender Transaktionen anfällt (Objekt).
                      properties:
                        amount:
                          description: Betrag.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                        percent:
                          description: Quellensteuersatz des Landes (in %).
                          format: float
                          type: number
                      type: object
                    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:


                        <table>
                            <thead>
                            <tr>
                                <th>Erstattungsinitiator</th>
                                <th>Feldwert</th>
                            </tr>
                            </thead>
                            <tbody>
                            <tr>
                                <td>Spiel (über API).</td>
                                <td>API</td>
                            </tr>
                            <tr>
                                <td>Kundenportal-Nutzer (automatische Erstattung).</td>
                                <td>E-Mail-Adresse des Nutzers</td>
                            </tr>
                            <tr>
                                <td>Kundenportal-Nutzer (mit Unterstützung des Xsolla-Kundensupports).</td>
                                <td>support@xsolla.com</td>
                            </tr>
                            <tr>
                                <td>Xsolla (mit Unterstützung des Xsolla-Kundensupports).</td>
                                <td>support@xsolla.com</td>
                            </tr>
                            </tbody>
                        </table>
                      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.
                      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' \
            -X POST \
            -d '{
                    "notification_type": "refund",
                    "settings": {
                      "project_id": 18404,
                      "merchant_id": 2340
                    },
                    "purchase": {
                        "subscription": {
                            "plan_id": "b5dac9c8",
                            "subscription_id": "10",
                            "date_create": "2014-09-22T19:25:25+04:00",
                            "currency": "USD",
                            "amount": 9.99
                        },
                        "checkout": {
                            "currency": "USD",
                            "amount": 50
                        },
                        "total":{
                            "currency": "USD",
                            "amount": 200
                        }
                    },
                    "user": {
                        "ip": "127.0.0.1",
                        "phone": "18777976552",
                        "email": "email@example.com",
                        "id": "1234567",
                        "name": "John Smith",
                        "country": "US"
                    },
                    "transaction": {
                        "id": 1,
                        "external_id": 1,
                        "dry_run": 1,
                        "agreement": 1
                    },
                    "refund_details": {
                        "code": 4,
                        "reason": "Potential fraud"
                    },
                    "payment_details": {
                        "sales_tax": {
                            "currency": "USD",
                            "amount": 0
                        },
                        "direct_wht": {
                            "currency": "USD",
                            "amount": 0.70
                        },
                        "xsolla_fee": {
                            "currency": "USD",
                            "amount": "10"
                        },
                        "payout": {
                            "currency": "USD",
                            "amount": "200"
                        },
                        "payment_method_fee": {
                            "currency": "USD",
                            "amount": "20"
                        },
                        "payment": {
                            "currency": "USD",
                            "amount": "230"
                        },
                        "repatriation_commission": {
                            "currency": "USD",
                            "amount": 10
                        }
                    }
                }
            }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
                'notification_type' => 'refund',
                'settings' => array(
                  'project_id' => 18404,
                  'merchant_id' => 2340
                ),
                'purchase' => array(
                    'total' => array(
                        'currency' => 'USD',
                        'amount' => 9.99
                    )
                ),
                'user' => array(
                    'ip' => '127.0.0.1',
                    'phone' => '18777976552',
                    'email' => 'email@example.com',
                    'id' => '1234567',
                    'country' => 'US'
                ),
                'transaction' => array(
                    'id' => 87654321,
                    'payment_date' => '2014-09-23T19:25:25+04:00',
                    'payment_method' => 1380,
                    'dry_run' => 1
                ),
                'refund_details' => array(
                        'code' => 4,
                        'reason' => 'Potential fraud'
                ),
                'payment_details' => array(
                    'payment' => array(
                        'currency' => 'USD',
                        'amount' => 9.99
                    ),
                    'vat' => array(
                        'currency' => 'USD',
                        'amount' => 0
                    ),
                    'sales_tax' => array(
                        'currency' => 'USD',
                        'amount' => 0
                    ),
                    'direct_wht' => array(
                        'currency' => 'USD',
                        'amount' => 70
                    ),
                    'payout_currency_rate' => 1,
                    'payout' => array(
                        'currency' => 'USD',
                        'amount' => 9.49
                    ),
                    'xsolla_fee' => array(
                        'currency' => 'USD',
                        'amount' => 0.19
                    ),
                    'payment_method_fee' => array(
                        'currency' => 'USD',
                        'amount' => 0.31
                    ),
                    'repatriation_commission' => array(
                        'currency' => 'USD',
                        'amount' => 0.2
                    )
                )
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your_uri HTTP/1.1
            host: your.host
            accept: application/json
            content-type: application/json
            content-length: 1220
            authorization: Signature 31bd5924dd6cbc9cbe99d331c4a086a57291f9d7

            {
                "notification_type": "refund",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "purchase": {
                    "subscription": {
                        "plan_id": "b5dac9c8",
                        "subscription_id": "10",
                        "date_create": "2014-09-22T19:25:25+04:00",
                        "currency": "USD",
                        "amount": 9.99
                    },
                    "checkout": {
                        "currency": "USD",
                        "amount": 50
                    },
                    "total": {
                        "currency": "USD",
                        "amount": 200
                    }
                },
                "user": {
                    "ip": "127.0.0.1",
                    "phone": "18777976552",
                    "email": "email@example.com",
                    "id": "1234567",
                    "name": "John Smith",
                    "country": "US"
                },
                "transaction": {
                    "id": 1,
                    "external_id": 1,
                    "dry_run": 1,
                    "agreement": 1
                },
                "refund_details": {
                    "code": 4,
                    "reason": "Potential fraud"
                },
                "payment_details": {
                    "sales_tax": {
                        "currency": "USD",
                        "amount": 0
                    },
                    "direct_wht": {
                        "currency": "USD",
                        "amount": 0.70
                    },
                    "xsolla_fee": {
                        "currency": "USD",
                        "amount": "10"
                    },
                    "payout": {
                        "currency": "USD",
                        "amount": "200"
                    },
                    "payment_method_fee": {
                        "currency": "USD",
                        "amount": "20"
                    },
                    "payment": {
                        "currency": "USD",
                        "amount": "230"
                    },
                    "repatriation_commission": {
                        "currency": "USD",
                        "amount": 10
                    }
                }
            }
  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' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \

            -d '{
                "notification_type": "payment_account_remove",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "email": "email@example.com",
                    "id": "1234567",
                    "name": "John Smith"
                },
                "payment_account": {
                    "id": "12345678",
                    "name": "email@example.com",
                    "payment_method": "24",
                    "type": "paypal"
                }
            }'
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host:           your.hostname
            accept:         application/json
            content-length: 258
            content-type:   application/json
            authorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523


            {
                "notification_type": "payment_account_remove",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "email": "email@example.com",
                    "id": "1234567",
                    "name": "John Smith"
                },
                "payment_account": {
                    "id": "12345678",
                    "name": "email@example.com",
                    "payment_method": "24",
                    "type": "paypal"
                }
            }
  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:
                          description: >-
                            Quellensteuer, die in bestimmten Ländern aufgrund
                            grenzüberschreitender Transaktionen anfällt
                            (Objekt).
                          properties:
                            amount:
                              description: Betrag.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                            percent:
                              description: Quellensteuersatz des Landes (in %).
                              format: float
                              type: number
                          type: object
                        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.
                          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' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \

            -d '{
                "notification_type": "order_paid",
                "items": [
                  {
                    "sku": "com.xsolla.item_1",
                    "type": "virtual_good",
                    "is_pre_order": false,
                    "quantity": 3,
                    "amount": "1000",
                    "promotions": [
                      {
                        "amount_without_discount": "6000",
                        "amount_with_discount": "5000",
                        "sequence": 1
                      },
                      {
                        "amount_without_discount": "5000",
                        "amount_with_discount": "4000",
                        "sequence": 2
                      }
                    ],
                    "custom_attributes":
                      {
                        "purchased": 0,
                        "attr": "value"
                      }
                  },
                  {
                    "sku": "com.xsolla.item_new_1",
                    "type": "bundle",
                    "is_pre_order": false,
                    "quantity": 1,
                    "amount": "1000",
                    "promotions": []
                  },
                  {
                    "sku": "com.xsolla.gold_1",
                    "type": "virtual_currency",
                    "is_pre_order": false,
                    "quantity": 1500,
                    "amount": null,
                    "promotions": []
                  }
                ],
                "order": {
                  "id": 1,
                  "mode": "default",
                  "currency_type": "virtual",
                  "currency": "sku_currency",
                  "amount": "2000",
                  "status": "paid",
                  "platform": "xsolla",
                  "comment": null,
                  "invoice_id": "1",
                  "promotions": [
                    {
                      "amount_without_discount": "4000",
                      "amount_with_discount": "2000",
                      "sequence": 1
                    }
                  ],
                  "promocodes": [
                    {
                      "code": "promocode_some_code",
                      "external_id": "promocode_sku"
                    }
                  ],
                  "coupons": [
                    {
                      "code": "WINTER2021",
                      "external_id": "coupon_sku"
                    }
                  ]
                },
                "user": {
                  "external_id": "id_xsolla_login_1",
                  "email": "gc_user@xsolla.com",
                  "country": "US"
                },
                "billing": {
                  "notification_type": "payment",
                  "settings": {
                    "project_id": 18404,
                    "merchant_id": 2340
                  },
                  "purchase": {
                      "subscription": {
                          "plan_id": "b5dac9c8",
                          "subscription_id": "10",
                          "product_id": "Demo Product",
                          "date_create": "2014-09-22T19:25:25+04:00",
                          "date_next_charge": "2014-10-22T19:25:25+04:00",
                          "currency": "USD",
                          "amount": 9.99
                      },
                      "total": {
                          "currency": "USD",
                          "amount": 200
                      },
                      "promotions": [{
                          "technical_name": "Demo Promotion",
                          "id": 853
                      }],
                      "coupon": {
                          "coupon_code": "ICvj45S4FUOyy",
                          "campaign_code": "1507"
                      }
                    },
                  "transaction": {
                      "id": 1,
                      "external_id": 1,
                      "payment_date": "2014-09-24T20:38:16+04:00",
                      "payment_method": 1,
                      "payment_method_name": "PayPal",
                      "payment_method_order_id": 1234567890123456789,
                      "dry_run": 1,
                      "agreement": 1
                  },
                  "payment_details": {
                      "payment": {
                          "currency": "USD",
                          "amount": 230
                      },
                      "vat": {
                          "currency": "USD",
                          "amount": 0,
                          "percent": 20
                      },
                      "sales_tax": {
                          "currency": "USD",
                          "amount": 0,
                          "percent": 0
                      },
                      "direct_wht": {
                          "currency": "USD",
                          "amount": 0,
                          "percent": 0
                      },
                      "payout_currency_rate": "1",
                      "payout": {
                          "currency": "USD",
                          "amount": 200
                      },
                      "country_wht": {
                          "currency": "USD",
                          "amount": 2,
                          "percent": 10
                      },
                      "user_acquisition_fee": {
                          "currency": "USD",
                          "amount": 2,
                          "percent": 1
                      },
                      "xsolla_fee": {
                          "currency": "USD",
                          "amount": 10
                      },
                      "payment_method_fee": {
                          "currency": "USD",
                          "amount": 20
                      },
                      "repatriation_commission": {
                          "currency": "USD",
                          "amount": 10
                      }
                  }
                }
             ,
              "custom_parameters": {
                "parameter1": "value1",
                "parameter2": "value2"
              }
            }
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host:           your.hostname
            accept:         application/json
            content-length: 258
            content-type:   application/json
            authorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523


            {
                "notification_type": "order_paid",
                "items": [
                  {
                    "sku": "com.xsolla.item_1",
                    "type": "virtual_good",
                    "is_pre_order": false,
                    "quantity": 3,
                    "amount": "1000",
                    "promotions": [
                      {
                        "amount_without_discount": "6000",
                        "amount_with_discount": "5000",
                        "sequence": 1
                      },
                      {
                        "amount_without_discount": "5000",
                        "amount_with_discount": "4000",
                        "sequence": 2
                      }
                    ],
                    "custom_attributes":
                      {
                        "purchased": 0,
                        "attr": "value"
                      }
                  },
                  {
                    "sku": "com.xsolla.item_new_1",
                    "type": "bundle",
                    "is_pre_order": false,
                    "quantity": 1,
                    "amount": "1000",
                    "promotions": []
                  },
                  {
                    "sku": "com.xsolla.gold_1",
                    "type": "virtual_currency",
                    "is_pre_order": false,
                    "quantity": 1500,
                    "amount": null,
                    "promotions": []
                  }
                ],
                "order": {
                  "id": 1,
                  "mode": "default",
                  "currency_type": "virtual",
                  "currency": "sku_currency",
                  "amount": "2000",
                  "status": "paid",
                  "platform": "xsolla",
                  "comment": null,
                  "invoice_id": "1",
                  "promotions": [
                    {
                      "amount_without_discount": "4000",
                      "amount_with_discount": "2000",
                      "sequence": 1
                    }
                  ],
                  "promocodes": [
                    {
                      "code": "promocode_some_code",
                      "external_id": "promocode_sku"
                    }
                  ],
                  "coupons": [
                    {
                      "code": "WINTER2021",
                      "external_id": "coupon_sku"
                    }
                  ]
                },
                "user": {
                  "external_id": "id_xsolla_login_1",
                  "email": "gc_user@xsolla.com",
                  "country": "US"
                },
                "billing": {
                  "notification_type": "payment",
                  "settings": {
                    "project_id": 18404,
                    "merchant_id": 2340
                  },
                  "purchase":{
                      "subscription": {
                          "plan_id": "b5dac9c8",
                          "subscription_id": "10",
                          "product_id": "Demo Product",
                          "date_create": "2014-09-22T19:25:25+04:00",
                          "date_next_charge": "2014-10-22T19:25:25+04:00",
                          "currency": "USD",
                          "amount": 9.99
                      },
                      "total": {
                          "currency": "USD",
                          "amount": 200
                      },
                      "promotions": [{
                          "technical_name": "Demo Promotion",
                          "id": 853
                      }],
                      "coupon": {
                          "coupon_code": "ICvj45S4FUOyy",
                          "campaign_code": "1507"
                      }
                  },
                  "transaction": {
                      "id": 1,
                      "external_id": 1,
                      "payment_date": "2014-09-24T20:38:16+04:00",
                      "payment_method": 1,
                      "payment_method_name": "PayPal",
                      "payment_method_order_id": 1234567890123456789,
                      "dry_run": 1,
                      "agreement": 1
                  },
                  "payment_details": {
                      "payment": {
                          "currency": "USD",
                          "amount": 230
                      },
                      "vat": {
                          "currency": "USD",
                          "amount": 0,
                          "percent": 20
                      },
                      "sales_tax": {
                          "currency": "USD",
                          "amount": 0,
                          "percent": 0
                      },
                      "direct_wht": {
                          "currency": "USD",
                          "amount": 0,
                          "percent": 0
                      },
                      "payout_currency_rate": "1",
                      "country_wht": {
                          "currency": "USD",
                          "amount": 2,
                          "percent": 10
                      },
                      "user_acquisition_fee": {
                          "currency": "USD",
                          "amount": 2,
                          "percent": 1
                      },
                      "payout": {
                          "currency": "USD",
                          "amount": 200
                      },
                      "xsolla_fee": {
                          "currency": "USD",
                          "amount": 10
                      },
                      "payment_method_fee": {
                          "currency": "USD",
                          "amount": 20
                      },
                      "repatriation_commission": {
                          "currency": "USD",
                          "amount": 10
                      }
                  }
                },
                "custom_parameters": {
                    "parameter1": "value1",
                    "parameter2": "value2"
                    }
                }
  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' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \

            -d '{
                "notification_type": "order_paid",
                "items": [
                  {
                    "sku": "com.xsolla.v.item_1",
                    "type": "virtual_good",
                    "is_pre_order": false,
                    "quantity": 3,
                    "amount": "1000",
                    "promotions": [
                      {
                        "amount_without_discount": "6000",
                        "amount_with_discount": "5000",
                        "sequence": 1
                      },
                      {
                        "amount_without_discount": "5000",
                        "amount_with_discount": "4000",
                        "sequence": 2
                      }
                    ],
                    "custom_attributes":
                      {
                        "purchased": 0,
                        "attr": "value"
                      }
                  },
                  {
                    "sku": "com.xsolla.v.item_new_1",
                    "type": "bundle",
                    "is_pre_order": false,
                    "quantity": 1,
                    "amount": "1000",
                    "promotions": []
                  },
                  {
                    "sku": "com.xsolla.gold_1",
                    "type": "virtual_currency",
                    "is_pre_order": false,
                    "quantity": 1500,
                    "amount": "[null]",
                    "promotions": []
                  }
                ],
                "order": {
                  "id": 1,
                  "mode": "default",
                  "currency_type": "virtual",
                  "currency": "sku_currency",
                  "amount": "2000",
                  "status": "paid",
                  "platform": "xsolla",
                  "comment": null,
                  "invoice_id": "1",
                  "promotions": [
                    {
                      "amount_without_discount": "4000",
                      "amount_with_discount": "2000",
                      "sequence": 1
                    }
                  ],
                  "promocodes": [
                    {
                      "code": "promocode_some_code",
                      "external_id": "promocode_sku"
                    }
                  ],
                  "coupons": [
                    {
                      "code": "WINTER2021",
                      "external_id": "coupon_sku"
                    }
                  ]
                },
                "user": {
                  "external_id": "id_xsolla_login_1",
                  "email": "gc_user@xsolla.com",
                  "country": "US"
                }

            }'
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host:           your.hostname
            accept:         application/json
            content-length: 258
            content-type:   application/json
            authorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523


            {
                "notification_type": "order_paid",
                "items": [
                  {
                    "sku": "com.xsolla.v.item_1",
                    "type": "virtual_good",
                    "is_pre_order": false,
                    "quantity": 3,
                    "amount": "1000",
                    "promotions": [
                      {
                        "amount_without_discount": "6000",
                        "amount_with_discount": "5000",
                        "sequence": 1
                      },
                      {
                        "amount_without_discount": "5000",
                        "amount_with_discount": "4000",
                        "sequence": 2
                      }
                    ],
                    "custom_attributes":
                      {
                        "purchased": 0,
                        "attr": "value"
                      }
                  },
                  {
                    "sku": "com.xsolla.v.item_new_1",
                    "type": "bundle",
                    "is_pre_order": false,
                    "quantity": 1,
                    "amount": "1000",
                    "promotions": []
                  },
                  {
                    "sku": "com.xsolla.gold_1",
                    "type": "virtual_currency",
                    "is_pre_order": false,
                    "quantity": 1500,
                    "amount": "[null]",
                    "promotions": []
                  }
                ],
                "order": {
                  "id": 1,
                  "mode": "default",
                  "currency_type": "virtual",
                  "currency": "sku_currency",
                  "amount": "2000",
                  "status": "paid",
                  "platform": "xsolla",
                  "comment": null,
                  "invoice_id": "1",
                  "promotions": [
                    {
                      "amount_without_discount": "4000",
                      "amount_with_discount": "2000",
                      "sequence": 1
                    }
                  ],
                  "promocodes": [
                    {
                      "code": "promocode_some_code",
                      "external_id": "promocode_sku"
                    }
                  ],
                  "coupons": [
                    {
                      "code": "WINTER2021",
                      "external_id": "coupon_sku"
                    }
                  ]
                },
                "user": {
                  "external_id": "id_xsolla_login_1",
                  "email": "gc_user@xsolla.com",
                  "country": "US"
                }
            }
  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' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            13342703ccaca5064ad33ba451d800c5e823db8f' \

            -d '{
                    "notification_type": "update_subscription",
                    "settings": {
                      "project_id": 18404,
                      "merchant_id": 2340
                    },
                    "user": {
                        "id": "1234567",
                        "name": "John Smith"
                    },
                    "subscription": {
                        "plan_id": "b5dac9c8",
                        "subscription_id": "10",
                        "product_id": "Demo Product",
                        "date_next_charge": "2015-01-22T19:25:25+04:00"
                    }
                }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
                'notification_type' => 'update_subscription',
                'settings' => array(
                  'project_id' => 18404,
                  'merchant_id' => 2340
                ),
                'user' => array(
                    'id' => '1234567',
                    'name' => 'John Smith'
                ),
                'subscription' => array(
                    'plan_id' => 'b5dac9c8',
                    'subscription_id' => '10',
                    'product_id' => 'Demo Product',
                    'date_next_charge' => '2015-01-22T19:25:25+04:00'
                )
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host: your.hostname
            accept: application/json
            content-type: application/json
            content-length: 240
            authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f

            {
                "notification_type": "update_subscription",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "id": "1234567",
                    "name": "John Smith"
                },
                "subscription": {
                    "plan_id": "b5dac9c8",
                    "subscription_id": "10",
                    "product_id": "Demo Product",
                    "date_next_charge": "2015-01-22T19:25:25+04:00"
                }
            }
  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' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            13342703ccaca5064ad33ba451d800c5e823db8f' \

            -d '{
                "notification_type": "user_search",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "public_id": "email@example.com"
                }
            }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
                'notification_type' => 'user_search',
                'settings' => array(
                  'project_id' => 18404,
                  'merchant_id' => 2340
                ),
                'user' => array(
                    'public_id' => 'email@example.com'
                )
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host: your.hostname
            accept: application/json
            content-type: application/json
            content-length: 240
            authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f

            {
                "notification_type": "user_search",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "public_id": "email@example.com"
                }
            }
  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' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            13342703ccaca5064ad33ba451d800c5e823db8f' \

            -d '{
                "notification_type":"user_validation",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "ip": "127.0.0.1",
                    "phone": "18777976552",
                    "email": "email@example.com",
                    "id": "1234567",
                    "name": "John Smith",
                    "country": "US"
                }
            }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
                'notification_type' => 'user_validation',
                'settings' => array(
                  'project_id' => 18404,
                  'merchant_id' => 2340
                ),
                'user' => array(
                    'ip' => '127.0.0.1',
                    'phone' => '18777976552',
                    'email'=> 'email@example.com',
                    'id'=> '1234567',
                    'country' => 'US'
                )
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host: your.hostname
            accept: application/json
            content-type: application/json
            content-length: 240
            authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f

            {
                "notification_type": "user_validation",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "ip": "127.0.0.1",
                    "phone": "18777976552",
                    "email": "email@example.com",
                    "id": "1234567",
                    "name": "John Smith",
                    "country": "US"
                }
            }
  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.
         <div class="note"><strong>Hinweis</strong><br><br>
        Der 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:
                  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:
                      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' \
            -X POST \
            -H 'accept: application/json' \
            -H 'content-type: application/json' \
            -d '{
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "id": "1234567",
                    "country": "US"
                }
            }'
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host: your.hostname
            accept: application/json
            content-type: application/json
            content-length: 240

            {
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "id": "1234567",
                    "country": "US"
                }
            }
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/solutions/payments/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.
      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
    amount-float:
      description: Preis in echter Währung.
      format: float
      type: number
    items.promotions:
      description: >-
        Angewandte Werbeaktionen für bestimmte Artikel in der Bestellung.

        Das Array wird in den folgenden Fällen zurückgegeben:
          - Eine Rabattaktion ist für einen bestimmten Artikel konfiguriert.
          - Ein Promocode mit der Einstellung **Rabatt auf ausgewählte Artikel** wird angewendet.

        Werden 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
  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
