💬
Laravel Cashierでsubscribed()が更新されない時に確認すること
数時間迷走しました。
ちゃんとドキュメントを読もう。(戒め)
確認すること
- Webhookを受けられるようにする。
- 必要なイベントが送信されるようにする。(ローカル以外)
ちゃんとドキュメントを読もう、マジで。(怒)
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
しか設定してませんでした。
さっきのぼく「ふぇぇ...状態が変わらないよぉ...」(アホ)
以上、ドキュメントはちゃんと読もう。
Discussion