StartseiteDokumentationKaufmodelle & Tickets & Abo

    Kaufmodelle & Tickets & Abo

    Flexible Preismodelle, Abo-Verwaltung und Support-Tickets in einem Plugin

    Überblick

    Das Plugin "Bronn Kaufmodelle, Tickets & Abo-Verwaltung" erweitert Shopware 6 um drei zentrale Funktionsbereiche: flexible Kaufmodelle (Einmalkauf, Monatsabo, Jahresabo), ein integriertes Support-Ticket-System im Kundenkonto und eine vollständige Abo-Verwaltung mit automatischer Verlängerung über Stripe.

    Shop-Betreiber können für jedes Produkt individuelle Preismodelle definieren. Kunden wählen auf der Produktdetailseite zwischen Einmalkauf und Abo. Abonnements werden automatisch verlängert, die Zahlung läuft über Stripe Subscriptions mit Smart Retry und Dunning. Das Ticket-System ermöglicht Kunden, produktbezogene Support-Anfragen direkt im Kundenkonto zu erstellen und zu verfolgen.

    Systemvoraussetzungen

  1. Shopware 6.7 oder höher
  2. PHP 8.1 oder höher
  3. MySQL 8.0 oder höher
  4. Stripe-Account (für automatische Abo-Zahlungen)
  5. Empfohlen: mindestens 256 MB PHP Memory Limit
  6. Installation

  7. 1.Plugin über den Shopware Plugin-Manager installieren oder manuell in custom/plugins/BronnProductLicensing ablegen
  8. 2.Plugin im Plugin-Manager aktivieren
  9. 3.Stripe PHP SDK installieren (auf Shopware-Root-Ebene): composer require stripe/stripe-php:"^16.0"
  10. 4.Cache leeren: php bin/console cache:clear
  11. 5.Datenbank-Migrationen werden automatisch bei der Installation ausgeführt (7 Migrationen für Kaufmodelle, Tickets, Abonnements, Stripe-Felder und Mail-Templates)
  12. 6.Bei Install/Update werden automatisch 6 Flow-Builder-Flows angelegt: Bronn Abo: Abonnement erstellt, Bronn Abo: Abonnement verlaengert, Bronn Abo: Zahlung fehlgeschlagen, Bronn Abo: Abonnement deaktiviert, Bronn Abo: Abonnement gekuendigt, Bronn Abo: Erinnerung Zahlungsmethode
  13. Deinstallation: Bei der Deinstallation werden die Plugin-Tabellen bronn_ticket_message, bronn_ticket, bronn_subscription und bronn_pricing_model sauber entfernt.

    Das Plugin enthaelt vorkompiliertes Admin-JS und funktioniert ohne build-administration.sh – eine reine Installation ueber den Shopware Plugin-Manager im Admin ist ausreichend.

    Konfiguration

    Die Plugin-Konfiguration befindet sich unter Einstellungen > Erweiterungen > Kaufmodelle, Tickets & Abos (config.xml).

    Allgemeine Einstellungen:

  14. **Plugin aktiv** (`BronnProductLicensing.config.active`, Typ: `bool`, Standard: `true`): Aktiviert oder deaktiviert alle Plugin-Funktionen im Storefront und in der Administration.
  15. Stripe (Wiederkehrende Zahlungen):

  16. **Stripe-Zahlungen aktivieren** (`BronnProductLicensing.config.stripeEnabled`, Typ: `bool`, Standard: `false`): Aktiviert automatische Stripe-Zahlungen bei Abo-Verlängerungen. Wenn deaktiviert, werden Bestellungen ohne Zahlung erstellt.
  17. **Stripe Secret Key** (`BronnProductLicensing.config.stripeSecretKey`, Typ: `password`): API-Schlüssel aus dem Stripe Dashboard. Beginnt mit `sk_live_` (Produktion) oder `sk_test_` (Test).
  18. **Stripe Webhook Secret** (`BronnProductLicensing.config.stripeWebhookSecret`, Typ: `password`): Signaturschlüssel für Webhook-Verifizierung. Beginnt mit `whsec_`.
  19. Abo-Erinnerungen (Stripe-Setup):

  20. **1. Erinnerung nach (Tagen)** (`BronnProductLicensing.config.stripeReminder1Days`, Typ: `int`, Standard: `3`): Tage nach dem Kauf, bevor die erste Erinnerungsmail gesendet wird, wenn der Kunde die automatische Zahlung noch nicht eingerichtet hat.
  21. **2. Erinnerung nach (Tagen)** (`BronnProductLicensing.config.stripeReminder2Days`, Typ: `int`, Standard: `7`): Zweite Erinnerung.
  22. **3. Erinnerung nach (Tagen)** (`BronnProductLicensing.config.stripeReminder3Days`, Typ: `int`, Standard: `14`): Letzte Warnung -- danach wird das Abo nach Ablauf der Frist automatisch deaktiviert.
  23. **Abo deaktivieren nach (Tagen)** (`BronnProductLicensing.config.stripeExpireDays`, Typ: `int`, Standard: `21`): Wenn der Kunde die automatische Zahlung nach dieser Anzahl Tagen nicht eingerichtet hat, wird das Abonnement auf "Abgelaufen" gesetzt.
  24. Kaufmodelle:

  25. **Kaufmodell-Auswahl anzeigen** (`BronnProductLicensing.config.pricingModelEnabled`, Typ: `bool`, Standard: `true`): Zeigt die Auswahl zwischen Kauf, Monatlich und Jährlich auf der Produktdetailseite an, sofern für das Produkt konfiguriert.
  26. **Standard-Label: Kauf** (`BronnProductLicensing.config.defaultLabelPurchase`, Typ: `text`, Standard: `Kauf`)
  27. **Standard-Label: Monatlich** (`BronnProductLicensing.config.defaultLabelMonthly`, Typ: `text`, Standard: `Monatlich`)
  28. **Standard-Label: Jährlich** (`BronnProductLicensing.config.defaultLabelYearly`, Typ: `text`, Standard: `Jährlich`)
  29. Ticket-System:

  30. **Ticket-System aktivieren** (`BronnProductLicensing.config.ticketSystemEnabled`, Typ: `bool`, Standard: `true`): Zeigt den Bereich "Meine Tickets" im Kundenkonto an und erlaubt Kunden, Support-Tickets zu erstellen.
  31. **Maximale Anzahl offener Tickets** (`BronnProductLicensing.config.maxTicketsPerCustomer`, Typ: `int`, Standard: `0`): Begrenzt die Anzahl gleichzeitig offener Tickets. 0 = unbegrenzt.
  32. Anzeige:

  33. **Kaufmodell-Badge im Warenkorb** (`BronnProductLicensing.config.showPricingBadgeInCart`, Typ: `bool`, Standard: `true`): Zeigt ein farbiges Badge (Monatsabo/Jahresabo) neben dem Produkt im Warenkorb und Checkout.
  34. **Badge-Farbe: Monatsabo** (`BronnProductLicensing.config.badgeColorMonthly`, Typ: `colorpicker`, Standard: `#0d6efd`)
  35. **Badge-Farbe: Jahresabo** (`BronnProductLicensing.config.badgeColorYearly`, Typ: `colorpicker`, Standard: `#198754`)
  36. **Badge-Eckenradius** (`BronnProductLicensing.config.badgeBorderRadius`, Typ: `int`, Standard: `50`): 50 = Pill-Form, 4 = leicht gerundet, 0 = eckig.
  37. Stripe-Integration einrichten

    Schritt 1: Stripe-Account

  38. 1.Stripe-Account unter stripe.com erstellen (falls noch nicht vorhanden)
  39. 2.Im Stripe Dashboard unter Developers > API Keys den Secret Key kopieren
  40. 3.Für Tests den Test-Key (sk_test_...) verwenden, für Produktion den Live-Key (sk_live_...)
  41. Schritt 2: Plugin-Konfiguration

  42. 1.Shopware Admin > Einstellungen > Erweiterungen > Kaufmodelle, Tickets & Abos
  43. 2."Stripe-Zahlungen aktivieren" einschalten
  44. 3.Stripe Secret Key eintragen
  45. 4.Speichern
  46. Schritt 3: Webhook einrichten

  47. 1.Stripe Dashboard > Developers > Webhooks > Add endpoint
  48. 2.Endpoint-URL: https://DEIN-SHOP.de/api/bronn-product-licensing/stripe-webhook
  49. 3.Folgende Events auswählen: invoice.paid, invoice.payment_failed, customer.subscription.updated, customer.subscription.deleted
  50. 4.Endpoint speichern
  51. 5.Signing Secret (whsec_...) kopieren
  52. 6.Im Plugin unter "Stripe Webhook Secret" eintragen und speichern
  53. Schritt 4: Testen

  54. 1.Stripe-Dashboard auf Testmodus stellen (Test-Keys verwenden)
  55. 2.Im Shop ein Produkt mit Monats- oder Jahresabo bestellen
  56. 3.Auf der Bestellbestätigung "Jetzt einrichten" klicken
  57. 4.Im Stripe Checkout die Testkarte 4242 4242 4242 4242 verwenden
  58. 5.Prüfen: Stripe Dashboard > Subscriptions > Subscription im Status "trialing" sichtbar
  59. Zahlungsablauf:

  60. 1.Kunde bestellt Abo-Produkt -- Erste Zahlung über Shopware-Checkout (z.B. Nachnahme)
  61. 2.Bestellbestätigung -- "Automatische Zahlung einrichten" Button
  62. 3.Kunde klickt -- Wird zu Stripe Checkout weitergeleitet
  63. 4.Kunde hinterlegt Zahlungsmethode (Kreditkarte, SEPA-Lastschrift)
  64. 5.Stripe Subscription wird erstellt (Status: trialing bis zum nächsten Verlängerungsdatum)
  65. 6.Am Verlängerungstag: Stripe bucht automatisch ab
  66. 7.Webhook -- Shopware-Bestellung wird erstellt (Status: bezahlt)
  67. 8.Abo wird automatisch verlängert -- nächstes Verlängerungsdatum gesetzt
  68. Erinnerungsablauf bei fehlendem Stripe-Setup:

  69. Tag 0: Bestellung -- "Jetzt einrichten" auf Bestätigungsseite
  70. Tag 3: 1. Erinnerungsmail (konfigurierbar)
  71. Tag 7: 2. Erinnerungsmail (konfigurierbar)
  72. Tag 14: 3. Erinnerungsmail -- letzte Warnung (konfigurierbar)
  73. Tag 21: Abo wird automatisch auf "Abgelaufen" gesetzt (konfigurierbar)
  74. Stripe-Testdaten:

    | Feld | Testwert |

    |---|---|

    | Kartennummer (Erfolg) | 4242 4242 4242 4242 |

    | Kartennummer (3DS) | 4000 0025 0000 3155 |

    | Kartennummer (Abgelehnt) | 4000 0000 0000 0002 |

    | SEPA-IBAN (Test) | DE89 3704 0044 0532 0130 00 |

    | Ablaufdatum | Beliebig in der Zukunft (z.B. 12/30) |

    | CVC | Beliebig (z.B. 123) |

    Funktionen

    Kaufmodelle (Pricing Models)

    Kaufmodelle (bronn_pricing_model) definieren drei Preisoptionen pro Produkt: Einmalkauf, Monatsabo und Jahresabo. Jede Option kann individuell aktiviert, bepreist und beschriftet werden. Die Auswahl erfolgt über Radio-Buttons auf der Produktdetailseite. Der PricingModelCartProcessor (Priorität 4500) passt den Warenkorbpreis je nach gewähltem Modell an.

    Support-Ticket-System

    Das Ticket-System ermöglicht Kunden, produktbezogene Support-Anfragen im Kundenkonto zu erstellen. Tickets (bronn_support_ticket) haben einen Status-Workflow (Offen > In Bearbeitung > Wartend > Gelöst > Geschlossen) und Prioritäten (Niedrig, Normal, Hoch). Ticket-Nachrichten (bronn_support_ticket_message) bilden den Kommunikationsverlauf zwischen Kunde und Support.

    Abo-Verwaltung

    Abonnements (bronn_subscription) werden automatisch bei Bestellungen mit Monats- oder Jahresmodell erstellt. Kunden verwalten ihre Abos im Storefront unter "Meine Abos" -- inklusive Kündigung und Zahlungsmethoden-Setup. Der ScheduledTask verarbeitet fällige Verlängerungen, Erinnerungen und automatische Deaktivierungen.

    Stripe Subscriptions

    Stripe übernimmt den kompletten Billing-Zyklus für Abo-Verlängerungen. Das Plugin erstellt Stripe Products, Prices und Subscriptions über die Stripe API. Die Webhook-Integration verarbeitet invoice.paid (Bestellerstellung + Bezahlt-Status), invoice.payment_failed (Status-Update) und customer.subscription.deleted (Abo-Deaktivierung). Stripes Smart Retry und Dunning ersetzen eigene Retry-Logik.

    Events & Hooks

    Das Plugin löst folgende Flow-Builder-fähige Events aus (alle implementieren FlowEventAware, MailAware, CustomerAware):

  75. **`bronn.subscription.created`** (`BronnProductLicensing\Core\Event\SubscriptionEvent`) -- Ein neues Abonnement wurde erstellt
  76. **`bronn.subscription.renewed`** (`BronnProductLicensing\Core\Event\SubscriptionEvent`) -- Ein Abonnement wurde erfolgreich verlängert (Stripe-Zahlung erfolgreich)
  77. **`bronn.subscription.payment_failed`** (`BronnProductLicensing\Core\Event\SubscriptionEvent`) -- Die automatische Stripe-Zahlung ist fehlgeschlagen
  78. **`bronn.subscription.stripe_setup_reminder`** (`BronnProductLicensing\Core\Event\SubscriptionEvent`) -- Erinnerung: Automatische Zahlung noch nicht eingerichtet
  79. **`bronn.subscription.expired`** (`BronnProductLicensing\Core\Event\SubscriptionEvent`) -- Abonnement wurde deaktiviert (Setup-Timeout oder Zahlungsfehler)
  80. **`bronn.subscription.cancelled`** (`BronnProductLicensing\Core\Event\SubscriptionEvent`) -- Kunde hat das Abonnement gekündigt
  81. Flow Builder Events:

    Alle sechs Plugin-Events sind im Shopware Flow Builder verfügbar und können für automatische Workflows genutzt werden.

    Verfügbare Variablen in allen Events:

    | Variable | Typ | Beschreibung |

    |---|---|---|

    | customer | CustomerEntity | Der zugehörige Kunde |

    | subscription | SubscriptionEntity | Das betroffene Abonnement |

    | productName | string | Name des Abo-Produkts |

    | pricingTypeLabel | string | "monatlich" oder "jaehrlich" |

    | reminderNumber | int | Nummer der Erinnerung (1, 2 oder 3) |

    | isFinalWarning | bool | Letzte Erinnerung vor Deaktivierung |

    | errorMessage | string | Fehlermeldung (bei payment_failed) |

    Alle Events stellen ShopwareSalesChannelEvent-Daten bereit und können mit Mail-Aktionen, Webhooks oder eigenen Flow-Actions kombiniert werden.

    FlowEventSubscriber: Der FlowEventSubscriber registriert alle 6 Events im Shopware Flow Builder. Bei Install und Update werden automatisch 6 Flows mit den zugehoerigen Mail-Aktionen angelegt: Bronn Abo: Abonnement erstellt, Bronn Abo: Abonnement verlaengert, Bronn Abo: Zahlung fehlgeschlagen, Bronn Abo: Abonnement deaktiviert, Bronn Abo: Abonnement gekuendigt, Bronn Abo: Erinnerung Zahlungsmethode.

    Mail-Templates

    Das Plugin registriert 6 Mail-Templates (DE + EN), die im Admin unter Einstellungen > E-Mail-Templates editierbar sind:

    | Template | Technischer Name | Beschreibung |

    |---|---|---|

    | Bronn Abo: Abonnement erstellt | bronn_subscription_created | Bestätigung bei Abo-Erstellung |

    | Bronn Abo: Abonnement verlängert | bronn_subscription_renewed | Bestätigung bei erfolgreicher Verlängerung |

    | Bronn Abo: Zahlung fehlgeschlagen | bronn_subscription_payment_failed | Hinweis bei fehlgeschlagener Stripe-Zahlung |

    | Bronn Abo: Erinnerung Zahlungsmethode | bronn_subscription_stripe_setup_reminder | Erinnerung zur Einrichtung der automatischen Zahlung |

    | Bronn Abo: Abonnement deaktiviert | bronn_subscription_expired | Benachrichtigung bei Abo-Deaktivierung |

    | Bronn Abo: Abonnement gekündigt | bronn_subscription_cancelled | Bestätigung bei Kündigung |

    Textbausteine (Snippets)

    Das Plugin registriert Storefront-Snippets unter dem Namespace bronn-product-licensing in DE und EN:

    Storefront-Snippets (src/Resources/snippet/de_DE/bronn-product-licensing.de-DE.json):

  82. `bronn-product-licensing.pricing.*` -- Kaufmodell-Auswahl (Labels, Tooltips, Preisformate)
  83. `bronn-product-licensing.cart.*` -- Warenkorb-Badges, Checkout-Hinweise, Zahlungsablauf
  84. `bronn-product-licensing.checkout.*` -- Stripe-Setup-Hinweis auf Bestellbestätigung
  85. `bronn-product-licensing.subscription.*` -- Abo-Übersicht im Kundenkonto (Status, Buttons, Meldungen)
  86. `bronn-product-licensing.ticket.*` -- Ticket-System (Formulare, Status, Nachrichten)
  87. `bronn-product-licensing.account.*` -- Account-Menüpunkte
  88. Admin-Snippets (src/Resources/app/administration/src/module/bronn-product-licensing/snippet/de-DE.json, en-GB.json):

  89. `bronn-product-licensing.subscriptions.*` -- Abo-Verwaltung im Admin
  90. `bronn-product-licensing.paymentStatus.*` -- Stripe-Zahlungsstatus
  91. `bronn-product-licensing.pricingModels.*` -- Kaufmodell-Verwaltung
  92. `bronn-product-licensing.settings.*` -- Plugin-Einstellungen
  93. Scheduled Tasks

  94. **`bronn_product_licensing.subscription_renewal`** (`BronnProductLicensing\ScheduledTask\SubscriptionRenewalTask`): Wird täglich ausgeführt (Intervall: 86400 Sekunden / 24 Stunden).
  95. - Verlängert fällige Abos ohne Stripe-Subscription (erstellt neue Bestellung)

    - Abos mit Stripe-Subscription werden übersprungen (Stripe handelt das Billing)

    - Sendet Erinnerungsmails 7 Tage vor Verlängerung

    - Sendet Stripe-Setup-Erinnerungen (nach konfigurierten Tagen)

    - Deaktiviert Abos ohne Stripe-Setup nach konfigurierter Frist

    Manuell testen:

    # Abo auf gestern setzen
    ssh kibronnerconsulting@develop-bronner-consulting.info \
      "cd /var/www/vhosts/develop-bronner-consulting.store/httpdocs && \
       php bin/console dbal:run-sql \"UPDATE bronn_subscription SET next_renewal_date = DATE_SUB(NOW(), INTERVAL 1 DAY) WHERE status = 'active' LIMIT 1\""
    
    # Task manuell ausführen
    ssh kibronnerconsulting@develop-bronner-consulting.info \
      "cd /var/www/vhosts/develop-bronner-consulting.store/httpdocs && \
       php bin/console scheduled-task:run-single bronn_product_licensing.subscription_renewal 2>&1"

    Datenbank-Tabellen

    Das Plugin erstellt folgende Datenbank-Tabellen über 7 Migrationen:

    | Tabelle | Entity-Name | Beschreibung |

    |---|---|---|

    | bronn_pricing_model | bronn_pricing_model | Kaufmodelle pro Produkt (Kauf/Monatlich/Jährlich) |

    | bronn_support_ticket | bronn_support_ticket | Support-Tickets mit Status und Priorität |

    | bronn_support_ticket_message | bronn_support_ticket_message | Ticket-Nachrichten (Kunde <> Admin) |

    | bronn_subscription | bronn_subscription | Abonnements mit Stripe-Integration |

    bronn_subscription Felder:

    | Feld | Typ | Beschreibung |

    |---|---|---|

    | id | BINARY(16) | Primärschlüssel |

    | customer_id | BINARY(16) | FK > customer |

    | product_id | BINARY(16) | FK > product |

    | order_id | BINARY(16) | FK > order (Original-Bestellung) |

    | pricing_type | VARCHAR(50) | "monthly" oder "yearly" |

    | price | DOUBLE | Abo-Preis |

    | status | VARCHAR(50) | "active", "cancelled", "expired" |

    | next_renewal_date | DATETIME(3) | Nächstes Verlängerungsdatum |

    | cancelled_at | DATETIME(3) | Kündigungszeitpunkt |

    | reminder_sent_at | DATETIME(3) | Erinnerung gesendet am |

    | stripe_customer_id | VARCHAR(255) | Stripe Customer ID (cus_xxx) |

    | stripe_payment_method_id | VARCHAR(255) | Stripe PaymentMethod ID (pm_xxx) |

    | stripe_subscription_id | VARCHAR(255) | Stripe Subscription ID (sub_xxx) |

    | stripe_payment_status | VARCHAR(50) | pending, succeeded, failed, requires_action |

    | stripe_last_error | TEXT | Letzte Stripe-Fehlermeldung |

    | payment_retry_count | INT | Anzahl Erinnerungen / Zahlungsversuche |

    Migrationen:

  96. `Migration1743552010PricingModel`
  97. `Migration1743552011SupportTicket`
  98. `Migration1743552012SupportTicketMessage`
  99. `Migration1743552013Subscription`
  100. `Migration1744156800AddStripeFields`
  101. `Migration1744160400AddStripeSubscriptionId`
  102. `Migration1744164000CreateMailTemplates`
  103. `Migration1744167600AddMailTemplateDescriptions`
  104. Admin-Integration

    Das Plugin registriert ein eigenes Admin-Modul bronn-product-licensing mit folgenden Menüpunkten:

    Navigation:

  105. **Kunden > Support-Tickets** (Position 110) -- Ticket-Übersicht und -Verwaltung
  106. **Kunden > Abonnements** (Position 111) -- Abo-Übersicht mit Stripe-Status
  107. **Kataloge > Kaufmodelle** (Position 60) -- Kaufmodell-Verwaltung pro Produkt
  108. **Einstellungen > Erweiterungen > Kaufmodelle, Tickets & Abos** -- Plugin-Konfiguration
  109. Seiten:

  110. `bronn-product-licensing-list` -- Support-Ticket-Liste
  111. `bronn-product-licensing-detail` -- Ticket-Detail mit Nachrichten und Antworten
  112. `bronn-subscription-list` -- Abo-Liste (Kunde, Produkt, Typ, Preis, Status, Verlängerung)
  113. `bronn-subscription-detail` -- Abo-Detail mit Zahlungsinformationen (Stripe) und Simulationsbutton
  114. `bronn-pricing-model-list` -- Kaufmodell-Liste
  115. `bronn-pricing-model-detail` -- Kaufmodell bearbeiten (Kauf/Monatlich/Jährlich pro Produkt)
  116. Abo-Detail Zahlungsinformationen:

    Die Abo-Detailseite zeigt eine Card "Zahlungsinformationen (Stripe)" mit:

  117. Zahlungsstatus (Erfolgreich/Fehlgeschlagen/Ausstehend)
  118. Stripe Customer ID
  119. Stripe Subscription ID
  120. Stripe PaymentMethod ID
  121. Zahlungsversuche (X / 3)
  122. Letzter Fehler
  123. Storefront-Integration

    Das Plugin erweitert den Account-Bereich und den Checkout im Storefront:

    Account-Seiten (src/Resources/views/storefront/page/account/):

  124. `subscription/index.html.twig` -- Abo-Übersicht mit Status, Stripe-Setup-Button und Kündigung
  125. `ticket/index.html.twig` -- Ticket-Liste
  126. `ticket/create.html.twig` -- Neues Ticket erstellen
  127. `ticket/detail.html.twig` -- Ticket-Detail mit Nachrichtenverlauf
  128. Checkout-Erweiterungen:

  129. `page/checkout/confirm/index.html.twig` -- Abo-Hinweis + detaillierter Zahlungsablauf mit konfigurierter Ablaufrist
  130. `page/checkout/finish/index.html.twig` -- "Jetzt einrichten"-Button für Stripe-Setup nach Bestellung
  131. Produktdetailseite:

  132. `component/buy-widget/buy-widget-form.html.twig` -- Kaufmodell-Auswahl (Radio-Buttons) mit Info-Tooltip für Abo-Optionen
  133. Warenkorb:

  134. `component/line-item/element/*.html.twig` -- Monatsabo/Jahresabo-Badges neben Produktnamen
  135. Storefront-Routen:

    | Route | Methode | Beschreibung |

    |---|---|---|

    | /account/subscriptions | GET | Abo-Übersicht |

    | /account/subscriptions/{id}/cancel | POST | Abo kündigen (inkl. Stripe) |

    | /account/subscriptions/{id}/setup-payment | POST | Stripe Checkout Session starten |

    | /account/subscriptions/{id}/stripe-callback | GET | Stripe Callback nach Setup |

    | /account/support-tickets | GET | Ticket-Liste |

    | /account/support-tickets/create | GET/POST | Neues Ticket |

    | /account/support-tickets/{id} | GET | Ticket-Detail |

    | /account/support-tickets/{id}/reply | POST | Ticket-Antwort |

    API-Routen:

    | Route | Methode | Beschreibung |

    |---|---|---|

    | /api/_action/bronn-product-licensing/simulate-renewal/{id} | POST | Abo-Verlängerung simulieren (Auth erforderlich) |

    | /api/bronn-product-licensing/stripe-webhook | POST | Stripe Webhook-Endpunkt (Signatur-Verifizierung) |

    Kompatibilität

  136. Vollständig kompatibel mit allen anderen Plugins der Bronner B2B Suite
  137. Kompatibel mit Standard-Shopware-Themes und gängigen Theme-Erweiterungen
  138. Getestet mit Shopware 6.7.x
  139. Unterstützt Multi-Language (DE/EN)
  140. Unterstützt Multi-Sales-Channel
  141. Stripe-Integration: Kreditkarte, SEPA-Lastschrift, und weitere von Stripe unterstützte Zahlungsmethoden
  142. Aktuelle Version: 1.9.9

    Aenderungen v1.9.9 (09.04.2026):

  143. Admin Ticket-Liste zeigt Produktname inkl. Varianten-Aufloesung
  144. Responsive Abo- und Ticket-Tabellen auf Mobile
  145. 6 Flows automatisch angelegt bei Install/Update
  146. FlowEventSubscriber registriert alle 6 Abo-Events im Flow Builder
  147. FAQ

    Bereit für professionelles B2B?

    Statt 30.000–80.000 € Individualentwicklung: fertige, getestete Plugins — einsatzbereit in Stunden.

    • Alle 12 Plugins im vollen Funktionsumfang
    • Persönliche Einführung durch den Entwickler
    • Individuelle Beratung für deinen Use Case

    Keine Kreditkarte nötig · Unverbindlich · Antwort innerhalb von 24h