Skip to content
Freewebsolution
Menu
  • Home
  • angular
  • php
  • guide
  • laravel
  • react
  • corsi
Freewebsolution
Menu

Creare un’applicazione di e-commerce con Laravel e Stripe

Posted on 17 Aprile 202517 Aprile 2025 by lucio
Category: blog, laravel, stripe
4 views Tempo di lettura: 6 minuti

Laravel è uno dei framework PHP più popolari e potenti, e quando lo combiniamo con Stripe, uno dei leader nei pagamenti online, possiamo creare applicazioni di e-commerce moderne e sicure. In questo tutorial, ti mostrerò come costruire un’applicazione di e-commerce semplice che permetta agli utenti di acquistare prodotti, aggiungerli al carrello e completare il pagamento tramite Stripe.

Cosa ti servirà:

  • Laravel 11 installato.

  • Un account su Stripe per ottenere le chiavi API.

  • Un editor di codice (come VS Code o PHPStorm).

  • Composer per gestire le dipendenze in Laravel.

  • Un ambiente di sviluppo configurato (XAMPP, Homestead, Docker, o simili).

Passo 1: Installazione di Laravel 11

Il primo passo è installare Laravel 11. Se non hai già una versione di Laravel 11, puoi installarla facilmente utilizzando Composer. Esegui questo comando nel terminale per creare un nuovo progetto Laravel:

composer create-project --prefer-dist laravel/laravel ecommerce-stripe "11.*"

Questa operazione creerà una nuova cartella chiamata ecommerce-stripe con l’installazione di Laravel 11.

