Stripe Webhookの使い方

django Python Published at Feb. 18, 2025, 10:20 a.m. by admin@senrigan.org

Stripeでクレジットカード払い(一回払い)の実装までは割とかんたんにできるけど、webhookには手こずったのでハマりポイントを記録しておく。

  • Stripe アカウント作成したらダッシュボードにアクセスして、Secret keyを確認してDjangoに設定する。Publishable keyはクライアントアプリで使う用途なのでここでは使わない。

  • webhookのエンドポイントURLをDjangoでは/payment/webhook/にしてたのに、Stripe側で間違って/payment/webook/に設定してて404 Not Foundになってた。

  • 開発環境でstripe-cli使って動作確認が終わったあと、本番環境でwebhookをテストするとき、「あれ、webhookの秘密鍵って開発環境でのテストはcliでリスナー起動するとに表示してくれるからすぐわかったけど、本番環境のはどこだ?」ってなって結構探した。作成したエンドポイントのSigning secretってところにある。

  • エンドポイント作成するときにlistenするイベントをpayment_intentしか選んでなかったので、charge.updatedの通知が来たときに400 Bad Request返してた。おかげで支払い(transaction?)を一意に特定するPayment IDが分からずじまいだった。