Skip to main content

概要

Laravel Cashier (Stripe) は、Stripe の課金機能を Laravel から扱うための公式パッケージです。あなたは Subscription の作成・状態確認・キャンセル、1回払い、請求書のダウンロード、Webhook 処理を統一された API で実装できます。

インストールと設定

まず Cashier をインストールし、必要なテーブルを作成してください。
次に、App\Models\User などの課金対象モデルに Billable トレイトを追加します。
.env に Stripe のキーを設定します。

顧客管理

Stripe Customer をまだ作成していない可能性がある場合は、createOrGetStripeCustomer() を使います。
明示的に作成するなら createAsStripeCustomer() を使います。

Subscription

新規作成

newSubscription()create() で Subscription を開始します。 $paymentMethodId には Stripe.js などで取得した Payment Method ID を渡します。
price_monthly は例です。実装時は Stripe ダッシュボードで作成した実際の Price ID を指定してください。

状態確認

subscribed() で有効な Subscription かどうかを確認できます。

キャンセルと再開

1回払い (Charge)

charge() で 1 回だけ課金できます。金額は通貨の最小単位で渡してください(例: USD なら 100$1.00)。 ここでも $paymentMethodId には Stripe で作成した Payment Method ID を使います。
課金に失敗した場合、charge() は例外をスローします。

Payment Element

Stripe の Payment Element を使うと、カード・Apple Pay・Google Pay・iDEAL など複数の決済手段を統一的に扱えます。

Subscription での利用

Setup Intent を作成してビューに渡します。
Blade ビューで Payment Element をマウントし、Setup Intent の client_secret を渡します。
Stripe のリダイレクト先 URL には setup_intent パラメータが付与されます。これを使って Payment Method ID を取得し、Subscription を作成します。

1回払いでの利用

1 回払いでは pay() で Payment Intent を作成します。Order モデルには user_idamountstatusstripe_payment_intent_id カラムが必要です。
Payment Element をマウントして決済を確定します。
リダイレクト後は payment_intent パラメータで Order を検索し、Payment Intent が認証済みユーザーのものであり succeeded ステータスであることを確認してから注文を確定します。

請求書

請求書一覧は invoices() で取得できます。
PDF ダウンロードには dompdf/dompdf をインストールし、downloadInvoice() を使います。$invoiceId には invoices() で取得した請求書 ID を渡してください。

Webhook の設定

Cashier は Stripe Webhook 用のルートを自動登録し、デフォルトで /stripe/webhook を使います。Stripe ダッシュボードにこの URL を設定してください。 Webhook の作成は cashier:webhook で実行できます。
CSRF 保護から stripe/* を除外してください。
STRIPE_WEBHOOK_SECRET.env に設定すると、Cashier の署名検証ミドルウェアで Webhook リクエストを検証できます。
最終更新日 2026年7月4日