Passo 2: Configurazione dell’ambiente di sviluppo

  1. File .env: Dopo aver installato Laravel, configura il tuo ambiente. Apri il file .env e configura il database e altre variabili come il nome dell’app e la chiave Stripe. Ad esempio:

    APP_NAME=EcommerceApp
    APP_ENV=local
    APP_KEY=base64:your_app_key
    APP_DEBUG=true
    APP_URL=http://localhost
    
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=ecommerce
    DB_USERNAME=root
    DB_PASSWORD=
    
    STRIPE_KEY=your_publishable_key
    STRIPE_SECRET=your_secret_key
    
  2. Migrations:Laravel è dotato di un sistema di migrations per la gestione del database. Per ora, creeremo una semplice tabella products che conterrà i dati dei prodotti che venderai nel tuo negozio.
    Esegui il comando per creare una migration:
    php artisan make:migration create_products_table --create=products
    

    Apri la migration appena creata in database/migrations/ e aggiungi il codice per la tabella dei prodotti:

    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->text('description');
            $table->decimal('price', 8, 2);
            $table->timestamps();
        });
    }
    

    Esegui la migration:

    php artisan migrate
    

     

    Passo 3: Creazione del modello e del controller dei prodotti

    1. Modello: Crea un modello Product che interagisce con la tabella products:

    php artisan make:model Product
    

    Aggiungi le proprietà di massa nel modello Product:

    namespace App\Models;
    
    use Illuminate\Database\Eloquent\Factories\HasFactory;
    use Illuminate\Database\Eloquent\Model;
    
    class Product extends Model
    {
        use HasFactory;
    
        protected $fillable = ['name', 'description', 'price'];
    }
    

    2.Controller: Crea un controller ProductController per gestire la logica di visualizzazione dei prodotti:

    php artisan make:controller ProductController
    
    

    Nel controller ProductController, aggiungi il codice per recuperare i prodotti dal database e visualizzarli:

    namespace App\Http\Controllers;
    
    use App\Models\Product;
    
    class ProductController extends Controller
    {
        public function index()
        {
            $products = Product::all();
            return view('products.index', compact('products'));
        }
    }
    

    Passo 4: Creazione delle viste per visualizzare i prodotti

    1. Vista principale: Crea una vista resources/views/products/index.blade.php per mostrare l’elenco dei prodotti:

      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Product List</title>
      </head>
      <body>
          <h1>Our Products</h1>
          <div>
              @foreach($products as $product)
                  <div>
                      <h3>{{ $product->name }}</h3>
                      <p>{{ $product->description }}</p>
                      <p>${{ $product->price }}</p>
                      <form action="/add-to-cart" method="POST">
                          @csrf
                          <input type="hidden" name="product_id" value="{{ $product->id }}">
                          <button type="submit">Add to Cart</button>
                      </form>
                  </div>
              @endforeach
          </div>
      </body>
      </html>
      

       

    Passo 5: Aggiungere un carrello per gli acquisti

    1. Carrello: Creiamo una sessione per gestire il carrello dell’utente. Modifica il controller per aggiungere il prodotto al carrello.

    Nel ProductController, aggiungi un metodo per aggiungere il prodotto al carrello:

    public function addToCart(Request $request)
    {
        $product = Product::find($request->product_id);
        $cart = session()->get('cart', []);
    
        if(isset($cart[$product->id])) {
            $cart[$product->id]['quantity']++;
        } else {
            $cart[$product->id] = [
                'name' => $product->name,
                'quantity' => 1,
                'price' => $product->price
            ];
        }
    
        session()->put('cart', $cart);
        return back();
    }
    

    Aggiungi una route per il carrello:

    Route::post('/add-to-cart', [ProductController::class, 'addToCart']);
    

     

    Passo 6: Creazione della vista del carrello

    Crea una vista resources/views/cart.blade.php per visualizzare gli articoli nel carrello:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Shopping Cart</title>
    </head>
    <body>
        <h1>Your Cart</h1>
        <div>
            @foreach(session('cart') as $id => $details)
                <div>
                    <h3>{{ $details['name'] }}</h3>
                    <p>Quantity: {{ $details['quantity'] }}</p>
                    <p>Total: ${{ $details['quantity'] * $details['price'] }}</p>
                </div>
            @endforeach
        </div>
        <a href="/checkout">Proceed to Checkout</a>
    </body>
    </html>
    

    Passo 7: Implementare il pagamento con Stripe

    1. Checkout: Crea una route per il checkout e una vista per inserire i dettagli di pagamento.

    Aggiungi questa route al file web.php:

    Route::get('/checkout', [CheckoutController::class, 'index']);
    Route::post('/checkout', [CheckoutController::class, 'processPayment']);
    

    2.Controller di Checkout: Crea il controller CheckoutController con i metodi per visualizzare il modulo di pagamento e gestire il pagamento con Stripe:

    php artisan make:controller CheckoutController
    

    Nel controller CheckoutController, implementa la logica per il pagamento tramite Stripe:

    namespace App\Http\Controllers;
    
    use Stripe\Stripe;
    use Stripe\Charge;
    use Illuminate\Http\Request;
    
    class CheckoutController extends Controller
    {
        public function index()
        {
            return view('checkout');
        }
    
        public function processPayment(Request $request)
        {
            Stripe::setApiKey(env('STRIPE_SECRET'));
    
            $amount = array_sum(array_column(session('cart'), 'price')); // Calcola l'importo totale
    
            try {
                $charge = Charge::create([
                    'amount' => $amount * 100, // Stripe accetta i pagamenti in centesimi
                    'currency' => 'usd',
                    'description' => 'Order Payment',
                    'source' => $request->stripeToken,
                ]);
    
                // Paga con successo, processa l'ordine
                session()->forget('cart');
                return redirect()->route('home')->with('success', 'Payment successful!');
            } catch (\Exception $e) {
                return back()->withErrors(['error' => $e->getMessage()]);
            }
        }
    }
    

    3.Vista del Checkout: Crea la vista resources/views/checkout.blade.php per visualizzare il modulo di pagamento con Stripe.

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Checkout</title>
    </head>
    <body>
        <h1>Checkout</h1>
        <form action="/checkout" method="POST">
            @csrf
            <script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
                    data-key="{{ env('STRIPE_KEY') }}"
                    data-amount="{{ $totalAmount * 100 }}" 
                    data-name="Ecommerce Store"
                    data-description="Complete your purchase"
                    data-currency="usd"></script>
        </form>
    </body>
    </html>
    

    Conclusioni

    Ora hai tra le mani un’applicazione di e-commerce funzionante che ti consente di visualizzare i prodotti, aggiungerli al carrello e completare l’acquisto in modo sicuro tramite Stripe. Hai visto come strutturare l’intero flusso, dalla gestione dei prodotti fino all’integrazione del pagamento online, usando le potenzialità di Laravel 11.

    Questa è solo la base di partenza: puoi espandere questa applicazione introducendo nuove funzionalità come la registrazione e autenticazione degli utenti, uno storico degli ordini, sistemi di tracking per le spedizioni, codici sconto, gestione dell’inventario, notifiche via email, dashboard di amministrazione, e molto altro. Laravel offre tutti gli strumenti per farlo in modo scalabile, elegante e professionale.

    Stripe, da parte sua, continua ad essere una delle piattaforme di pagamento più sicure e flessibili del mercato, con supporto per carte di credito, Apple Pay, Google Pay, bonifici e molto altro ancora. È una scelta solida sia per progetti personali che per startup e attività commerciali di ogni dimensione.

    Se ti è piaciuto questo tutorial e vuoi approfondire tutto ciò che Laravel 11 può offrirti — dai fondamenti alla costruzione di applicazioni complete, passando per buone pratiche, tips avanzati e concetti architetturali — ti consiglio il mio libro:

    👉 Laravel 11: dall’idea al codice
    Una guida pratica, aggiornata e ricca di esempi reali per imparare a padroneggiare il framework PHP più popolare.

    Buono studio, e buon codice!

Potrebbero interessarti:

  • Come integrare Stripe con Laravel 11
    Come integrare Stripe con Laravel 11
  • creare una pwa con laravel 11
    Come creare una Progressive Web App (PWA) con Laravel 11
  • laravel_livewire
    Creare Interfacce Dinamiche con Laravel 11 e…
  • applicazione stock exchange con React
    Realizzare un'applicazione Stock Exchange con React

Lucio Ticali

Lucio Ticali - Insegnante su Udemy

Hi, I'm Lucio Ticali, author of this blog. I am a Full stack developer and Udemy Instructor with over 20 years of experience in the Information Technology sector.

Ultime da Freeweb

  • Creare un’applicazione di e-commerce con Laravel e Stripe
  • Come integrare Stripe con Laravel 11
  • Realizza il gioco del solitario con React e Laravel: Parte 1
  • Creare Interfacce Dinamiche con Laravel 11 e Livewire 3: Guida Passo-Passo
  • Come creare una Progressive Web App (PWA) con Laravel 11

Corsi da non perdere

Guida a git e GitHub

€ 9.99 / €12.99 corso base di git: impara a tenere traccia del tuo codice

Ebook da non perdere

Laravel 11 dall'idea al codice

€ 9.99 / €21.99 laravel 11: dall'idea al codice

©Copyright 2025 - Freewebsolution. All rights reserved, Lucio Ticali Lucio ticali Udemy instructor instructor. Privacy-Informativa cookies