Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

trevorpan's avatar

New Stripe: after paying, how to route for /success or /cancel views?

Hello ~

Have been working through the Accept Payments video series. On April 16, 2019 Stripe introduced a newer version of checkout.

The store() method below is straight from stripe's upgrade docs. https://stripe.com/docs/payments/checkout/migration#client-products

EDIT: Is the success page, and cancel page supposed to be routed from the Vue component?

I think the process is: 1. create a session. 2. Vue component goes to stripe server 3. returns to success or cancel?

class ReservesController extends Controller
{
    
    public function success()
    {
        return view('payments.success'); 
    }

    public function cancel()
    {
        return view('payments.cancel'); 
    }

    public function store()
    {

        $session = \Stripe\Checkout\Session::create([
          'payment_method_types' => ['card'],
          'line_items' => [[
            'name' => 'Bid Reserve Fee',
            'description' => ' Bid Reserve Fee',
            'amount' => 500,
            'currency' => 'usd',
            'quantity' => 1,
          ]],
          'success_url' => 'https://bidbird.co/success',
          'cancel_url' => 'https://bidbird.co/cancel',
        ]);

        
            return view('jobs.jobfull', compact('session')); 
            //return back();  ???
    }
}
//ReserveBid.vue
<template>
    <form action="/reserve" method="POST">
      <label for="card-element">
              Place a  reserve to bid this job. 
            </label>
        
        <button id="checkout-button">Pay Bid Reserve</button>
    </form>
</template>

<script src="https://js.stripe.com/v3/"></script>

<script>

var stripe = Stripe('pk_test_............');

stripe.redirectToCheckout({
  items: [
    // Replace with the ID of your SKU
    {sku: 'sku_.......', quantity: 1}
  ],
  successUrl: 'https://bidbird.co/success',
  cancelUrl: 'https://bidbird.co/cancel',
  billingAddressCollection: 'required',
}).then(function (result) {
  // If `redirectToCheckout` fails due to a browser or network
  // error, display the localized error message to your customer
  // using `result.error.message`.
});
</script>
//web.php

//reserve payments
Route::get('/success', 'ReservesController@success');
Route::get('/cancel', 'ReservesController@cancel');
Route::post('/jobs/{job}/reserve', 'ReservesController@store');
0 likes
0 replies

Please or to participate in this conversation.