- Create PaymentCancelController with authentication and subscription detection - Design responsive cancellation view with red/orange gradient theme - Add session token logging and recent subscription lookup functionality - Update payment cancel route to use new controller with auth middleware - Include security assurances and proper navigation to checkout/dashboard - Remove broken route references and ensure all buttons link to valid pages
89 lines
4.2 KiB
PHP
89 lines
4.2 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\PaymentCancelController;
|
|
use App\Http\Controllers\PaymentController;
|
|
use App\Http\Controllers\PaymentProviderController;
|
|
use App\Http\Controllers\PaymentSuccessController;
|
|
use App\Http\Controllers\WebhookController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Payment Routes
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
|
|
Route::prefix('payment')->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');
|
|
});
|