geschenkgutscheine implementiert ("Paket verschenken"). Neuer Upload-Provider: Sparkbooth.

This commit is contained in:
Codex Agent
2025-12-07 16:54:58 +01:00
parent 3f3c0f1d35
commit 046e2fe3ec
50 changed files with 2422 additions and 130 deletions

40
config/gift-vouchers.php Normal file
View File

@@ -0,0 +1,40 @@
<?php
return [
'default_valid_years' => 5,
// Map voucher tiers to Paddle price IDs (create matching prices in Paddle Billing).
'tiers' => [
[
'key' => 'gift-starter',
'label' => 'Geschenk Starter',
'amount' => 29.00,
'currency' => 'EUR',
'paddle_price_id' => env('PADDLE_GIFT_PRICE_STARTER', 'pri_01kbwccfe1mpwh7hh60eygemx6'),
],
[
'key' => 'gift-standard',
'label' => 'Geschenk Standard',
'amount' => 59.00,
'currency' => 'EUR',
'paddle_price_id' => env('PADDLE_GIFT_PRICE_STANDARD', 'pri_01kbwccfvzrf4z2f1r62vns7gh'),
],
[
'key' => 'gift-premium',
'label' => 'Geschenk Premium',
'amount' => 129.00,
'currency' => 'EUR',
'paddle_price_id' => env('PADDLE_GIFT_PRICE_PREMIUM', 'pri_01kbwccg8vjc5cwz0kftfvf9wm'),
],
[
'key' => 'gift-premium-plus',
'label' => 'Geschenk Premium Plus',
'amount' => 149.00,
'currency' => 'EUR',
'paddle_price_id' => env('PADDLE_GIFT_PRICE_PREMIUM_PLUS', 'pri_01kbwccgnjzwrjy5xg1yp981p6'),
],
],
// Package types a voucher coupon should apply to.
'package_types' => ['endcustomer'],
];

View File

@@ -6,7 +6,9 @@ $environment = env('PADDLE_ENVIRONMENT', $sandbox ? 'sandbox' : 'production');
$apiKey = env('PADDLE_API_KEY') ?: ($sandbox ? env('PADDLE_SANDBOX_API_KEY') : null);
$clientToken = env('PADDLE_CLIENT_TOKEN') ?: env('PADDLE_CLIENT_ID') ?: ($sandbox ? (env('PADDLE_SANDBOX_CLIENT_TOKEN') ?: env('PADDLE_SANDBOX_CLIENT_ID')) : null);
$clientToken = $sandbox
? (env('PADDLE_SANDBOX_CLIENT_TOKEN') ?: env('PADDLE_SANDBOX_CLIENT_ID') ?: env('PADDLE_CLIENT_TOKEN') ?: env('PADDLE_CLIENT_ID'))
: (env('PADDLE_CLIENT_TOKEN') ?: env('PADDLE_CLIENT_ID'));
$webhookSecret = env('PADDLE_WEBHOOK_SECRET') ?: ($sandbox ? env('PADDLE_SANDBOX_WEBHOOK_SECRET') : null);

View File

@@ -25,4 +25,13 @@ return [
explode(',', env('PHOTOBOOTH_ALLOWED_EXTENSIONS', 'jpg,jpeg,png,webp'))
))),
],
'sparkbooth' => [
'allowed_extensions' => array_values(array_filter(array_map(
fn ($ext) => strtolower(trim($ext)),
explode(',', env('SPARKBOOTH_ALLOWED_EXTENSIONS', env('PHOTOBOOTH_ALLOWED_EXTENSIONS', 'jpg,jpeg,png,webp')))
))),
'max_size_kb' => (int) env('SPARKBOOTH_MAX_SIZE_KB', 8192),
'rate_limit_per_minute' => (int) env('SPARKBOOTH_RATE_LIMIT_PER_MINUTE', env('PHOTOBOOTH_RATE_LIMIT_PER_MINUTE', 20)),
'response_format' => env('SPARKBOOTH_RESPONSE_FORMAT', 'json'),
],
];