Skip to main content

Vue d’ensemble

Laravel Cashier (Stripe) est le package officiel qui interface Stripe avec Laravel. Il fournit une API unifiée pour créer des Subscriptions, vérifier leur état, les annuler, effectuer des paiements uniques, télécharger des factures et traiter les webhooks.

Installation et configuration

Installez Cashier et créez les tables nécessaires.
Ajoutez le trait Billable au modèle facturable (par ex. App\Models\User).
Configurez les clés Stripe dans .env.

Gestion des clients

Si un Customer Stripe peut ne pas exister encore : createOrGetStripeCustomer().
Pour créer explicitement : createAsStripeCustomer().

Subscriptions

Création

newSubscription() + create(). $paymentMethodId : ID de méthode de paiement obtenu via Stripe.js, etc.
price_monthly est un exemple : utilisez le vrai Price ID créé dans Stripe.

État

subscribed() indique si un abonnement est actif.

Annulation et reprise

Paiement unique (Charge)

charge() facture une fois. Le montant est en plus petite unité (ex : 100 = 1,00 USD). Utilisez à nouveau $paymentMethodId.
En cas d’échec, charge() lance une exception.

Payment Element

Le Payment Element Stripe unifie carte, Apple Pay, Google Pay, iDEAL, etc.

Pour un abonnement

Créez un Setup Intent et passez-le à la vue.
Montez le Payment Element avec le client_secret.
L’URL de redirection Stripe reçoit setup_intent. Récupérez la méthode de paiement et créez l’abonnement.

Pour un paiement unique

Utilisez pay() pour créer un Payment Intent. Votre modèle Order doit avoir user_id, amount, status, stripe_payment_intent_id.
Montez le Payment Element et confirmez.
Après redirection, retrouvez la commande via payment_intent, vérifiez qu’elle appartient à l’utilisateur et est en statut succeeded.

Factures

Liste des factures : invoices().
Pour le téléchargement PDF, installez dompdf/dompdf puis utilisez downloadInvoice().

Configuration des webhooks

Cashier enregistre une route webhook sur /stripe/webhook par défaut. Configurez cette URL dans Stripe. Créer le webhook :
Excluez stripe/* de la protection CSRF.
Définissez STRIPE_WEBHOOK_SECRET dans .env pour que le middleware de vérification de signature Cashier valide les requêtes.
Dernière modification le 13 juillet 2026