name('payment.')->group(function () { Route::get('/success', [PaymentSuccessController::class, 'show']) ->middleware(['auth', 'verified']) ->name('success'); Route::get('/cancel', [PaymentCancelController::class, 'show']) ->middleware(['auth', 'verified']) ->name('cancel'); // UNIFIED: Payment processing endpoints (new unified payment system) Route::post('/checkout', [PaymentController::class, 'createCheckout'])->name('checkout'); Route::post('/subscribe', [PaymentController::class, 'createSubscription'])->name('subscribe'); Route::get('/methods', [PaymentController::class, 'getPaymentMethods'])->name('methods'); Route::get('/history', [PaymentController::class, 'getHistory'])->name('history'); }); // UNIFIED: Enhanced checkout routes with provider selection Route::middleware(['auth', 'verified'])->prefix('checkout')->name('checkout.')->group(function () { Route::get('/enhanced/{plan}/{provider}', [PaymentController::class, 'enhancedCheckout'])->name('enhanced'); Route::get('/trial/{plan}/{provider}', [PaymentController::class, 'trialCheckout'])->name('trial'); }); Route::prefix('webhook')->name('webhook.')->group(function () { // Unified webhook handler Route::post('/{provider}', [WebhookController::class, 'handle'])->name('unified'); // Individual provider handlers (for direct provider-specific webhooks) Route::post('/stripe', [WebhookController::class, 'stripe'])->name('stripe'); Route::post('/lemon-squeezy', [WebhookController::class, 'lemonSqueezy'])->name('lemon_squeezy'); Route::post('/polar', [WebhookController::class, 'polar'])->name('polar'); Route::post('/oxapay', [WebhookController::class, 'oxapay'])->name('oxapay'); Route::post('/crypto', [WebhookController::class, 'crypto'])->name('crypto'); // Legacy route for backward compatibility Route::post('/payment/{provider}', [PaymentController::class, 'webhook'])->name('payment'); }); /* |-------------------------------------------------------------------------- | Payment Provider Management Routes |-------------------------------------------------------------------------- */ Route::prefix('providers')->name('providers.')->group(function () { // Provider status and configuration Route::get('/', [PaymentProviderController::class, 'index'])->name('index'); Route::get('/{provider}', [PaymentProviderController::class, 'show'])->name('show'); Route::post('/{provider}/test', [PaymentProviderController::class, 'test'])->name('test'); Route::post('/{provider}/toggle', [PaymentProviderController::class, 'toggle'])->name('toggle'); Route::put('/{provider}/config', [PaymentProviderController::class, 'updateConfig'])->name('update.config'); Route::post('/refresh', [PaymentProviderController::class, 'refresh'])->name('refresh'); }); /* |-------------------------------------------------------------------------- | Activation Key Routes |-------------------------------------------------------------------------- */ Route::prefix('activation-keys')->name('activation-keys.')->group(function () { Route::post('/redeem', [PaymentProviderController::class, 'redeemActivationKey'])->name('redeem'); Route::get('/validate/{key}', [PaymentProviderController::class, 'validateActivationKey'])->name('validate'); }); /* |-------------------------------------------------------------------------- | Crypto Payment Routes |-------------------------------------------------------------------------- */ Route::prefix('crypto')->name('crypto.')->group(function () { Route::get('/rates/{crypto}', [PaymentProviderController::class, 'getCryptoRate'])->name('rates'); Route::get('/convert', [PaymentProviderController::class, 'convertUsdToCrypto'])->name('convert'); });