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>
91 lines
2.9 KiB
PHP
91 lines
2.9 KiB
PHP
<?php
|
||
|
||
use App\Enums\Tier;
|
||
|
||
return [
|
||
|
||
/*
|
||
|--------------------------------------------------------------------------
|
||
| Credit-Ökonomie (Decision-Update Phase-2-Funktionen, Rev. 4)
|
||
|--------------------------------------------------------------------------
|
||
|
|
||
| 1 Credit = 1 €. Alle Preise sind die zur Kaufzeit aus dem aktiven Tier
|
||
| abgeleiteten Credit-Beträge (nicht statisch je Kauf gespeichert). Die
|
||
| zentrale Ableitung erfolgt in App\Services\Billing\CreditPricingService.
|
||
|
|
||
*/
|
||
|
||
/*
|
||
| Extra-PM (Kontingent-Nachkauf) — tier-gestaffelt. Treuevorteil:
|
||
| höheres Abo = günstigere Extra-PM (Einzel 19 … Agency 8).
|
||
*/
|
||
'extra_pm' => [
|
||
Tier::Einzel->value => 19,
|
||
Tier::Starter->value => 15,
|
||
Tier::Business->value => 12,
|
||
Tier::Pro->value => 10,
|
||
Tier::Agency->value => 8,
|
||
],
|
||
|
||
/*
|
||
| Boost (Platzierung Startseite + Branchenseite) — nach Dauer in Tagen.
|
||
| Pro-Tag-Preis sinkt mit der Dauer; Einstieg bleibt unter dem PM-Preis.
|
||
*/
|
||
'boost' => [
|
||
7 => 12,
|
||
14 => 20,
|
||
30 => 35,
|
||
],
|
||
|
||
/*
|
||
| Veröffentlichungsnachweis-PDF — pauschal pro PM (Impulskauf).
|
||
*/
|
||
'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.
|
||
*/
|
||
'depublish' => 25,
|
||
|
||
/*
|
||
| Kostenpflichtige Magic-Link-Pfade C/D (Phase 2, Anker „zu bestätigen").
|
||
*/
|
||
'paths' => [
|
||
'correction' => 8, // C – inhaltliche Korrektur
|
||
'update' => 4, // D – Update/Ergänzung
|
||
],
|
||
|
||
/*
|
||
|--------------------------------------------------------------------------
|
||
| Prüfzähler / Prüfkontingent (Decision-Update §4.2/§4.3)
|
||
|--------------------------------------------------------------------------
|
||
|
|
||
| Eigener Zähler, getrennt von der Wallet. Tier-gestaffelte Freiprüfungen
|
||
| pro Account/Monat (aggregiert, nicht pro PM). Burst-Schutz per Tageslimit.
|
||
| Overflow: leerer Zähler → je weitere Prüfung 1 Credit aus der Wallet.
|
||
*/
|
||
'review' => [
|
||
'free_per_month' => [
|
||
Tier::Einzel->value => 4,
|
||
Tier::Starter->value => 12,
|
||
Tier::Business->value => 30,
|
||
Tier::Pro->value => 60,
|
||
Tier::Agency->value => 120,
|
||
],
|
||
'daily_limit' => 10,
|
||
'overflow_cost' => 1,
|
||
],
|
||
|
||
];
|