This maybe a silly question but i had to ask, I am using laravel 11, where i am making a subscription page using laravel cashier(stripe) and when I’m making a page that only users who have subscribed can access the page so i am using a middleware PayingCustomer.php in that i am using the if conditon as mentioned in https://laravel.com/docs/11.x/cashier-paddle#checking-subscription-status this is the code of middleware:
namespace AppHttpMiddleware;
use IlluminateHttpRequest;
use SymfonyComponentHttpFoundationResponse;
use IlluminateSupportFacadesAuth;
* Handle an incoming request.
* @param Closure(IlluminateHttpRequest): (SymfonyComponentHttpFoundationResponse) $next
public function handle(Request $request, Closure $next): Response
if ($request->user() && ! $request->user()->subscribed('prod_QbjA3oKZmzyBAj')) {
// This user is not a paying customer...
return redirect('subscribe');
<code><?php
namespace AppHttpMiddleware;
use Closure;
use IlluminateHttpRequest;
use SymfonyComponentHttpFoundationResponse;
use IlluminateSupportFacadesAuth;
class PayingCustomer
{
/**
* Handle an incoming request.
*
* @param Closure(IlluminateHttpRequest): (SymfonyComponentHttpFoundationResponse) $next
*/
public function handle(Request $request, Closure $next): Response
{
if ($request->user() && ! $request->user()->subscribed('prod_QbjA3oKZmzyBAj')) {
// This user is not a paying customer...
return redirect('subscribe');
}
return $next($request);
}
}
</code>
<?php
namespace AppHttpMiddleware;
use Closure;
use IlluminateHttpRequest;
use SymfonyComponentHttpFoundationResponse;
use IlluminateSupportFacadesAuth;
class PayingCustomer
{
/**
* Handle an incoming request.
*
* @param Closure(IlluminateHttpRequest): (SymfonyComponentHttpFoundationResponse) $next
*/
public function handle(Request $request, Closure $next): Response
{
if ($request->user() && ! $request->user()->subscribed('prod_QbjA3oKZmzyBAj')) {
// This user is not a paying customer...
return redirect('subscribe');
}
return $next($request);
}
}
the if condition always return true regardless the user subscribed or not.
Please share your thoughts on this
I am also sharing codes of my Checkout controller:
namespace AppHttpControllers;
use IlluminateHttpRequest;
class CheckoutController extends Controller
* Handle the incoming request.
public function __invoke(Request $request, string $plan = 'price_1PkViISH1mJpX0PlYoCRH74L')
->newSubscription('prod_QbjA3oKZmzyBAj', $plan)
'success_url' => route('success'),
'cancel_url' => route('cancel'),
<code><?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
class CheckoutController extends Controller
{
/**
* Handle the incoming request.
*/
public function __invoke(Request $request, string $plan = 'price_1PkViISH1mJpX0PlYoCRH74L')
{
return $request->user()
->newSubscription('prod_QbjA3oKZmzyBAj', $plan)
->checkout([
'success_url' => route('success'),
'cancel_url' => route('cancel'),
]);
}
}
</code>
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
class CheckoutController extends Controller
{
/**
* Handle the incoming request.
*/
public function __invoke(Request $request, string $plan = 'price_1PkViISH1mJpX0PlYoCRH74L')
{
return $request->user()
->newSubscription('prod_QbjA3oKZmzyBAj', $plan)
->checkout([
'success_url' => route('success'),
'cancel_url' => route('cancel'),
]);
}
}
also i am sharing routes file if it help:
use AppHttpControllersProfileController;
use AppHttpControllersCheckoutController;
use IlluminateSupportFacadesRoute;
Route::get('/', function () {
Route::get('/dashboard', function () {
return view('dashboard');
})->middleware(['auth', 'verified'])->name('dashboard');
Route::get('/success', function () {
})->middleware(['auth', 'verified', 'payingCustomer'])->name('success');
Route::get('/cancel', function () {
})->middleware(['auth', 'verified'])->name('cancel');
Route::get('/checkout/{plan?}', CheckoutController::class
)->middleware(['auth', 'verified'])->name('checkout');
Route::middleware('auth')->group(function () {
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
Route::get('/subscribe', function () {
return view('subscribe');
})->middleware(['auth', 'verified'])->name('subscribe');
Route::get('/members', function () {
})->middleware(['auth', 'verified', 'payingCustomer'])->name('members');
require __DIR__.'/auth.php';
<code><?php
use AppHttpControllersProfileController;
use AppHttpControllersCheckoutController;
use IlluminateSupportFacadesRoute;
Route::get('/', function () {
return view('welcome');
});
Route::get('/dashboard', function () {
return view('dashboard');
})->middleware(['auth', 'verified'])->name('dashboard');
Route::get('/success', function () {
return view('success');
})->middleware(['auth', 'verified', 'payingCustomer'])->name('success');
Route::get('/cancel', function () {
return view('cancel');
})->middleware(['auth', 'verified'])->name('cancel');
Route::get('/checkout/{plan?}', CheckoutController::class
)->middleware(['auth', 'verified'])->name('checkout');
Route::middleware('auth')->group(function () {
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
});
Route::get('/subscribe', function () {
return view('subscribe');
})->middleware(['auth', 'verified'])->name('subscribe');
Route::get('/members', function () {
return view('members');
})->middleware(['auth', 'verified', 'payingCustomer'])->name('members');
require __DIR__.'/auth.php';
</code>
<?php
use AppHttpControllersProfileController;
use AppHttpControllersCheckoutController;
use IlluminateSupportFacadesRoute;
Route::get('/', function () {
return view('welcome');
});
Route::get('/dashboard', function () {
return view('dashboard');
})->middleware(['auth', 'verified'])->name('dashboard');
Route::get('/success', function () {
return view('success');
})->middleware(['auth', 'verified', 'payingCustomer'])->name('success');
Route::get('/cancel', function () {
return view('cancel');
})->middleware(['auth', 'verified'])->name('cancel');
Route::get('/checkout/{plan?}', CheckoutController::class
)->middleware(['auth', 'verified'])->name('checkout');
Route::middleware('auth')->group(function () {
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
});
Route::get('/subscribe', function () {
return view('subscribe');
})->middleware(['auth', 'verified'])->name('subscribe');
Route::get('/members', function () {
return view('members');
})->middleware(['auth', 'verified', 'payingCustomer'])->name('members');
require __DIR__.'/auth.php';
kindly do let me know if theres anything missing or u want me to share some more info
Thank You
i tried almost everything given on the internet, chatgpt etc, the only problem i am facing is with
<code>if ($request->user() && ! $request->user()->subscribed('prod_QbjA3oKZmzyBAj')) {
// This user is not a paying customer...
return redirect('subscribe');
<code>if ($request->user() && ! $request->user()->subscribed('prod_QbjA3oKZmzyBAj')) {
// This user is not a paying customer...
return redirect('subscribe');
}
</code>
if ($request->user() && ! $request->user()->subscribed('prod_QbjA3oKZmzyBAj')) {
// This user is not a paying customer...
return redirect('subscribe');
}
specifically subscribed('prod_QbjA3oKZmzyBAj')