Membership in Joomla mit Stripe, Webhooks und belastbarer Zustandslogik
JoomSubs entstand mit dem Ziel, Stripe-Abonnements sauber mit Joomla-Benutzergruppen zu verbinden. Im Mittelpunkt standen nicht nur Checkout und Zahlung, sondern der komplette Subscription-Lifecycle: Webhooks, Tarifwechsel, Kündigung, Reaktivierung, Recovery und Reconciliation.
Ausgangslage
Ein Membership-System muss Zahlungsstatus und realen Joomla-Zugriff konsistent halten. Genau dort entstehen die schwierigen Fälle: Webhooks kommen verspätet oder doppelt, Zahlungen benötigen 3D Secure, Tarifwechsel greifen erst später und Gruppenrechte dürfen trotzdem nie in einem falschen Zustand bleiben.
Asynchrone Events
Stripe-Events kommen unabhängig vom Browser und müssen idempotent sowie wiederholbar verarbeitet werden.
Zugriff aus Zahlungsstatus
Joomla-Gruppen dürfen nur auf Basis eines konsistenten Subscription-Zustands gesetzt oder entfernt werden.
Tarifwechsel
Sofortige und vorgemerkte Wechsel brauchen unterschiedliche Behandlung von Proration und Laufzeit.
Fehlerfälle
Fehlgeschlagene Event-Verarbeitung muss später gezielt wieder aufgenommen werden können.
Die technische Struktur
Stripe bleibt die Quelle für Checkout, Zahlung und Subscription-Lifecycle.
Webhook Events werden zunächst gespeichert und erst danach kontrolliert verarbeitet.
Eine Access Engine übersetzt den gültigen Abo-Zustand in Joomla-Gruppen und Zugriffsrechte.
Regelmäßige Vergleiche erkennen Abweichungen zwischen Stripe und Joomla und erlauben Safe Repair.
Wichtige Meilensteine
Abschluss, Abbruch und Rückkehrtexte wurden für reale Benutzerflüsse umgesetzt.
Vorgemerkte Kündigungen und Rücknahmen wurden in den laufenden Abo-Zustand integriert.
Sofortige und vorgemerkte Wechsel inklusive optionaler Proration wurden ergänzt.
Zahlungsmethoden und zusätzliche Authentifizierung wurden praktisch getestet.
Fehlgeschlagene invoice.paid-Verarbeitung konnte nach Fehlerbehebung gezielt erneut ausgeführt werden.
Mehrere RC-Gates wurden mit Scheduler-, Sync- und Recovery-Tests abgesichert.
Was technisch besonders interessant war
Doppelklicks oder wiederholte Requests dürfen keine doppelten Checkouts oder widersprüchlichen Zustände erzeugen. Idempotenz und Konfliktantworten wurden deshalb explizit berücksichtigt.
Ein Browser-Redirect ist kein verlässlicher Beleg für Zahlungsstatus. Der gültige Zustand wird aus Stripe-Events und serverseitigem Sync abgeleitet.
Reconciliation zeigte, dass Membership-Zustand und Joomla-Gruppen aktiv verglichen werden müssen. Safe Repair kann erkannte Abweichungen kontrolliert korrigieren.
Tests und belastbare Nachweise
Abbruch, Erfolg, 3D Secure und Doppelklick-/409-Sonderfälle wurden praktisch durchgespielt.
Mehrere Mitglieder und Abos wurden zwischen Stripe und Joomla synchronisiert und Gruppenrechte geprüft.
Scheduled Tasks und Recovery-Pfade wurden wiederholt ausgeführt, um asynchrone Abläufe abzusichern.
Aus Checkout wurde ein vollständiger Membership-Lifecycle
JoomSubs wurde von einer einfachen Checkout-Integration zu einem Membership-Lifecycle-System weiterentwickelt. Der wichtigste Architekturpunkt ist die Trennung zwischen Stripe als Zahlungsquelle, Webhook-Inbox als nachvollziehbare Ereignisschicht und Joomla-Gruppen als tatsächliche Access Engine.
Sie benötigen Stripe-Mitgliedschaften mit Joomla-Zugriffsrechten?
Die JoomSubs-Architektur ist besonders relevant, wenn Zahlungsstatus, Gruppenrechte und asynchrone Events zuverlässig zusammengeführt werden müssen.