WebBlocks Memberships
Memberships 0.2.0 vereint Besucherkonten, kostenlose oder manuell vergebene Mitgliedschaftspakete, kostenpflichtige Abonnements und automatische Verlängerungen in einem Plugin. Es benötigt WebBlocks CMS ab 1.100.0 innerhalb der 1.x-Reihe. Die Abrechnung nutzt optional die Zahlungsanbieter von Commerce 0.16.0; kostenlose und manuell verwaltete Mitgliedschaften funktionieren weiterhin ohne Commerce.
Voraussetzungen und Installation
Diese Anleitung beschreibt Memberships 0.2.0. Erforderlich sind PHP ab 8.4 und WebBlocks CMS ^1.100.0. Kostenpflichtige Tarife verwenden zusätzlich Commerce ^0.16.
Laden Sie die passende ZIP-Datei von der Memberships-Katalogseite herunter. Installieren und aktivieren Sie sie unter System → Plugins und prüfen Sie, ob die Datenbankeinrichtung erfolgreich abgeschlossen wurde. Konfigurieren Sie die kanonische Domain und den ausgehenden E-Mail-Versand des CMS, bevor Sie Besucher einladen. Öffnen Sie Memberships und wählen Sie die Website aus, deren Konten und Pakete Sie verwalten möchten.
Mitgliedskonten
Für Registrierung, Anmeldung, Passwortzurücksetzung und die Anzeige von Mitgliedschaften verwenden Sie den nativen Account-Block oder die Website-Route /plugins/webblocks-memberships/account. Die Teilnahme an Paketen und Inhalte nur für Mitglieder setzen eine bestätigte E-Mail-Adresse voraus. Die Website benötigt eine kanonische Domain und konfigurierten CMS-E-Mail-Versand. Bestätigungslinks gelten 24 Stunden, Links zum Zurücksetzen des Passworts eine Stunde. GET zeigt ein Bestätigungsformular; erst ein CSRF-geschützter POST verbraucht den Link. Passwortzurücksetzung und Kontodeaktivierung machen bestehende Mitgliedssitzungen ungültig.
Pakete und Zugriff
Das websitebezogene Memberships-Panel verwaltet Pakete und Mitgliedschaftszuweisungen. Pakete können eine kostenlose Selbstanmeldung erlauben oder eine Zuweisung durch einen Operator verlangen. Operatoren legen Beginn und Ende in UTC oder mit explizitem Zeitzonenoffset fest, verlängern oder widerrufen Zuweisungen und aktivieren oder deaktivieren Konten. Besucherkonten sind von CMS-Administratoren getrennt.
Im Panel lässt sich eine Seite öffentlich, für bestätigte Mitglieder oder für Inhaber eines bestimmten Pakets freigeben. Ist Memberships nicht verfügbar, bleiben geschützte Seiten gesperrt und erscheinen weder in der öffentlichen Suche noch in Sitemap, automatischen Seitenlisten oder Navigation. Eine Inhaltsversion wiederherzustellen entfernt den aktuellen Schutz nicht. Kopien übernehmen ihn ebenfalls. Ein Downgrade unter CMS 1.99.0 kann diese neuen Regeln nicht durchsetzen; nehmen Sie geschützte Seiten vorher aus der Veröffentlichung. Exportierte geschützte Seiten sind Entwürfe. Importierte Paketberechtigungen müssen ausdrücklich einem lokalen Paket zugeordnet werden, bevor Mitglieder Zugriff erhalten.
Der Seitenzugriff schützt die gerenderte Seite, nicht eine bereits öffentliche Datei-URL. Vertrauliche Medien benötigen einen privaten, nicht öffentlich erreichbaren Dateisystem-Datenträger. Private Medien, die ein veröffentlichter Block einer geschützten Seite verwendet, können unter derselben Mitgliedschaftsprüfung über /plugins/webblocks-memberships/downloads/{page}/{media} bereitgestellt werden.
Appointments-Integration
Appointments verwendet Memberships optional. Die Anmeldung kann Kundendaten vorausfüllen und eine Buchung dem bestätigten Mitglied zuordnen. Ein Angebot kann ein bestätigtes Mitglied oder ein aktives Paket verlangen. Ohne Memberships sind normale Gastbuchungen weiterhin möglich; eingeschränkte Angebote bleiben nicht verfügbar. Die Kundendaten vergangener Buchungen bleiben erhalten.
Verwaltung über die API
Die Internal Content API stellt /webadmin/api/plugins/webblocks-memberships?site_id=... mit memberships.read bereit. POST-Vorgänge benötigen memberships.write und eine ausdrücklich angegebene, autorisierte site_id: package, package/{id}, grant, revoke/{id}, member/{id} und access. Persönliche API-Token müssen zusätzlich den aktuell delegierten Websiteumfang erfüllen.
Die frühere Version 0.1.0 unterstützt kostenlose und manuell vergebene Mitgliedschaften ohne kostenpflichtige Abrechnung. Englische UI-Quelltexte und türkische Übersetzungen liegen in Sprachkatalogen vor; die übrigen Kataloge verwenden derzeit englische Ersatztexte.
Bei der Registrierung werden zunächst Name und E-Mail-Adresse erfasst. Der Bestätigungs-POST legt das Kontopasswort fest und macht frühere Sitzungen ungültig. So kann ein Dritter kein Passwort behalten, das vor dem Nachweis des E-Mail-Besitzes gewählt wurde. Passwortzurücksetzungen für ausstehende Konten erzeugen stattdessen einen Bestätigungslink.
Kostenpflichtige Abonnements (0.2.0)
Diese Phase bleibt Bestandteil von Memberships. Sie benötigt den Zahlungsvertrag von CMS 1.100.0 und die Anbieterimplementierung von Commerce 0.16.0. Appointments 0.16.1 unterstützt Memberships 0.1 und 0.2 über das bestehende Mitgliederverzeichnis.
Konfigurieren Sie die Zahlungszugangsdaten einmalig in Commerce. Memberships dupliziert sie nicht. Erstellen Sie im Memberships-Panel einen monatlichen oder jährlichen Tarif mit ganzzahligem Preis in kleinsten Währungseinheiten, Währung und Anbieterauswahl. EUR 1000 bedeutet EUR 10.00. Monatliche Intervallanzahlen liegen zwischen 1–12; jährlich ist 1 zulässig. Bestehende Abonnementpreise bleiben fest. Ein neuer Tarif verändert eine vorhandene Autorisierung nicht stillschweigend.
Ein bestätigtes Mitglied stimmt der Verlängerung ausdrücklich zu. PayPal verwendet seine eigene Abonnementfreigabe und Abrechnung. SumUp erfasst Zustimmung und ein gespeichertes Kartentoken über sein Zahlungswidget. Die vorläufige Einrichtungszahlung von 1 Einheit wird erstattet und kauft keine Mitgliedschaft. Zugriff beginnt erst nach serverseitiger Bestätigung einer Abonnementzahlung; manuelle Zuweisungen bleiben unabhängig. Kostenpflichtiger Paketzugriff funktioniert auch für eingeschränkte Appointments-Angebote, ohne Zahlungslogik dorthin zu kopieren.
Führen Sie den Laravel-Scheduler des Hosts jede Minute aus. Memberships registriert einen fünfminütigen Abgleich und autorisierte SumUp-Verlängerungen. PayPal führt seine Verlängerungen selbst aus; sie werden lokal abgeglichen. Eine Ablehnung oder ein abgelaufener bezahlter Zeitraum gewährt keinen Zugriff. Unklare Anfragen werden anhand derselben Anbieterreferenz geprüft, statt blind erneut belastet zu werden. Ein vollständig versäumter SumUp-Zeitraum erfordert eine neue Anmeldung. Kündigungen stoppen zukünftige Verlängerungsanfragen; bereits angeforderte Abbuchungen können noch abgeschlossen werden. Bis die Kündigung einer externen Vereinbarung bestätigt ist, bleibt sie ausstehend. Bezahlter Zugriff gilt bis zum Periodenende, außer für erstattete oder rückgängig gemachte Zeiträume.
Ergänzen Sie Abonnement- und Verkaufsthemen am bestehenden Commerce-PayPal-Webhook. SumUp-Zahlungen verwenden den Memberships-Callback der kanonischen Website. Prüfen Sie Händlerberechtigungen, gespeicherte Karten/SCA und Callback-Zustellung in der Sandbox dieses Händlers, bevor Sie Live-Tarife aktivieren. Kündigen Sie externe Vereinbarungen, bevor Sie Abrechnungsplugins oder ihre Anbieterkonfiguration dauerhaft entfernen.
Der bestehende API-Websiteumfang und memberships.read/memberships.write decken Tarife, Abonnements und Zahlungsverlauf ab. POST /plugins/webblocks-memberships/plan erstellt einen Tarif; /stop-plan/{id} schließt ihn und fordert die Kündigung von Verlängerungen an. POST /plugins/webblocks-memberships/billing/{subscription-uuid}/refresh beziehungsweise /cancel gleicht ein Abonnement der eigenen Website ab oder kündigt es. Beträge, Mitgliedszugehörigkeit und Paketumfang werden serverseitig geprüft. Kartentoken und geheime Freigabe-/Anfragewerte erscheinen nicht in API-Ausgaben.
Anbieterverträge: PayPal-Abonnements, PayPal-Abrechnungsintervalle, SumUp-Tokenisierung, SumUp-Zahlungs- und Transaktionsnachweise.
Fehlerbehebung und verwandte Anleitungen
Wenn Konto-E-Mails ausbleiben, prüfen Sie vor einer erneuten Bestätigungsanforderung den CMS-E-Mail-Versand und die kanonische Domain. Kann ein Mitglied eine geschützte Seite nicht öffnen, prüfen Sie E-Mail-Bestätigung, Kontostatus, erforderliches Paket sowie Beginn und Ende der Zuweisung. Bezahlter Zugriff benötigt zusätzlich bestätigte Zahlungsnachweise des Anbieters; einen Tarif zu aktivieren gewährt allein keinen Zugriff.
Kehren Sie zur Plugin-Übersicht zurück, konfigurieren Sie Zahlungsanbieter mit der Commerce-Anleitung oder lesen Sie die optionale Appointments-Integration.