widerrufsbelehrung hinzugefügt und in den checkout mit eingebunden. refund ins backend eingebaut.

This commit is contained in:
Codex Agent
2025-12-07 11:57:05 +01:00
parent e092f72475
commit 1d3d49e05a
44 changed files with 1143 additions and 71 deletions

View File

@@ -132,6 +132,13 @@ class MarketingController extends Controller
Log::info('Buy packages called', ['auth' => Auth::check(), 'locale' => $locale, 'package_id' => $packageId]);
$package = Package::findOrFail($packageId);
$requiresWaiver = (bool) ($package->activates_immediately ?? true);
$request->validate([
'accepted_terms' => ['sometimes', 'boolean', 'accepted'],
'accepted_waiver' => ['sometimes', 'boolean'],
]);
$couponCode = $this->rememberCouponFromRequest($request, $package);
if (! Auth::check()) {
@@ -194,6 +201,16 @@ class MarketingController extends Controller
$this->checkoutSessions->selectProvider($session, CheckoutSession::PROVIDER_PADDLE);
$now = now();
$session->forceFill([
'accepted_terms_at' => $request->boolean('accepted_terms') ? $now : null,
'accepted_privacy_at' => $request->boolean('accepted_terms') ? $now : null,
'accepted_withdrawal_notice_at' => $request->boolean('accepted_terms') ? $now : null,
'digital_content_waiver_at' => $requiresWaiver && $request->boolean('accepted_waiver') ? $now : null,
'legal_version' => $this->resolveLegalVersion(),
])->save();
$appliedDiscountId = null;
if ($couponCode) {
@@ -219,6 +236,9 @@ class MarketingController extends Controller
'metadata' => [
'checkout_session_id' => $session->id,
'coupon_code' => $couponCode,
'legal_version' => $session->legal_version,
'accepted_terms' => (bool) $session->accepted_terms_at,
'accepted_waiver' => $requiresWaiver && (bool) $session->digital_content_waiver_at,
],
'discount_id' => $appliedDiscountId,
]);
@@ -628,4 +648,9 @@ class MarketingController extends Controller
'excerpt_html' => $this->convertMarkdownToHtml($excerpt),
];
}
protected function resolveLegalVersion(): string
{
return config('app.legal_version', now()->toDateString());
}
}