Stripe-Integration (S7.4): Payment-Dashboard für Stripe

- Provider-Status/Uptime: Stripe-Kachel aktiviert; payment:check-uptime prüft
  zusätzlich api.stripe.com/v1/ (401 ohne Key = erreichbar) inkl. Auto-Incident
- Zahlungen: Anbieter-Filter, Provider-Badges, Umsatz je Provider,
  Stripe-Dashboard-Deep-Links (ShoppingPayment/PaymentTransaction::
  stripeDashboardUrl, pi_-Guard, testmodus-bewusst)
- Rohe Transaktionen: Anbieter-Filter/-Spalte, Erfolgsraten je Anbieter;
  Bugfix: Stringable-Vergleich ließ den txaction-Filter immer mit leerem Wert
  greifen — Liste war dauerhaft leer
- Neue Kachel „Abos je Anbieter" (Index + GF-Ansicht) mit Fehlerzählern und
  Stripe-Anteil-Fortschrittsbalken (Auslaufmodell PAYONE → Stripe ablesbar)
- Incident-Kachel weist Stripe/PAYONE getrennt aus; Log-Viewer mit
  Kanal-Umschalter stripe/payone
- Plan-Doku: S7.4-Umsetzungsstatus, Abo-Go-Live 2026-07-10 vermerkt

Tests: PaymentDashboardProviderTest (9 neu), Dashboard-Suite 49 grün.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin 2026-07-10 16:57:50 +00:00
parent ce4750fd1a
commit 8e09aaefe8
13 changed files with 600 additions and 45 deletions

View file

@ -13,12 +13,16 @@ class CheckPaymentUptime extends Command
{
protected $signature = 'payment:check-uptime';
protected $description = 'Prüft die Erreichbarkeit von PAYONE und legt bei Ausfall automatisch einen Incident an.';
protected $description = 'Prüft die Erreichbarkeit von Stripe und PAYONE und legt bei Ausfall automatisch einen Incident an.';
/**
* Ein HTTP-Status < 500 gilt als erreichbar — bei Stripe antwortet /v1/ ohne
* API-Key mit 401, was Erreichbarkeit belegt, ohne einen Key zu benötigen.
*
* @var array<string, string>
*/
private array $endpoints = [
'stripe' => 'https://api.stripe.com/v1/',
'payone' => 'https://api.pay1.de/post-gateway/',
];