Add PayPal, Stripe, CSV-Export; fix .env.production issue
Deploy to Production (witstore.wende.it) / deploy (push) Successful in 7s

- PayPal: Checkout-Integration via srmklive/paypal, Weiterleitung zu PayPal,
  Bestellung wird nach Capture automatisch auf payment_received gesetzt
- Stripe: Payment Elements im Checkout, Intent-API, Zahlung direkt bestätigt
- CSV-Export: Admin → Bestellungen → CSV exportieren (UTF-8 BOM für Excel)
- PayPal/Stripe nur sichtbar wenn Keys in .env gesetzt
- .env.example um PAYPAL_* und STRIPE_* Keys erweitert

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-21 11:24:02 +02:00
co-authored by Claude Sonnet 4.6
parent b7e4835a0d
commit 248fb21a05
14 changed files with 529 additions and 12 deletions
+10
View File
@@ -25,6 +25,15 @@ Route::post('/kasse/adresse', [Shop\CheckoutController::class, 'storeAddress'])-
Route::get('/kasse/zahlung', [Shop\CheckoutController::class, 'payment'])->name('checkout.payment');
Route::match(['GET','POST'], '/kasse/bestaetigen', [Shop\CheckoutController::class, 'confirm'])->name('checkout.confirm');
Route::get('/kasse/danke/{order}', [Shop\CheckoutController::class, 'thankyou'])->name('checkout.thankyou');
// PayPal
Route::get('/kasse/paypal/weiterleitung', [Shop\PayPalController::class, 'redirect'])->name('paypal.redirect');
Route::get('/kasse/paypal/erfolg', [Shop\PayPalController::class, 'success'])->name('paypal.success');
Route::get('/kasse/paypal/abbruch', [Shop\PayPalController::class, 'cancel'])->name('paypal.cancel');
// Stripe
Route::post('/kasse/stripe/intent', [Shop\StripeController::class, 'createIntent'])->name('stripe.intent');
Route::get('/kasse/stripe/erfolg', [Shop\StripeController::class, 'success'])->name('stripe.success');
Route::post('/kasse/gutschein', [Shop\CheckoutController::class, 'applyCoupon'])->name('checkout.coupon.apply');
Route::post('/kasse/gutschein/entfernen', [Shop\CheckoutController::class, 'removeCoupon'])->name('checkout.coupon.remove');
Route::get('/kasse/versandkosten', [Shop\CheckoutController::class, 'shippingCost'])->name('checkout.shipping.cost');
@@ -86,6 +95,7 @@ Route::middleware(['auth', 'admin'])->prefix('admin')->name('admin.')->group(fun
// Bestellungen
Route::get('orders', [Admin\OrderController::class, 'index'])->name('orders.index');
Route::get('orders/export/csv', [Admin\OrderController::class, 'exportCsv'])->name('orders.export');
Route::get('orders/{order}', [Admin\OrderController::class, 'show'])->name('orders.show');
Route::put('orders/{order}/status', [Admin\OrderController::class, 'updateStatus'])->name('orders.status');
Route::post('orders/{order}/invoice', [Admin\OrderController::class, 'sendInvoice'])->name('orders.invoice');