Tempo di lettura: 5 minuti
Laravel 11 è l’ultima versione del popolare framework PHP, che offre nuove funzionalità e miglioramenti che semplificano lo sviluppo delle applicazioni web. In questo tutorial, ti mostrerò come integrare Stripe in un’applicazione Laravel 11 per gestire i pagamenti online in modo sicuro e semplice.
Cosa ti serve prima di iniziare:
-
Un account su Stripe per ottenere le chiavi API.
-
Una conoscenza di base di Laravel e dei suoi concetti principali (routes, controllers, Blade).
-
Composer per gestire le dipendenze in Laravel.
-
Un ambiente di sviluppo configurato (XAMPP, Homestead, Sail o simili).
1. Installare Laravel 11
Per prima cosa, crea un nuovo progetto Laravel 11. Se non hai ancora Laravel installato, puoi farlo utilizzando Composer. Apri il terminale e inserisci il comando seguente per installare Laravel 11:
composer create-project --prefer-dist laravel/laravel laravel-stripe-app "11.*"
Questo comando creerà una nuova cartella chiamata laravel-stripe-app
con l’ultima versione di Laravel 11.
2. Configurare Stripe nel progetto Laravel
Una volta installato Laravel 11, dobbiamo configurarlo per lavorare con Stripe.
a. Registrati su Stripe
Vai su Stripe.com e registrati per un account (se non lo hai già). Una volta registrato, accedi alla tua dashboard per ottenere le chiavi API.
-
Publishable key (chiave pubblica)
-
Secret key (chiave segreta)
b. Installare il pacchetto Stripe PHP
Apri il terminale e naviga nella cartella del tuo progetto Laravel appena creato. Installa il pacchetto Stripe PHP usando Composer:
composer require stripe/stripe-php
Questo pacchetto ti consente di interagire con l’API di Stripe.
c. Aggiungere le chiavi API a .env
Per evitare di esporre le chiavi direttamente nel codice, aggiungile al file .env
:
STRIPE_KEY=your_publishable_key STRIPE_SECRET=your_secret_key
3. Creare il Form di Pagamento
Ora che la configurazione di base è pronta, possiamo creare un modulo per raccogliere i dettagli di pagamento dell’utente. Aggiungeremo un Stripe Element, un campo sicuro per raccogliere i dati della carta di credito.
a. Creare la vista Blade
In resources/views
, crea un file chiamato payment.blade.php
con il seguente contenuto:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Pagamento con Stripe</title> </head> <body> <form action="/charge" method="POST" id="payment-form"> @csrf <div class="form-group"> <label for="card-element">Carta di credito</label> <div id="card-element"> <!-- A Stripe Element will be inserted here. --> </div> </div> <!-- Used to display form errors. --> <div id="card-errors" role="alert"></div> <button type="submit">Paga ora</button> </form> <script src="https://js.stripe.com/v3/"></script> <script> var stripe = Stripe('your_publishable_key'); // Inserisci la tua chiave pubblica var elements = stripe.elements(); var card = elements.create('card'); card.mount('#card-element'); var form = document.getElementById('payment-form'); form.addEventListener('submit', function(event) { event.preventDefault(); stripe.createToken(card).then(function(result) { if (result.error) { // Mostra un errore se qualcosa va storto var errorElement = document.getElementById('card-errors'); errorElement.textContent = result.error.message; } else { // Invia il token al tuo server stripeTokenHandler(result.token); } }); }); function stripeTokenHandler(token) { var form = document.getElementById('payment-form'); var hiddenInput = document.createElement('input'); hiddenInput.setAttribute('type', 'hidden'); hiddenInput.setAttribute('name', 'stripeToken'); hiddenInput.setAttribute('value', token.id); form.appendChild(hiddenInput); form.submit(); } </script> </body> </html>
4. Creare le Route e il Controller
a. Definire le Route
Nel file routes/web.php
, aggiungi due route: una per visualizzare il form di pagamento e una per gestire la richiesta di pagamento.
use App\Http\Controllers\PaymentController; Route::get('/payment', [PaymentController::class, 'showForm']); Route::post('/charge', [PaymentController::class, 'charge']);
b. Creare il PaymentController
Ora, crea il controller PaymentController
con i metodi per visualizzare il form di pagamento e gestire il pagamento.
php artisan make:controller PaymentController
Nel file app/Http/Controllers/PaymentController.php
, aggiungi i seguenti metodi:
namespace App\Http\Controllers; use Illuminate\Http\Request; use Stripe\Stripe; use Stripe\Charge; class PaymentController extends Controller { public function showForm() { return view('payment'); } public function charge(Request $request) { // Imposta la chiave API segreta Stripe::setApiKey(env('STRIPE_SECRET')); $token = $request->input('stripeToken'); try { // Effettua il pagamento $charge = Charge::create([ 'amount' => 5000, // Ad esempio 50 USD (5000 centesimi) 'currency' => 'usd', 'description' => 'Pagamento Test', 'source' => $token, ]); return back()->with('success', 'Pagamento completato con successo!'); } catch (\Exception $e) { return back()->withErrors(['error' => $e->getMessage()]); } } }
Nel metodo charge
, l’importo di pagamento è impostato a 5000 centesimi, che corrisponde a 50 USD. Puoi modificare questa cifra in base alle tue esigenze.
5. Testare il Sistema di Pagamento
Una volta che il codice è configurato, puoi testare il sistema di pagamento utilizzando le modalità di test di Stripe. Stripe ti fornirà delle carte di prova che puoi usare per simulare transazioni. Trovi questi dettagli nel Stripe Dashboard.
Per esempio, puoi usare il numero della carta di credito 4242 4242 4242 4242 con qualsiasi data di scadenza e qualsiasi CVV (ad esempio, 123).
Conclusione
In questo tutorial, abbiamo visto come integrare facilmente Stripe in un’applicazione Laravel 11 per gestire i pagamenti online in modo sicuro ed efficiente. Abbiamo configurato le chiavi API di Stripe, creato il modulo di pagamento e gestito la richiesta di pagamento nel backend. Con il supporto di Stripe Elements, abbiamo anche implementato una soluzione sicura per raccogliere i dati della carta di credito senza mai esporre le informazioni sensibili sul server.
L’uso di Laravel 11, insieme alla potenza e sicurezza di Stripe, ti consente di creare soluzioni di pagamento online scalabili, affidabili e facili da implementare. Che tu stia creando un’applicazione di e-commerce, un sistema di abbonamenti o qualsiasi altro tipo di servizio a pagamento, l’integrazione con Stripe ti fornirà una piattaforma di pagamento moderna, sicura e perfetta per il web.
Non dimenticare di testare le tue transazioni in modalità sandbox di Stripe per assicurarti che tutto funzioni come previsto prima di andare in produzione. Se desideri espandere questa implementazione, Stripe offre una vasta gamma di funzionalità aggiuntive, tra cui il supporto per pagamenti ricorrenti, gestione di fatture e analisi delle transazioni, che ti permetteranno di offrire ai tuoi utenti un’esperienza di pagamento ancora più completa e avanzata.
Concludendo, integrare il pagamento online in Laravel con Stripe è un processo relativamente semplice grazie alla documentazione di qualità fornita da entrambe le piattaforme, e ti consente di offrire un sistema di pagamento sicuro e intuitivo ai tuoi utenti in poco tempo.