Skip to main content

Panoramica

Laravel Cashier (Stripe) è il pacchetto ufficiale per gestire le funzionalità di fatturazione di Stripe da Laravel. Implementi con un’API unificata creazione/verifica/cancellazione di abbonamenti, pagamenti singoli, download di fatture e gestione dei webhook.

Installazione e configurazione

Installa Cashier e crea le tabelle necessarie.
Aggiungi il trait Billable al modello fatturabile (es. App\Models\User).
Imposta le chiavi Stripe in .env.

Gestione dei customer

Se il Customer Stripe potrebbe non esistere, usa createOrGetStripeCustomer().
Per crearlo esplicitamente usa createAsStripeCustomer().

Subscription

Creazione

Con newSubscription() e create(). Passa a $paymentMethodId il Payment Method ID ottenuto con Stripe.js.
price_monthly è un esempio: usa il vero Price ID definito nella dashboard Stripe.

Verifica dello stato

Cancellazione e ripresa

Pagamenti singoli (Charge)

Con charge() esegui un singolo addebito. L’importo è nell’unità minima della valuta (per EUR 100 = 1,00 €). Anche qui usi $paymentMethodId.
Se l’addebito fallisce, charge() lancia un’eccezione.

Payment Element

Con il Payment Element di Stripe puoi gestire più metodi (carta, Apple Pay, Google Pay, iDEAL) in modo uniforme.

Con Subscription

Crea un Setup Intent e passalo alla vista.
Nella vista Blade monta il Payment Element passandogli il client_secret.
Nel return_url viene appeso il parametro setup_intent. Usalo per ottenere il Payment Method ID e creare l’abbonamento.

Con pagamento singolo

Per il pagamento singolo usa pay() per creare un Payment Intent. Il modello Order richiede colonne user_id, amount, status, stripe_payment_intent_id.
Monta il Payment Element per confermare.
Dopo il redirect, con payment_intent recuperi l’Order e verifichi che il Payment Intent sia dell’utente autenticato ed in stato succeeded, poi conferma l’ordine.

Fatture

Ottieni la lista delle fatture con invoices().
Per scaricare il PDF installa dompdf/dompdf e usa downloadInvoice(). Passa a $invoiceId l’ID recuperato da invoices().

Configurazione dei webhook

Cashier registra automaticamente la route dei webhook Stripe e usa di default /stripe/webhook. Imposta questo URL nella dashboard Stripe. Puoi creare l’endpoint con cashier:webhook.
Escludi stripe/* dalla protezione CSRF.
Impostando STRIPE_WEBHOOK_SECRET in .env, il middleware di Cashier verifica la firma delle richieste webhook.
Ultima modifica il 13 luglio 2026