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が分からずじまいだった。