Zum Inhalt springen

Abonnements

Das Modul fuegt Produkte mit wiederkehrender Zahlung hinzu. Kunden kaufen Abonnements mit manueller Verlaengerung, der Administrator verwaltet sie in WooCommerce.

  1. Der Administrator erstellt ein Produkt vom Typ “Abonnement” mit Zyklus und Preis
  2. Der Kunde kauft ein Abonnement und bezahlt die erste Bestellung
  3. Das Plugin erstellt ein Abonnement mit dem Status “Aktiv”
  4. Vor dem Verlaengerungsdatum erhaelt der Kunde eine Erinnerungs-E-Mail
  5. Am Verlaengerungstag erstellt das Plugin eine Verlaengerungsbestellung
  6. Der Kunde bezahlt die Verlaengerungsbestellung (manuelle Verlaengerung)
  7. Der Zyklus wiederholt sich bis zur Kuendigung des Abonnements

Gehen Sie zu WooCommerce > Einstellungen > Polski > PRO-Module > Abonnements.

Das Modul wird ueber die Option gesteuert:

polski_subscriptions
EinstellungBeschreibung
Abonnements aktivierenAktiviert das Modul
VerlaengerungsmodusManuell (Kunde bezahlt die Bestellung)
ErinnerungstageWie viele Tage vor der Verlaengerung eine Erinnerung gesendet wird (Standard 3)
KarenzzeitWie viele Tage nach dem Verlaengerungstermin das Abonnement aktiv bleibt (Standard 7)
Automatische AussetzungAbonnement nach Ablauf der Karenzzeit aussetzen
  1. Gehen Sie zu Produkte > Neu hinzufuegen
  2. Waehlen Sie den Produkttyp: Abonnement
  3. Konfigurieren Sie Preis und Zyklus:
FeldBeschreibung
AbonnementpreisBetrag pro Abrechnungszeitraum
AbrechnungszeitraumTag / Woche / Monat / Jahr
ZeitraumlaengeAnzahl der Zeitraeume (z. B. 1 Monat, 3 Monate)
AnfangspreisOptional - anderer Preis fuer den ersten Zeitraum
AktivierungsgebuehrOptional - einmalige Gebuehr bei der ersten Bestellung
Verlaengerungslimit0 = unbegrenzt, oder Anzahl der Verlaengerungen
  1. Veroeffentlichen Sie das Produkt

Das Plugin unterstuetzt Szenarien, in denen der Preis fuer den ersten Zeitraum vom Preis fuer die folgenden Zeitraeume abweicht. Typische Anwendungsfaelle:

  • kostenloser oder ermaessigter Testzeitraum
  • Aktionspreis zum Start
  • Aktivierungsgebuehr + niedrigerer wiederkehrender Preis

Der Anfangspreis wird nur fuer die erste Bestellung angewendet. Folgende Verlaengerungsbestellungen verwenden den Standard-Abonnementpreis.

Pending → Active → On Hold → Active → ...
→ Expired
→ Cancelled
StatusBeschreibung
PendingWartet auf Bezahlung der ersten Bestellung
ActiveAktiv - Kunde hat Zugang zum Produkt
On HoldAusgesetzt - Verlaengerungsbestellung wartet auf Bezahlung
ExpiredAbgelaufen - Verlaengerungslimit erreicht oder Karenzzeit ueberschritten
CancelledGekuendigt durch Kunde oder Administrator

In der aktuellen Version unterstuetzt das Plugin manuelle Verlaengerungen. Das bedeutet:

  1. Das Plugin erstellt eine Verlaengerungsbestellung mit dem Status “Warten auf Zahlung”
  2. Der Kunde erhaelt eine E-Mail mit einem Link zur Bezahlung der Bestellung
  3. Der Kunde bezahlt die Bestellung mit der gewaehlten Zahlungsmethode
  4. Nach der Bezahlung wird das Abonnement fuer den naechsten Zeitraum verlaengert

Das Plugin prueft Abonnements zur Verlaengerung taeglich mittels WP-Cron:

polski_daily_maintenance

