💬

Laravel Cashierでsubscribed()が更新されない時に確認すること

2024/04/13に公開

数時間迷走しました。
ちゃんとドキュメントを読もう。(戒め)

https://laravel.com/docs/11.x/billing#handling-stripe-webhooks

確認すること

  1. Webhookを受けられるようにする。
  2. 必要なイベントが送信されるようにする。(ローカル以外)

ちゃんとドキュメントを読もう、マジで。(怒)

Webhookを受けられるようにする。

WebhookControllerを継承したFooControllerとかでもいいです。

Route::post('/stripe/webhooks', [Laravel\Cashier\Http\Controllers\WebhookController::class, 'handleWebhook']);

ここまでは大丈夫でした。

必要なイベントが送信されるようにする。(ローカル以外)

ローカル環境でWebhookを受ける場合は通常Stripe CLIのlistenを使うことになるかと思います。
その場合Stripe側で特に設定しなくてもいろんなイベントを勝手に送信してくれます。

CLIを使う環境だといいんですが、そうでない環境の場合はStripe側から送信するイベントを設定してあげないといけません。

必要なイベントは下記の8つです。

  • customer.subscription.created
  • customer.subscription.updated
  • customer.subscription.deleted
  • customer.updated
  • customer.deleted
  • payment_method.automatically_updated
  • invoice.payment_action_required
  • invoice.payment_succeeded

処理はさっきのWebhookControllerにあります。
(invoice.payment_succeeded以外。なんだこいつは。)

私はcheckout.session.completedしか設定してませんでした。
さっきのぼく「ふぇぇ...状態が変わらないよぉ...」(アホ)

以上、ドキュメントはちゃんと読もう。

Opligence Developer Blog

Discussion