#404 error route is correct, controller code is correct and view exists but it returns 404 no matter

93 messages · Page 1 of 1 (latest)

hoary gazelle
#

my route php Route::get('fan-tip-redirect/', [TipController::class, 'fanTipRedirect']);
my controller code in the file
my stripe redirect url ```js
<script type="text/javascript">
const options = {
clientSecret: '{{$client_secret}}',
// Fully customizable with appearance API.
appearance: {/.../},
};

        // Set up Stripe.js and Elements to use in checkout form, passing the client secret obtained in a previous step
        const elements = stripe.elements(options);

        // Create and mount the Payment Element
        const paymentElement = elements.create('payment');
        paymentElement.mount('#payment-element');


        const form = document.getElementById('payment-form');

        form.addEventListener('submit', async (event) => {
            event.preventDefault();

            const {error, paymentIntent} = await stripe.confirmPayment({
                //`Elements` instance that was used to create the Payment Element
                elements,
                redirect: 'always',
                confirmParams: {
                    return_url: 'https://url.com/tip-status',
                },
            });

            if (error) {

                console.log(error);
                const messageContainer = document.querySelector('#error-message');
                messageContainer.textContent = error.message;
            } else {
                console.log('Intent gotten');
            }
        });
    </script>
#

i have changed the route sequencing and i have created a new route no luck, also removed findOrFail part of the code

minor jacinth
#

check what route is going to using laravel debugbar

drowsy karma
#

First things first; did you run php artisan route:clear? 🙂

hoary gazelle
hoary gazelle
minor jacinth
drowsy karma
#

Alright (dunno what production has to do with this), but what does php artisan route:list --path=fan-tip-redirect output?

#

And there's honestly no need to install debugbar if you're not using it

hoary gazelle
hoary gazelle
drowsy karma
#

Yeah dunno, double check if the route is actually there. You can use just route:list to see it's there with another path. You also have fan-tip-redirect and in your JS snippet you're using tip-status, is that correct?

#

One thing I just noticed, you're using Route::get('fan-tip-redirect/', ..., try removing that final slash, maybe that'll fix it

hoary gazelle
drowsy karma
#

Makes it rather hard to debug / think with you if you're providing conflicting information

hoary gazelle
#

so firstly i didnt run this php artisan route:clear i ran this first php artisan route:list --path=fan-tip-redirect and got no route then i ran php artisan route:clear this and i started seeing the route when i run this php artisan route:list --path=fan-tip-redirect dont know if that makes sense

hoary gazelle
#

and the redirect url on stripe is this js https://www.example.com/fan-tip-redirect

hoary gazelle
hoary gazelle
#

This hasn’t been solved

#

*still hasn’t been solved

dawn hawk
#

I’m not opening random files on my phone.

hoary gazelle
#

Ohh discord is automatically converting them to files let me shorten the code snippet here or drop it bit by bit

hoary gazelle
#
//Tip Routes
Route::post('fan-tip-member-stripe', [TipController::class, 'fanTipMemberStripe'])->name('fan-tip-stripe');
Route::view('fan-tip-member-near/', 'fan.near-success');
Route::post('fan-tip-member-near/', [TipController::class, 'fanTipMemberNear'])->name('fan-tip-near');
Route::post('update-tip-near', [TipController::class, 'updateNearTip'])->name('update-near-tip');
Route::get('/fan-tip-redirect', [TipController::class, 'fanStripeRedirect']);

Route::post('stripe/webhook-redirect/{secret}', [TipController::class, 'handleWebhook']);

dawn hawk
hoary gazelle
#

my controller code ```php
public function fanStripeRedirect(Request $request)
{
// try {
// Retrieve the PaymentIntent

    if (!$request->has('payment_intent')) {
        $request->session()->flash('error','Payment intent not found.');
    }

    $clientSecret = $request->query('payment_intent');
    $paymentIntent = $this->retrieveIntent($clientSecret);

    $mid = $paymentIntent->metadata->mid;
    $intentId = $paymentIntent->id;
    $mainAmount = $paymentIntent->metadata->mainAmount;
    $aid = $paymentIntent->metadata->aid;
    $source = $paymentIntent->latest_charge;
    $transfer_group = $paymentIntent->transfer_group;
    $memberGet = $mainAmount * 100;
    $intMemberGet = intval($memberGet);

    if ($paymentIntent->status != 'succeeded') {
        if ($paymentIntent->status == 'processing') {
            $request->session()->flash('processing', "Payment processing. We'll update you when payment is received");
        } elseif ($paymentIntent->status == 'requires_payment_method') {
            $request->session()->flash('error', 'Payment failed. Please try another payment method.');
        } else {
            $request->session()->flash('error', 'Something went wrong.');
        }
        return redirect()->route('member-detail', ['uid' => $mid]);
    }```
hoary gazelle
dawn hawk
#

So what URL is actually throwing a 404?

hoary gazelle
#

second part of the controller```php
if(auth()->check()){

        $tip= Tip::create([
            'user_from' => auth()->user()->uid,
            'user_to' => $mid,
            'amount' => $paymentIntent->metadata->mainAmount,
            'payment_method' => 'stripe',
        ]);

        $tid= $tip->tid;
        $this->updateIntent($tid,$intentId);
        $this->createTransfer($intMemberGet,$aid,$source,$transfer_group);
$member = User::where('uid',$mid)->first();
        $referrerId = $member->referredBy;
        if ($referrerId) {
            $referrer = User::where('uid',$referrerId)->first();
            $referrerFee = $mainAmount * 0.01;
            $amount = $referrerFee * 100;
            $referrerFees = intval($amount);
            $aid2 =  $referrer->account->customer_id;
            $referrerOfReferrerId = $referrer->referredBy;
            if ($referrerOfReferrerId) {
                $referrerOfReferrer = User::where('uid',$referrerOfReferrerId)->first();
                $referrerOfReferrerFee = $mainAmount * 0.01;
                $amount2 = $referrerOfReferrerFee * 100;
                $referrerOfReferrerFees = intval($amount2);
                $aid3 = $referrerOfReferrer->account->customer_id;
                $this->createTransfer($referrerFees,$aid2,$source,$transfer_group);
                $this->createTransfer($referrerOfReferrerFees,$aid3,$source,$transfer_group);

                $referrerOfReferrer->account->balance += $referrerOfReferrerFee;
                $referrerOfReferrer->save();
            }```
hoary gazelle
dawn hawk
hoary gazelle
#
  GET|HEAD       fan-tip-redirect ................................................................................................... TipController@fanStripeRedirect
                 ⇂ web

dawn hawk
# hoary gazelle here

Are the routes you’ve shown above, your entire routes file? Or are there more routes?

dawn hawk
#

So do you have any that are catch-all routes, or wildcard routes?

hoary gazelle
#

yes this i suppose php Route::get('/', [PublicController::class, 'index']);

dawn hawk
#

That’s not a catch-all or wildecard route. That will match / and / only.

#

As the very first line of your fanStripeRedirect action, put a dd statement, i.e.

public function fanStripeRedirect(Request $request)
{
    dd('here?');
}
dawn hawk
#

Then your controller isn’t even being hit.

#

Show a screenshot of this 404 page.

#

@hoary gazelle

#

I love it when people just disappear in the middle of debugging something…

hoary gazelle
hoary gazelle
dawn hawk
#

That’s not your “fan-tip-redirect” route, though? That’s just your home page.

dawn hawk
#

That’s again a different URL.
/fan-stripe-tip-redirect != /fan-tip-redirect

#

Also, why the hell are you putting the client secret in URLs?! It’s called a secret for a reason.

dawn hawk
#

Mate, this is a live URL. I thought you were debugging locally?

hoary gazelle
#

Stipe returns the client secret automatically

dawn hawk
hoary gazelle
hoary gazelle
dawn hawk
#

Show all your routes. Because you seem to have one taking precedence.

hoary gazelle
#

Ok

dawn hawk
#

Just run php artisan route:list --method=GET
Shouldn’t take you that long if you’re already SSH-d into the server and running commands on your live website 🙃

hoary gazelle
dawn hawk
#

Mate. You’re the one asking for help here. You keep changing your mind which URL isn’t working, you tell me you’re working live but then tell me you’re not at your laptop. Like, c’mon.

#

Did you not think you might need to actually be near your computer to fix problems? 🤷‍♂️

hoary gazelle
#

i am really sorry

#
GET|HEAD       / .................................... PublicController@index
  GET|HEAD       admin/dashboard dashboard-admin › AdminController@adminDashb…
  GET|HEAD       admin/delete-event/{eid} ........ AdminController@deleteEvent
  GET|HEAD       admin/delete-fan/{uid} ............ AdminController@deleteFan
  GET|HEAD       admin/delete-user/{uid} .......... AdminController@deleteUser
  GET|HEAD       admin/events ..... admin-events › AdminController@adminEvents
  GET|HEAD       admin/fans ........... admin-fans › AdminController@adminFans
  GET|HEAD       admin/members .. admin-members › AdminController@adminMembers
  GET|HEAD       auth/google . auth.google › PublicController@redirectToGoogle
  GET|HEAD       auth/google/callback .. PublicController@handleGoogleCallback
  GET|HEAD       event ................... events › PublicController@getEvents
  GET|HEAD       event-detail/{eid} ............. PublicController@eventDetail
  GET|HEAD       event/{eventSlug} .......... PublicController@eventDetailSlug
  GET|HEAD       fan-login ............. fan-login › PublicController@fanLogin
  GET|HEAD       fan-register ................ PublicController@getFanRegister
  GET|HEAD       fan-tip-member-near ......................................... 
  GET|HEAD       fan-tip-redirect ............ TipController@fanStripeRedirect
  GET|HEAD       fan/dashboard .... fan-dashboard › FanController@fanDashboard
  GET|HEAD       fan/payment-history fan-payments › FanController@paymentHist…
  GET|HEAD       fan/profile ....... fan-profile › FanController@publicProfile
  GET|HEAD       fan/support-following fan-following › FanController@supportF…
  GET|HEAD       faq .................................... PublicController@faq```
#
GET|HEAD       home ............................ home › HomeController@index
  GET|HEAD       login ............ login › Auth\LoginController@showLoginForm
  GET|HEAD       logout .................. logging_out › HomeController@logout
  GET|HEAD       member .................... member › PublicController@members
  GET|HEAD       member-detail/{uid} member-detail › PublicController@memberD…
  GET|HEAD       member-login ................... PublicController@memberLogin
  GET|HEAD       member-register-approval . PublicController@getMemberRegister
  GET|HEAD       member-register/{referralCode} PublicController@memberRegist…
  GET|HEAD       member/account-onboard/{aid} account-onboard › MemberControl…
  GET|HEAD       member/add-event .................. MemberController@addEvent
  GET|HEAD       member/add-wallet ................ MemberController@addWallet
  GET|HEAD       member/dashboard dashboard-member › MemberController@memberD…
  GET|HEAD       member/delete-post .............. MemberController@deletePost
  GET|HEAD       member/event .. member-events › MemberController@memberEvents
  GET|HEAD       member/payments-received ... MemberController@paymentReceived
  GET|HEAD       member/profile member-profile › MemberController@publicProfi…
  GET|HEAD       member/redirect-onboard redirect-onboard › MemberController@…
  GET|HEAD       member/refresh-onboard refresh-onboard › MemberController@re…
  GET|HEAD       member/supporters member-supporters › ```
#
  GET|HEAD       near-login-member/{referralCode} WalletController@memberWall…
  GET|HEAD       near-member ................ WalletController@nearMemberLogin
  GET|HEAD       near-sign-in ................. WalletController@viewNearLogin
  GET|HEAD       password/confirm password.confirm › Auth\ConfirmPasswordCont…
  GET|HEAD       password/reset password.request › Auth\ForgotPasswordControl…
  GET|HEAD       password/reset/{token} password.reset › Auth\ResetPasswordCo…
  GET|HEAD       payment-cancel ...... cancel-url › PublicController@cancelUrl
  GET|HEAD       payment-success ... success-url › PublicController@successUrl
  GET|HEAD       register register › Auth\RegisterController@showRegistration…
  GET|HEAD       sanctum/csrf-cookie sanctum.csrf-cookie › Laravel\Sanctum › …
  GET|HEAD       search-member/{member} ........ PublicController@searchMember
  GET|HEAD       signup/activate/{token} ..... PublicController@signupActivate
  GET|HEAD       {memberSlug} .............. PublicController@memberDetailSlug```
dawn hawk
#

Bingo.

#
GET|HEAD       {memberSlug} .............. PublicController@memberDetailSlug
#

A catch-all route. Like I suspected.

hoary gazelle
#

let me make it user/{memberSlug} instead

#

it works now @dawn hawk thank you so much martin, i really appreciated your help, i will do my best to learn from scratch and improve on my skills, and thank you for taking your time with a dummy like me

dawn hawk
hoary gazelle
#

also this is the code for the stripe return url, i will reach out to their devs to know how to get around the client secret issue ```js
const {error, paymentIntent} = await stripe.confirmPayment({
//Elements instance that was used to create the Payment Element
elements,
redirect: 'always',
confirmParams: {
return_url: 'https://www.tipjarlive.com/fan-tip-redirect',
},
});

dawn hawk
#

If you’re using Stripe, why not just redirect to a Checkout Session to collect a tip amount?

hoary gazelle
#

so i am using stripe connect

dawn hawk
#

You can still use Stripe Checkout with Stripe Connect…

#

I do with a couple of my own apps.