Die Cron-Aufgabe wird einmal taeglich ausgefuehrt und fuehrt Folgendes durch:

  • Pruefung der Abonnements, deren Verlaengerungsdatum auf heute oder frueher faellt
  • Erstellung von Verlaengerungsbestellungen fuer Abonnements, die eine Verlaengerung benoetigen
  • Aussetzung von Abonnements, die die Karenzzeit ueberschritten haben
  • Auslaufen von Abonnements, die das Verlaengerungslimit erreicht haben

Das Plugin sendet E-Mail-Erinnerungen vor dem Verlaengerungsdatum:

E-MailZeitpunktInhalt
VerlaengerungserinnerungX Tage vor der VerlaengerungInformation ueber die bevorstehende Verlaengerung, Betrag, Link zum Panel
VerlaengerungsbestellungAm VerlaengerungstagBestellung zur Bezahlung mit Zahlungslink
Abonnement ausgesetztNach Ablauf der ZahlungsfristInformation ueber die Aussetzung, Zahlungslink
Abonnement abgelaufenNach Ablauf der KarenzzeitInformation ueber den Ablauf, Link zum erneuten Kauf

E-Mail-Vorlagen koennen unter WooCommerce > Einstellungen > E-Mails angepasst werden.

Das Modul fuegt den Endpunkt /polski-subscriptions zum Mein-Konto-Bereich des Kunden hinzu. Der Endpunkt ist unter folgender Adresse erreichbar:

/moje-konto/polski-subscriptions/

Der Kunde sieht eine Tabelle mit Abonnements:

SpalteBeschreibung
ProduktName des Abonnementprodukts
StatusAktueller Abonnementstatus
PreisBetrag pro Zeitraum
Naechste VerlaengerungDatum der naechsten Verlaengerung
AktionenKuendigen / Verlaengerung bezahlen

Nach Klick auf ein Abonnement sieht der Kunde:

  • vollstaendige Abonnementdaten (Produkt, Preis, Zyklus, Daten)
  • Verlaengerungshistorie (Liste verknuepfter Bestellungen)
  • Schaltflaeche zur Kuendigung des Abonnements
  • Schaltflaeche zur Bezahlung einer ausstehenden Verlaengerung (falls zutreffend)

Der Kunde kann ein aktives Abonnement aus dem Mein-Konto-Bereich kuendigen. Die Kuendigung:

  • aendert den Abonnementstatus auf “Cancelled”
  • das Abonnement bleibt bis zum Ende des aktuellen bezahlten Zeitraums aktiv
  • der Kunde wird ueber das Enddatum des Zugangs informiert

Aktion, die nach Aenderung des Abonnementstatus ausgefuehrt wird.

/**
* @param int $subscription_id ID subskrypcji
* @param string $new_status Nowy status
* @param string $old_status Poprzedni status
*/
do_action('polski_pro/subscription/status_changed', int $subscription_id, string $new_status, string $old_status);

Beispiel:

add_action('polski_pro/subscription/status_changed', function (int $subscription_id, string $new_status, string $old_status): void {
if ($new_status === 'cancelled') {
$subscription = polski_pro_get_subscription($subscription_id);
// Wysłanie ankiety o powód rezygnacji
wp_mail(
$subscription->get_customer_email(),
'Szkoda, że odchodzisz',
'Powiedz nam, dlaczego anulujesz subskrypcję: https://example.com/ankieta'
);
}
}, 10, 3);

Aktion, die nach Erstellung einer Verlaengerungsbestellung ausgefuehrt wird.

/**
* @param int $order_id ID zamówienia odnowienia
* @param int $subscription_id ID subskrypcji
*/
do_action('polski_pro/subscription/renewal_created', int $order_id, int $subscription_id);

Beispiel:

add_action('polski_pro/subscription/renewal_created', function (int $order_id, int $subscription_id): void {
$order = wc_get_order($order_id);
$order->add_order_note(
sprintf('Zamówienie odnowienia dla subskrypcji #%d', $subscription_id)
);
}, 10, 2);

