This commit is contained in:
2026-05-20 00:09:28 +02:00
parent 968bf7d102
commit 51b5ddc6f2
695 changed files with 999722 additions and 270 deletions

View File

@@ -0,0 +1,40 @@
# AZA License Bridge & WP Desk Flexible Subscriptions
## Kontext
Auf der Produktivseite ist **WP Desk Flexible Subscriptions** aktiv, nicht das klassische Plugin **WooCommerce Subscriptions**.
Die öffentliche Woo-REST-Route `/wp-json/wc/v3/subscriptions` kann fehlen oder durch Hosting/WAF blockiert werden unabhängig davon liefert Flexible Subscriptions laut WP-Desk-Doku u. a.:
- `next_payment_date_gmt` (REST)
- `billing_period` als **Einzelbuchstabe**: `D`, `W`, `M`, `Y`
- `billing_interval` (Integer)
## Root Cause (Kurz)
1. **AZA-Hetzner** soll **keine** Abo-Perioden mehr ausschließlich über Shop-REST laden müssen.
2. Die **WordPress-Bridge** kennt das Subscription-Objekt lokal und kann **next payment + billing** an den Server schicken.
3. Backend (`wc_period_payload.py`) normalisiert **`M/D/W/Y` → month/day/week/year** für die Periodenberechnung.
## Endpunkte auf Hetzner (nach Deploy des Backend-Codes)
| Methode | Pfad | Auth |
|--------|------|------|
| POST | `/wc/provision` | `X-WC-Secret` = `WC_PROVISION_SECRET` |
| POST | `/wc/subscription_period` | gleiches Secret |
`subscription_period` aktualisiert nur `current_period_start`, `current_period_end`, `updated_at` für Zeilen `subscription_id LIKE 'wc_sub_%'` und `status = active`.
## Plugin-Verhalten (Repo-Stand)
- `woocommerce_subscription_status_active` Priorität **10**: Lizenz-Provisioning (wie bisher).
- Dieselbe Action Priorität **20**: `aza_lb_after_subscription_active_push_period` → POST `/wc/subscription_period`.
Flexible Subscriptions setzt in der Regel dieselbe Hook-Familie voraus (WCS-kompatibel); wenn der Hook auf einer Installation **nicht** feuert, bitte WP-Desk-Doku oder Support zu den **Status-Wechsel-Hooks** prüfen und ggf. einen weiteren Hook ergänzen (ohne AZA-Core zu ändern).
## Logs
`wp-content/uploads/aza-logs/license-bridge.log` — Einträge `PERIOD PUSH …` ohne Klartext-Secrets.
## Snippet
Zusätzlich: `snippets/phase1f-period-endpoint-snippet.php` (Referenz für Code-Snippets-Plugin).