Wallet-Topup ueber Stripe (Credit-Pakete mit Bonus-Staffel)

End-to-end-Aufladung der Credit-Wallet, spiegelt den Einzel-PM-Fluss:

- Paket-Staffel mit Bonus in config/credits.php (10->10, 25->27, 50->55,
  100->115 Credits; price_cents netto, Stripe Tax ergaenzt USt.)
- credit_topups (Pending->Paid) + CreditTopupService: startTopup legt den
  Pending-Kauf an, fulfill() schreibt die Wallet idempotent gut (credited_at)
- StripeCheckoutService::forCreditTopup via checkoutCharge + credit_topup_id
  Metadata; ProcessStripeWebhook schreibt bei checkout.session.completed gut
- Checkout-Route /admin/me/checkout/credits/{pack} mit Rechnungsadress-Gate

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-06-17 14:56:23 +00:00
parent 69411b4c87
commit 344aac0740
10 changed files with 382 additions and 1 deletions

View file

@ -42,6 +42,18 @@ return [
*/
'proof_pdf' => 3,
/*
| Credit-Pakete (Wallet-Topup über Stripe). 1 Credit = 1 € beim Ausgeben;
| größere Pakete enthalten Bonus-Credits (Volumenrabatt steckt im Paket).
| `price_cents` ist der Netto-Zahlbetrag, `credits` die Wallet-Gutschrift.
*/
'packs' => [
['key' => 'p10', 'price_cents' => 1000, 'credits' => 10],
['key' => 'p25', 'price_cents' => 2500, 'credits' => 27],
['key' => 'p50', 'price_cents' => 5000, 'credits' => 55],
['key' => 'p100', 'price_cents' => 10000, 'credits' => 115],
],
/*
| Depublizieren (Magic-Link-Pfad G) — bewusst am teuersten, mit Bedenkzeit.
*/