Aktion, die nach Bezahlung einer Verlaengerungsbestellung ausgefuehrt wird.

/**
* @param int $order_id ID zamówienia odnowienia
* @param int $subscription_id ID subskrypcji
*/
do_action('polski_pro/subscription/renewal_paid', int $order_id, int $subscription_id);

Die Erinnerungs-Engine (standardmaessig 14 + 7 Tage vor der Verlaengerung) bietet Filter und Aktionen zur vollstaendigen Anpassung:

add_filter('polski_subscription_reminder_windows', fn ($w) => ['first' => 21, 'second' => 7, 'last' => 1]);
add_filter('polski_subscription_reminder_subject', fn ($s, $sub, $type) => "[$type] $s", 10, 3);
add_filter('polski_subscription_reminder_body', fn ($b, $sub, $type) => $b . "\n\nDanke!", 10, 3);
add_filter('polski_subscription_reminder_headers', fn () => ['Content-Type: text/html; charset=UTF-8']);
add_filter('polski_subscription_skip_reminder', fn ($skip, $sub) => $sub->productId === 42, 10, 2);
add_action('polski_subscription_reminder_sent', fn ($sub, $type, $days) => null, 10, 3);
add_action('polski_subscription_reminder_failed', fn ($sub, $type) => null, 10, 2);

SubscriptionRepository::updateRecurringAmount() erkennt Aenderungen des Abrechnungsbetrags und sendet automatisch eine E-Mail mit alter/neuer Preisangabe, Inkrafttreten (naechster Abrechnungszyklus) und einem One-Click-Kuendigungslink (EU-Verbraucherschutz).

add_action('polski_subscription_amount_changed', function (int $id, float $prev, float $next) {
error_log("Subscription $id: $prev -> $next");
}, 10, 3);
add_filter('polski_subscription_amount_change_body', fn ($body, $sub, $prev, $next) => $body, 10, 4);
add_action('polski_subscription_amount_change_notified', fn ($sub, $prev, $next, $sent) => null, 10, 4);

Gehen Sie zu WooCommerce > Abonnements. Die Tabelle enthaelt:

  • Abonnement-ID
  • Kunde (Vorname, Nachname, E-Mail)
  • Produkt
  • Status
  • Preis und Zyklus
  • Datum der naechsten Verlaengerung
  • Erstellungsdatum

Verfuegbare Filter: Status, Produkt, Erstellungsdatum.

Der Administrator kann:

  • Abonnementstatus aendern
  • Datum der naechsten Verlaengerung aendern
  • Preis aendern (wirkt sich auf zukuenftige Verlaengerungen aus)
  • Notiz hinzufuegen
  • Statushistorie und verknuepfte Bestellungen anzeigen
  1. Pruefen Sie, ob WP-Cron korrekt funktioniert (wp_cron wird aufgerufen)
  2. Gehen Sie zu Werkzeuge > Scheduled Actions und pruefen Sie, ob die Aufgabe polski_daily_maintenance geplant ist
  3. Ueberpruefen Sie, ob das Abonnement den Status “Active” und ein korrektes Verlaengerungsdatum hat
  1. Pruefen Sie die WooCommerce-E-Mail-Konfiguration
  2. Ueberpruefen Sie, ob die Erinnerungs-E-Mail-Vorlage aktiviert ist
  3. Pruefen Sie die Einstellung “Erinnerungstage” - ob sie groesser als 0 ist

Abonnement aendert den Status nach Bezahlung nicht

Abschnitt betitelt „Abonnement aendert den Status nach Bezahlung nicht“
  1. Pruefen Sie, ob die Verlaengerungsbestellung korrekt mit dem Abonnement verknuepft ist
  2. Ueberpruefen Sie die WooCommerce-Logs auf Fehler
  3. Pruefen Sie, ob das Zahlungsgateway den Bestellstatus korrekt aendert
Diese Seite dient ausschließlich zu Informationszwecken und stellt keine Rechtsberatung dar. Konsultieren Sie vor der Umsetzung einen Anwalt. Polski for WooCommerce ist Open-Source-Software (GPLv2) ohne Garantie.