Skip to main content

Overzicht

Laravel Cashier (Stripe) is het officiële package om de betaalfunctionaliteit van Stripe vanuit Laravel te gebruiken. Je kunt met een uniforme API subscriptions aanmaken, de status controleren en opzeggen, eenmalige betalingen uitvoeren, facturen downloaden en webhooks verwerken.

Installatie en configuratie

Installeer eerst Cashier en maak de benodigde tabellen aan.
Voeg vervolgens de Billable-trait toe aan het model waarvoor gefactureerd wordt, zoals App\Models\User.
Stel je Stripe-sleutels in in .env.

Klantbeheer

Als er mogelijk nog geen Stripe Customer is aangemaakt, gebruik je createOrGetStripeCustomer().
Wil je expliciet een klant aanmaken, gebruik dan createAsStripeCustomer().

Subscriptions

Nieuwe subscription aanmaken

Start een subscription met newSubscription() en create(). Aan $paymentMethodId geef je een Payment Method ID door die je bijvoorbeeld via Stripe.js hebt opgehaald.
price_monthly is een voorbeeld. Geef bij de implementatie het daadwerkelijke Price ID op dat je in het Stripe-dashboard hebt aangemaakt.

Status controleren

Met subscribed() controleer je of er een actieve subscription is.

Opzeggen en hervatten

Eenmalige betaling (Charge)

Met charge() breng je eenmalig een bedrag in rekening. Geef het bedrag door in de kleinste eenheid van de valuta (bijvoorbeeld: bij USD is 100 gelijk aan $1.00). Ook hier gebruik je voor $paymentMethodId een Payment Method ID dat in Stripe is aangemaakt.
Als de betaling mislukt, gooit charge() een exception.

Payment Element

Met Stripe’s Payment Element kun je meerdere betaalmethoden zoals kaarten, Apple Pay, Google Pay en iDEAL op een uniforme manier afhandelen.

Gebruik met subscriptions

Maak een Setup Intent aan en geef die door aan de view.
Mount het Payment Element in de Blade-view en geef de client_secret van de Setup Intent door.
Aan de redirect-URL van Stripe wordt een setup_intent-parameter toegevoegd. Hiermee haal je het Payment Method ID op en maak je de subscription aan.

Gebruik bij eenmalige betalingen

Bij een eenmalige betaling maak je met pay() een Payment Intent aan. Het Order-model heeft de kolommen user_id, amount, status en stripe_payment_intent_id nodig.
Mount het Payment Element en bevestig de betaling.
Na de redirect zoek je de Order op via de payment_intent-parameter, controleer je dat de Payment Intent van de geauthenticeerde gebruiker is en de status succeeded heeft, en bevestig je daarna de bestelling.

Facturen

Een lijst van facturen haal je op met invoices().
Voor het downloaden als PDF installeer je dompdf/dompdf en gebruik je downloadInvoice(). Geef aan $invoiceId een factuur-ID door dat je met invoices() hebt opgehaald.

Webhooks instellen

Cashier registreert automatisch een route voor Stripe-webhooks en gebruikt standaard /stripe/webhook. Stel deze URL in in het Stripe-dashboard. Je kunt de webhook aanmaken met cashier:webhook.
Sluit stripe/* uit van de CSRF-beveiliging.
Als je STRIPE_WEBHOOK_SECRET in .env instelt, kan de handtekeningverificatie-middleware van Cashier de webhook-requests verifiëren.
Laatst gewijzigd op 6 september 2026