# Funktionsweise von Erweiterungen Erfahren Sie, wie Sie Stripe mit Erweiterungen anpassen können. Mit Erweiterungen können Sie nutzerdefinierte Logik an bestimmten Stellen in Stripe ausführen, die als [Erweiterungspunkte](https://docs.stripe.com/extensions/extension-points.md) bezeichnet werden. Wenn Stripe die Logik an diesen Erweiterungspunkten ausführen muss, wird überprüft, ob eine Erweiterung verbunden ist, und falls gefunden, wird die nutzerdefinierte Logik in der Erweiterung ausgeführt. Stripe definiert beispielsweise einen Erweiterungspunkt für [anteilmäßige Verrechnungen](https://docs.stripe.com/extensions/scripts/build-prorations-extension.md). Sie verwenden eine Erweiterung, die für diesen Erweiterungspunkt entwickelt wurde. Wenn Stripe den Schritt der anteilmäßigen Verrechnung erreicht, wird die Logik Ihrer Erweiterung anstelle der Standardlogik für die anteilmäßige Verrechnung ausgeführt. Die Logik der Erweiterung entscheidet, wie der Betrag anteilmäßig verrechnet wird, und gibt den Wert der anteilmäßigen Verrechnung zurück. Stripe verwendet das Ergebnis und setzt den Abrechnungsablauf fort. Ähnlich definiert Stripe in [Workflows](https://docs.stripe.com/extensions/custom-actions/how-custom-actions-work.md) einen Erweiterungspunkt „nutzerdefinierte Aktion“. Eine Erweiterung dafür ruft Ihren Code auf, um eine E-Mail zu senden, ein CRM zu aktualisieren oder einen anderen von Ihnen definierten Vorgang durchzuführen. ## Funktionsweise des Modells Stripe definiert Erweiterungspunkte, d. h. bestimmte Stellen in Stripe-Produkten, an denen Ihr Code ausgeführt werden kann. Jeder Erweiterungspunkt gibt Folgendes an: - **Eingabe**: Die Daten, die Stripe beim Erreichen des Erweiterungspunkt an Ihre Erweiterung sendet, einschließlich der von dem/der Nutzer/in der Erweiterung stammenden Eingabe - **Ausgabe**: die Daten, die Ihre Erweiterung an Stripe zurückgeben muss - **Zulässige Implementierungstypen**: Welche Implementierungstypen (Scripts, Remote-Funktionen oder beides) Sie bei diesem Erweiterungspunkt verwenden können (See full diagram at https://docs.stripe.com/extensions/how-extensions-work) Suchen Sie zunächst nach dem [Erweiterungspunkt](https://docs.stripe.com/extensions/extension-points.md) für Ihren Use Case. Sie erstellen Ihre nutzerdefinierte Logik als Erweiterung, die sich mit einem Erweiterungspunkt verbindet. Erweiterungen werden als Teil von [Stripe Apps](https://docs.stripe.com/stripe-apps.md) verpackt, die Installation, Berechtigungen und Verteilung übernehmen. Sie können mehrere Erweiterungen mit beliebigem Implementierungstyp in derselben App verpacken: [Scripts](https://docs.stripe.com/extensions/how-extensions-work.md#scripts), [Remote-Funktionen](https://docs.stripe.com/extensions/how-extensions-work.md#remote-functions) oder [Nutzeroberflächenerweiterungen](https://docs.stripe.com/extensions/how-extensions-work.md#ui-extensions). Apps können auch [nutzerdefinierte Objekte](https://docs.stripe.com/custom-objects.md) enthalten. ## Implementierungstypen Jeder Erweiterungspunkt unterstützt einen oder mehrere Implementierungstypen. Der Implementierungstyp bestimmt, wo Ihr Code ausgeführt wird und wie er mit externen Diensten interagiert. ### Scripts Scripts sind TypeScript-Methoden, die mit der vollständig verwalteten Laufzeit von Stripe ausgeführt werden. Sie müssen keine Infrastruktur hosten, da Stripe Ihren Code ausführt und Sie die Bereitstellung durch Hochladen Ihrer App über die Stripe-CLI durchführen. Scripts führen Ihre Unternehmenslogik aus, wenn Stripe einen Erweiterungspunkt erreicht. Verwenden Sie Scripts, wenn Sie: - komplexe Geschäftsregeln unter Verwendung von Code anwenden möchten, beispielsweise die Berechnung eines Rabatts auf Grundlage der Kaufhistorie einer Kundin oder eines Kunden und von Sale-Aktionen. - Daten validieren oder umwandeln möchten, bevor Stripe diese verarbeitet, beispielsweise um zu prüfen, ob eine Kundin oder ein Kunde die Zulassungskriterien erfüllt. - externe Daten in Stripe-Abläufe integrieren möchten, ohne Webhooks erstellen und verwalten zu müssen. - schnell Prototypen erstellen möchten, ohne eigene Dienste bereitstellen und verwalten zu müssen. Was Scripts können, hängt vom Erweiterungspunkt ab: - **Bei Abrechnungs-Erweiterungspunkten** (Kundensaldo, Handhabung von Posten, anteilmäßige Verrechnungen): Scripts können nur Daten von Stripe empfangen, Ihre Logik ausführen und ein Ergebnis zurückgeben. Externe API-Aufrufe sind nicht zulässig. Diese Erweiterungspunkte werden in der Abrechnungs-Pipeline ausgeführt, wo Stripe unerwünschte Auswirkungen eindämmt, um die Zuverlässigkeit aufrechtzuerhalten. - **Beim Erweiterungspunkt der nutzerdefinierten Aktion** (für Workflows): Scripts können externe HTTP-Aufrufe mit `endpointFetch()` durchführen. Sie deklarieren Endpoints in Ihrem App-Manifest und Stripe kümmert sich um die geheime Speicherung und Authentifizierungseingabe über den [Secret Store](https://docs.stripe.com/stripe-apps/store-secrets.md). Dieser ist für Aktionen konzipiert, die externe Dienste erreichen, ohne dass Sie die Infrastruktur verwalten müssen. **Einschränkungen:** Keine Abhängigkeiten von Drittanbietern. Externe API-Aufrufe nur für nutzerdefinierte Workflows-Aktionen unter Verwendung von `endpointFetch()`. Unterstützt nur TypeScript. Die vollständige Liste der Einschränkungen finden Sie unter [Script-Laufzeitverhalten](https://docs.stripe.com/extensions/scripts/build-prorations-extension.md#script-runtime-behavior). ### Remote-Funktionen Remote-Funktionen sind HTTP-Endpoints, die Sie auf Ihrer eigenen Infrastruktur hosten. Stripe ruft Ihren Endpoint auf, wenn der Erweiterungspunkt erreicht ist, und signiert jede Anfrage mit einer [Webhook-Signatur](https://docs.stripe.com/webhooks.md#verify-official-libraries), damit Sie überprüfen können, ob sie von Stripe stammt. Sie verwalten die Authentifizierung für alle externen Dienste, die Ihr Code aufruft, Stripe gibt keine Geheimnisse für Remote-Funktionen ein. Sie verifizieren die eingehende Stripe-Signatur und kümmern sich selbst um die ausgehende Autorisierung. Nutzen Sie Remote-Funktionen für Folgendes: - Logik auf Ihren eigenen Servern oder in Ihrer eigenen Umgebung ausführen - In Ihre eigenen Systeme wie ERP oder CRM integrieren - Andere Sprache als TypeScript verwenden **Einschränkungen:** Sie verwalten Hosting, Verfügbarkeit und Bereitstellung. Ihre Endpoints müssen innerhalb der durch den Erweiterungspunkt definierten Zeitüberschreitung reagieren (z. B. 20 Sekunden für nutzerdefinierte Aktionen). ### Erweiterungen der Nutzeroberfläche React-Komponenten, die im Stripe-Dashboard angezeigt werden. Verwenden Sie eine Nutzeroberflächenerweiterung, um Nutzerinnen und Nutzern im Dashboard eine nutzerdefinierte Nutzeroberfläche anzuzeigen. Siehe [Nutzeroberflächenerweiterungen](https://docs.stripe.com/stripe-apps/how-ui-extensions-work.md). ### Auswahl eines Implementierungstyps Wenn ein Erweiterungspunkt sowohl Scripts als auch Remote-Funktionen unterstützt, verwenden Sie diese Tabelle, um Folgendes zu entscheiden: | Abwägung | Script | Remote-Funktion | | ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | | Wo es läuft | Verwaltete Laufzeit von Stripe | Ihre Infrastruktur | | Sprache | TypeScript | Beliebige Sprache (HTTP-Endpoint) | | Externe API-Aufrufe | Erweiterungspunkt-abhängig. Erlaubt für nutzerdefinierte Aktionen (über `endpointFetch()`). Nicht zulässig für Erweiterungspunkte zur Abrechnung. | Ja, Sie tätigen Aufrufe direkt von Ihren Servern | | Autorisierung für externe Dienstleistungen | Stripe injiziert Geheimnisse über die Endpoint-Konfiguration und den [Secret Store](https://docs.stripe.com/stripe-apps/store-secrets.md) (wo externe API-Aufrufe zugelassen sind) | Sie verwalten die Authentifizierung selbst | | Autorisierung von Stripe für Ihren Code | Hinweis: Ihr Code wird auf Stripe ausgeführt | Stripe signiert jede Anfrage. Sie [verifizieren die Webhook-Signatur](https://docs.stripe.com/webhooks.md#verify-official-libraries). | | Ideal für Folgendes | Logik, die keine eigene Infrastruktur von Ihnen benötigt | Logik, die Ihre eigenen Systeme, Transformationen oder Nicht-TypeScript-Sprachen benötigt | | Einschränkungen | Keine Abhängigkeiten von Drittanbietern, kein roher `fetch()`, nur TypeScript | Sie verwalten Hosting, Verfügbarkeit und Bereitstellung | ## Berechtigungen Wenn Sie eine Erweiterung erstellen, müssen Sie die Berechtigungen deklarieren, die Ihre Erweiterung benötigt. Eine Erweiterung kann nur auf die Daten zugreifen, für die ihr die Berechtigung zum Lesen oder Schreiben erteilt wurde. Nutzer/innen von Erweiterungen erteilen diese Berechtigungen bei der Installation der App, die die Erweiterungen enthält. Eine vollständige Liste aller [Berechtigungen](https://docs.stripe.com/stripe-apps/reference/permissions.md) finden Sie hier. ## Lifecycle Das Erstellen einer Erweiterung folgt diesem Lifecycle: 1. **Erstellen**: Sie erstellen eine Erweiterung innerhalb einer Stripe-App. 1. **Hochladen**: Sie laden die App über die Stripe-CLI hoch. Stripe verarbeitet sie und stellt sie zur Installation bereit. 1. **Version** (optional): Sie laden neue Versionen hoch, während Sie iterieren. 1. **Veröffentlichen** (optional): Sie teilen die App über einen [externen Testkanal](https://docs.stripe.com/stripe-apps/test-app.md) oder den [Stripe App Marketplace](https://docs.stripe.com/stripe-apps/publish-app.md). Sie kann in deren Konten installiert werden. 1. **Installieren**: Sie oder diejenigen, mit denen die App geteilt wird, installieren sie und akzeptieren die zugehörigen Berechtigungen. 1. **Aktivieren**: Der/die App-Nutzer/in aktiviert eine Erweiterung an seinem/ihrem Erweiterungspunkt. 1. **Aufrufen**: Stripe ruft die aktivierte Erweiterung immer dann auf, wenn er den Erweiterungspunkt erreicht. 1. **Deaktivieren**: Der/die App-Nutzer/in deaktiviert die Erweiterung. Sie verbleibt im Konto, wird aber von Stripe nicht mehr aufgerufen, wenn sie den Erweiterungspunkt erreicht. 1. **Deinstallieren**: Der/die App-Nutzer/in entfernt die App und ihre Erweiterungen aus dem Konto. ## Mit dem Erstellen beginnen Welchen Leitfaden Sie befolgen, hängt davon ab, für welchen Erweiterungspunkt Sie die Erstellung durchführen: - [Erstellen Sie eine Erweiterung des Abrechnungsscripts](https://docs.stripe.com/extensions/scripts/build-prorations-extension.md), um den Kundesaldo, die Handhabung von Posten oder das Verhalten bei der anteiligen Verrechnung anzupassen. - [Erstellen Sie eine nutzerdefinierte Workflow-Aktion mit einem Script](https://docs.stripe.com/extensions/custom-actions/build-with-script.md) oder [Remote-Funktionen](https://docs.stripe.com/extensions/custom-actions/build-with-remote-function.md). Erfahren Sie mehr darüber, [wie nutzerdefinierte Aktionen funktionieren](https://docs.stripe.com/extensions/custom-actions/how-custom-actions-work.md). Eine vollständige Liste der verfügbaren Erweiterungspunkte und ihrer unterstützten Implementierungstypen finden Sie unter [Erweiterungspunkte](https://docs.stripe.com/extensions/extension-points.md).