StripeのWebhookには、100個以上のEndpoint(エンドポイント)があります。
この中からお好きなポイントを選び、管理者へのメール通知などのイベントを設定できます。
たくさんあるのは便利ですが、
「一体、どのEndpointを選択したらいいんだろ」
と悩んじゃいますよね。
そこで、サブスクリプション契約時に使うEndpointを表にし、選択したほうが良い5箇所には★印をつけました。
Stripeサブスクリプション契約時のおすすめWebhook Endpoint
次の4つのタイミング別に表にしています。
- ユーザーがフォームに入力時
- ユーザーがフォーム送信後
- ユーザーがサブスク開始後
- そのほか
おすすめポイントは右側に★をいれています。
この5か所は、Laravelの公式マニュアルでも推奨されています。
【StripeのWebhook Endpoints】
タイミング | Endpoint | 意味 | おすすめEndpoint |
ユーザーがフォーム入力時 | setup_intent.created | 新たにSetupIntentが作られたとき | |
setup_intent.setup_failed | SetupIntentでpayment methodをセットアップできなかったとき (カード認証不可やサーバーエラーなど) |
||
setup_intent.succeeded | SetupIntentでpayment methodがpayment methodをセットアップできたとき | ||
ユーザーがフォーム送信後 | customer.created | カスタマーが作成されたとき | |
payment_method.attached | 新たなpayment methodがカスタマーに紐づけられたとき | ||
customer.updated | カスタマーのプロパティが更新されたとき | ||
charge.succeeded | チャージ(課金)が成功したとき | ||
invoice.created | Invoiceが作成されたとき | ||
invoice.finalized | Invoiceがドラフトから未決済Invoiceに更新されたとき | ||
invoice.paid | Invoiceの支払いが成功した、あるいはStripe外で支払われ、手動で反映させたとき | ||
invoice.payment_succeeded | Invoiceの支払いが成功したとき | ★★★ | |
customer.subscription.created | カスタマーが新たなプランをサインアップしたとき | ||
payment_intent.created | PaymentIntentが新たに作成されたとき | ||
payment_intent.succeeded | PaymentIntentが支払いを無事完了したとき | ||
ユーザーがサブスク開始後 | customer.subscription.updated | カスタマーがプランを変更したとき (トライアルからアクティブに変更したり、次回の更新を停止したりも含む) |
★★★ |
customer.updated | カスタマー情報変更(カード新規追加など) | ★★ | |
そのほか | customer.discount.created | ユーザーがクーポンを利用したとき | |
customer.subscription.deleted | ユーザーのサブスクリプションを終了させたとき | ★ | |
customer.deleted | ユーザーを削除したとき | ★ | |
charge.refunded | 返金処理を行ったとき |
契約時はたくさんのエンドポイントがありますが、1個を選ぶなら【invoice.payment_succeeded】がおすすめ。
ユーザーがプラン変更を行える仕様であれば、【customer.subscription.updated】も選んでおきたいポイント。
サブスク終了やユーザー削除は重要なポイントなので★をいれましたが、管理者が行うので、選択なしでもOKかと思います。
さいごに
WebhookのEndpointで選択したい5か所と、各Endpointの意味を表にしました。
あとはお好みですが、クーポン利用(customer.discount.created)や支払い失敗時(setup_intent.setup_failed)なども入れておくと便利かな、と思います。
なおLaravelでEndpointに処理を入れる方法は、別記事で解説しています。
じゅんこ
自動化して、効率的なシステムを作っていきましょう♪