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.Billable al modello fatturabile (es. App\Models\User).
.env.
Gestione dei customer
Se il Customer Stripe potrebbe non esistere, usacreateOrGetStripeCustomer().
createAsStripeCustomer().
Subscription
Creazione
ConnewSubscription() 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)
Concharge() esegui un singolo addebito. L’importo è nell’unità minima della valuta (per EUR 100 = 1,00 €).
Anche qui usi $paymentMethodId.
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.client_secret.
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 usapay() per creare un Payment Intent. Il modello Order richiede colonne user_id, amount, status, stripe_payment_intent_id.
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 coninvoices().
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.
stripe/* dalla protezione CSRF.
STRIPE_WEBHOOK_SECRET in .env, il middleware di Cashier verifica la firma delle richieste webhook.