# Konfiguration der Stripe Billing-Abläufe So konfigurieren Sie die Erweiterung für Stripe Billing-Abläufe Diese Abläufe bestehen aus einem primären Ablauf und mehreren Teilabläufen, die auf kombinierbare Weise zusammenwirken, um die Abo-Verwaltung zu automatisieren. Sie dienen in erster Linie als Katalysator für die Erstellung von vertriebsunterstützenden Workflows, die Salesforce-Prozesse mit Stripe-Abos verbinden. Da es sich um ein nicht verwaltetes Paket handelt: - Automatisierungsabläufe können geklont oder erweitert werden, um sie an Ihre Geschäftsprozesse anzupassen. - Einzelne Teilabläufe können als primäre Abläufe für benutzerdefinierte Datensatzauslöser oder -bedingungen wiederverwendet werden. - Standard-Objekt- und Feldzuordnungen können an Ihre spezifische Implementierung angepasst werden - Bestehende Automatisierungsabläufe können auch erweitert oder aktualisiert werden, um zusätzliche Preismodelle zu unterstützen ## Standardeinstellungen für den Ablauf Die vordefinierten Abläufe implementieren mehrere wichtige Konfigurationen und Designoptionen, darunter: - **Primäre Objekte**: Funktioniert mit Salesforce-`Bestellungen` und `Vertrags`-Objekten als Kerneinheiten - **Objektbeziehung**: Bestellungen und Verträge sind miteinander verknüpft, wobei Abo nach der Erstellung mit beiden Objekten zurücksynchronisiert werden - **Verarbeitung von Änderungen**: Wenn eine neue `Bestellung` innerhalb desselben `Vertrags` erstellt wird, behandeln die Standardabläufe sie als **Änderung** des bestehenden Abos - **Preisstruktur**: Pauschales wiederkehrendes Preismodell - **Auslösemechanismus**: Automatisierung, ausgelöst durch die Aktivierung des Salesforce-Objekts `Bestellung` - **Bearbeitung von Posten**: Bestellposten werden automatisch Phasen in Stripe-Abonnementplänen zugeordnet - **Preisreferenzmethode**: Erzwingt die Verwendung von `price_id` anstelle von `price_data`, um eine genaue Berichterstattung zu bevorzugen - **Price Source**: Standardmäßig `price_id` synchronisiert mit Salesforce `Standard Price Book Entry` (für Custom Pricing kann price_id aus dem Produkt Bestellung oder dem Objekt Ihrer Wahl referenziert werden) - **Verarbeitung von Metadaten**: Die Übergabe von Metadaten wird von der Klasse „Subscription Scheduler Manager“ gesteuert und kann entweder durch Refactoring dieser Klasse oder durch Hinzufügen einer Aktion „Abo aktualisieren“ im Hauptablauf angepasst werden, um zusätzliche Metadaten zu übergeben. - **Berücksichtigung der Zeitzone/Datumszeit**: Alle Datumsfelder sind als Unix-Zeitstempel (in Sekunden) für die Anfrage der Stripe-API formatiert, die standardmäßig auf UTC basieren. Wenn ein zugeordnetes Quellfeld ein Salesforce-Datum (ohne Uhrzeit) ist, ist die Zeit standardmäßig 00:00:00 Uhr UTC (Mitternacht UTC) für dieses Datum. Wenn ein Datums-/Uhrzeitfeld verwendet wird, wird dessen UTC-Äquivalent verwendet. ## Implementierung von Core Flow ### Auswahl des Stripe-Kontos Für alle Ablaufvorgänge muss ein Stripe-Konto ausgewählt werden. Der Ablauf `Stripe-Abonnementplan erstellen oder aktualisieren, wenn Bestellung aktiviert wird` bietet eine einfache, sofort einsatzbereite Methode, bei der mithilfe einer Abfrage ein Stripe-Konto anhand seines `Namens` gesucht wird. Für einen robusteren und dynamischeren Ansatz empfehlen wir, ein benutzerdefiniertes Suchfeld aus Ihrer `Bestellung` oder Ihrem `Vertrag`-Objekt auf das `Stripe_Account__c`-Objekt zu erstellen. So können Sie direkt im Ablauf auf das jeweilige Konto verweisen. Unabhängig von der Methode müssen Sie die Salesforce-Datensatz-ID des Datensatzes Stripe_Account__c an die Eingabe des Stripe-Kontos im Abonnementplan-Manager übermitteln. ![](https://b.stripecdn.com/docs-statics-srv/assets/create_update_subs_add_stripeacct.372cd1bab362f6805751564f66398825.png) ## Rabatte konfigurieren Mit den Abläufen können Sie Rabatte sowohl auf der Ebene der Abo-Phase als auch auf der Ebene der Abo-Phasenposten mithilfe von zwei vereinfachten Feldern anwenden: - `Rabattbetrag` - `Rabattprozentsatz` Wenn Sie für eines dieser Felder einen Wert ungleich Null angeben, erstellt das System automatisch einen neuen Stripe Gutschein mit `maximalen Einlösungen`, der auf 1 gesetzt ist und wendet ihn auf die entsprechende Phase oder den entsprechenden Posten an. ### Hinweis zu Aktualisierungen und Ergänzungen Wenn Sie einen `Aktualisierungs`- oder `Änderungsvorgang` durchführen, erstellt der Ablauf anhand der angegebenen Werte neue Stripe-Gutscheine. Dies dient der Einfachheit und Idempotenz, da der Bereich und die Verwaltung vorhandener Stripe-Gutschein-IDs in Salesforce vermieden werden. Der angegebene Rabattwert wird immer als Gesamtrabatt für diese Phase oder Posten zum Zeitpunkt der Aktualisierung behandelt. ### Konsolidierung der Abo-Phase Eine wichtige Funktion der Automatisierung ist die Möglichkeit, mehrere Salesforce-`OrderItems` in einer linearen Reihe von [Stripe-Abo-Phasen](https://docs.stripe.com/billing/subscriptions/subscription-schedules.md#subscription-schedule-phases) zu konsolidieren. Die API von Stripe erfordert, dass Abo-Phasen diskret und linear sind – eine Phase endet genau zu dem Zeitpunkt, zu dem die nächste beginnt, ohne Lücken oder Überschneidungen. Salesforce-Bestellungen haben diese Einschränkung nicht. Sie können beispielsweise zwei `OrderItems` mit sich überschneidenden Servicedaten haben: - **Produkt A**: 1. Januar 2025 – 1. Januar 2026 - **Produkt B**: 1. Juni 2025 – 1. Januar 2026 Die Ablauflogik konsolidiert diese für Stripe automatisch in zwei unterschiedliche, lineare Phasen: - **Phase 1**: 1. Januar 2025 bis 1. Juni 2025 (enthält nur Produkt A) - **Phase 2**: 1. Juni 2025 – 1. Januar 2026 (enthält Produkt A + Produkt B) > **Phasenkonsolidierung bei Lücken**: Die Logik löst einen Fehler aus, wenn eine ***Lücke*** zwischen den Phasen erkannt wird. - **Eigenschaft stimmt nicht überein**: Wenn zwei sich überschneidende Phasen unterschiedliche Eigenschaften haben (z. B. wenn bei einer die Eigenschaft „collection_method” auf „send_invoice” und bei der anderen auf „charge_automatically” gesetzt ist), kann der Ablauf den Konflikt nicht lösen und gibt eine Fehlermeldung aus. - **Mengenabweichungen**: Wenn sich zwei Phasen mit demselben Produkt überlappen, aber unterschiedliche Mengen aufweisen, gibt der Ablauf einen Fehler aus. ### Zusätzliche Einstellungen für Abonnementplan Sie können mehrere erweiterte Einstellungen im Abschnitt „Zusätzliche Einstellungen für den Abonnementplan“ der Ablaufaktion konfigurieren. - **ID des verbundenen Stripe-Kontos**: Wenn Sie diese Anfrage im Auftrag eines verbundenen Kontos durchführen, geben Sie hier die Stripe-ID an (z. B. `acct_...`). - **Idempotenz-Schlüssel**: Um idempotente Anfragen zu gewährleisten, können Sie einen eindeutigen Schlüssel angeben. Es wird empfohlen, die Flow-Interview-GUID zu verwenden: `{!$Flow.InterviewGUID}`. - **Billing-Sync-Ereignisverarbeitung ignorieren:** Setzen Sie diesen Wert auf `wahr`, um zu verhindern, dass der Importprozess für Stripe Billing-Datenereignisse für Ereignisse ausgeführt wird, die durch diesen Vorgang erzeugt wurden. Dies ist nützlich, um rekursive Schleifen zu vermeiden, wenn Sie Auslöser für die benutzerdefinierten Objekte von Stripe Billing Data eingerichtet haben. - **DML-Speicherung nach Aufrufen durchführen**: Dieses Kennzeichen steuert, ob der Ablauf nach Abschluss der Aufrufe Datenbankspeicherungen (z. B. Erstellen von `Sync_Log__c`-Datensätzen, Upserting von Stripe Billing-Objekten) festschreibt. ![](https://b.stripecdn.com/docs-statics-srv/assets/addnl_subs_flow_settings.d85ef49063bc98d4887576156849e87b.png) ## Einrichtung und Aktivierung der Abläufe Das Paket enthält Beispiel-Ablaufvorlagen, die standardmäßig deaktiviert sind. Diese Abläufe dienen als Ausgangspunkt und sind nicht zwangsläufig für alle geschäftlichen Anforderungen geeignet. Sie können sie direkt aktivieren oder klonen, um die Logik anzupassen. Um einen Ablauf zu aktivieren, navigieren Sie zu **Einrichtung** → **Abläufe**, wählen Sie den datensatzbasierten Auslöser-Ablauf aus und klicken Sie auf **Aktivieren**. ### Datensatzgesteuerte Abläufe Diese Abläufen werden automatisch ausgelöst, basierend auf Änderungen von Datensätzen in Salesforce: #### `Stripe-Abonnementplan erstellen oder aktualisieren, wenn Bestellung aktiviert wird` Dies ist der primäre Ablauf. Wenn eine `Bestellung` aktiviert wird, wird entweder ein neuer Stripe-Abonnementplan erstellt oder ein bestehender aktualisiert. - **Synchroner Pfad**: Der Ablauf prüft zunächst, ob der mit der `Bestellung` verknüpfte `Vertrag` bereits über eine Stripe Abonnementplan-ID verfügt. Wenn dies der Fall ist, kopiert er diese ID in den Datensatz der `Bestellung` und bereitet sie auf eine Aktualisierung vor. - **Asynchroner Pfad**: Der Ablauf läuft asynchron (zur Durchführung des API-Aufrufs) und prüft, ob die `Bestellung` eine Abonnementplan-ID hat. - Wenn **JA**, wird der Teilablauf `Stripe-Abonnementplan aus Bestelländerung aktualisieren` aufgerufen (und als Änderung behandelt). - Wenn **NEIN**, wird der Teilablauf `Stripe-Abonnementplan aus Bestellung erstellen` aufgerufen. - **Implementierungshinweis**: Bevor Sie die Aktivierung durchführen, müssen Sie im asynchronen Pfad das Abfrageelement „Stripe-Konto aufrufen“ aktualisieren, um das gewünschte Stripe-Konto abzurufen. #### `Stripe-Abonnementplan aktualisieren, wenn OrderItem aktualisiert wird` Wird ausgelöst, wenn die Menge, das ServiceDate oder das EndDate eines OrderItem-Eintrags geändert wird. - **Asynchroner Pfad**: Der Ablauf prüft, ob der übergeordneten Bestellung ein Stripe-Abonnementplan zugeordnet ist. Wenn dies der Fall ist, wird der Stripe-Abonnementplan aus dem Teilablauf „Stripe-Abonnementplan aus Originalbestellung aktualisieren“ aufgerufen, um die Änderungen zu synchronisieren. #### `Produkt2 synchronisieren, wenn Stripe-Produkt aktualisiert wird` Wenn ein stripeGC__Product__c-Eintrag in Salesforce (über die Datensynchronisierung von Stripe) aktualisiert wird, wird durch diesen Ablauf ein übereinstimmender Salesforce Product2-Eintrag aktualisiert. - **Synchroner Pfad**: Ruft sofort den Teilablauf „Produkt2 aus Stripe-Produkt abrufen oder erstellen“ auf. #### `PricebookEntry synchronisieren, wenn ein Stripe-Preis aktualisiert oder erstellt wird` Wenn ein stripeGC__Price__c-Datensatz aktualisiert wird, wird durch diesen Ablauf ein übereinstimmender Salesforce PricebookEntry-Datensatz aktualisiert. - **Synchroner Pfad**: Ruft sofort den Teilablauf „PricebookEntry aus Stripe-Preis abrufen oder erstellen“ auf. ### Automatisch gestartete Abläufe (Teilabläufe) Diese Abläufe sind die Kernbausteine, die von den datensatzgesteuerten Abläufen verwendet werden. Sie sind standardmäßig aktiviert, können aber geklont und geändert werden. Wenn Sie diese anpassen, denken Sie daran, die datensatzgesteuerten Abläufe zu aktualisieren, um Ihre neuen, geklonten Versionen aufzurufen. - **`Stripe-Abonnementplan aus Bestellung erstellen`**: Verarbeitet die Logik zum Erstellen eines neuen Abonnementplans. Es ruft das zugehörige Konto (zur Verwendung als Stripe-Kunde/Kundin) und die OrderItems (zum Erstellen der Phasen) ab. - **`Stripe-Abonnementplan aus „Bestellung ändern“ aktualisieren`**: Verarbeitet Änderungen an Abos. Dieser Ablauf verwendet den Aktualisierungstyp „Ändern“ in der Aktion `Stripe-Abonnementplan Manager`. - **`Abonnementplan von Stripe aus der ursprünglichen Bestellung aktualisieren`**: Verarbeitet Aktualisierungen einer ursprünglichen Bestellung (z. B. wenn ein `OrderItem` geändert wird). Dieser Ablauf verwendet den Aktualisierungstyp „Ersetzen“ und sendet das gesamte Bild des Abos erneut an Stripe. - **`Stripe-Abonnementplan von Bestellung stornieren`**: Storniert den mit einer `Bestellung` verknüpften Abonnementplan. - **`Stripe-Kundin/Kunden aus Konto abrufen oder erstellen`**: Ein wiederverwendbarer Dienstprogrammablauf, der eine/n Stripe-Kundin/Kunden basierend auf einem Salesforce-`Kontoeintrag` findet oder erstellt. - **`Abrufen oder Erstellen...`Produkt- und Preisabläufe**: Dienstprogrammabläufe (… `Stripe-Produkt aus Product2, ... Stripe-Preis aus PricebookEntry`usw.), die die bidirektionale Synchronisierung von Produkt- und Preisdaten verarbeiten.