Wegen PAYONE-Ausfall vorgezogen live geschaltet: alle Einmalzahlungen (Shop + Salescenter) laufen über Stripe Hosted Checkout, Abos sind bis Phase S4 eingefroren. - Provider-Abstraktion: PaymentProvider-Enum, PaymentGatewayInterface, PaymentProviderManager (Settings-Schalter, provider-treu je Bestand), PayoneGateway als unveränderter Adapter - StripePaymentService: Checkout Session (eine Gesamtposition, Metadata, success/cancel-Redirects), StripeClientWrapper (lazy, Dark Launch), StripeCustomerService, StripeTransactionRecorder (client_secret-Redaction) - Webhook /stripe/webhook: Signaturprüfung, Idempotenz über stripe_webhook_events (Crash-Retry-Reprocessing), txaction-Prioritäten, Betrags-Guard, lockForUpdate-Paid-Pfad, genau eine Bestätigungsmail - Zahlungsmethoden-Anzeige aus charge.succeeded (carddata inkl. Wallet, auftragsunabhängiges Backfill aus dem Event-Store) - Checkout: Wartungsmodus mit Admin-Bypass, Abo-Freeze-Hinweis, Stripe-Option (Online-Zahlung) statt Zahlartenwahl, Vorkasse ausblendbar - Abo-Freeze-Guards: Cron user:make_abo_order, Retry, Kartenupdate - Admin-Settings-Karte Zahlungen (Provider, Wartung, Freeze, Vorkasse) - Hotfix: 500 bei Vorkasse ohne Clearing-Daten in admin/sales/_detail und checkout-final (PAYONE-Ausfall) - Doku dev/2026-07-08-stripe/ (Plan S0–S8, Konzept, IST-Analyse) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
49 lines
1.7 KiB
PHP
Executable file
49 lines
1.7 KiB
PHP
Executable file
<?php
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| API Routes
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| Here is where you can register API routes for your application. These
|
|
| routes are loaded by the RouteServiceProvider within a group which
|
|
| is assigned the "api" middleware group. Enjoy building your API!
|
|
|
|
|
*/
|
|
|
|
Route::match(['get', 'post'], '/payment/status', 'Api\PayoneController@paymentStatus')->name('api.payment_status');
|
|
|
|
Route::post('/stripe/webhook', 'Api\StripeWebhookController@handleWebhook')->name('api.stripe_webhook');
|
|
|
|
Route::get('/google/merchant/feed', 'Api\GoogleMerchantController@feed')->name('api.google_merchant_feed');
|
|
|
|
Route::group([
|
|
'prefix' => 'auth',
|
|
], function () {
|
|
Route::post('login', 'Api\AuthController@login');
|
|
// Route::post('signup', 'Api\AuthController@signup');
|
|
|
|
Route::group([
|
|
'middleware' => 'auth:api',
|
|
], function () {
|
|
Route::post('logout', 'Api\AuthController@logout');
|
|
Route::post('checked', 'Api\AuthController@checked');
|
|
});
|
|
});
|
|
|
|
Route::group([
|
|
'prefix' => 'wp',
|
|
], function () {
|
|
Route::group([
|
|
'middleware' => 'auth:api',
|
|
], function () {
|
|
Route::post('show', 'Api\ShoppingUserController@show');
|
|
Route::post('store', 'Api\ShoppingUserController@store');
|
|
Route::post('update', 'Api\ShoppingUserController@update');
|
|
Route::post('order', 'Api\ShoppingUserController@order');
|
|
Route::post('status', 'Api\ShoppingUserController@status');
|
|
Route::post('delete', 'Api\ShoppingUserController@delete');
|
|
Route::post('cancel', 'Api\ShoppingUserController@cancel');
|
|
Route::post('open', 'Api\ShoppingUserController@open');
|
|
});
|
|
});
|