なかなか苦労したので、メモ。
苦労した点 コース管理は自前のDBでしているので、webhookからのデータ更新部分。
なにが苦労したかというと、自前のuserIDとどのコースをユーザーが購入したという2つのデータの取得の部分。
最初は、checkoutのセッション情報に、その2つを渡しておけば、webhookのサブスクリブションオブジェクトから辿れると思っていた。しかし、なかなか辿れない。
ググっても、そういう情報に当たらない。
だんだん、「当たらないってことは、別の方法で実装方法があるのでは?」と思ってきた。
そして、その方向でググって、ヒントを得ました。
決済のほんの直前に、customerオブジェクトを作ってしまって、stripeのcustomerデータを自前のuserデータに入れて、自前のuserIDと紐づけてしまうということなんですね。
実際に購入までいかなくても、紐づけてしまう。
そうすると、webhookのエンドポイント(今回はphp)で、サブスクリブションのオブジェクトの中に、customerデータもあるし、商品IDとかプランIDとかあるので、自前のデータまで辿れる。
そういうことだったんですね。
あと、今後は、自前のDBにコースを制御するデータを持たないほうがやりやすいかもと思いました。
stripeにたまに聞いて、サービス側でセッションでそのコースデータを維持して、サービスする方がやりやすいかもしれないです。
firebaseの会員管理authとstripeのcustomerをまずは、早めに結びつけてしまうのが、いいんじゃないかと思いました。次回似た要件の場合は、そうしてみようかと。
自前のuserテーブルは、id,firebase_uid,stripe_customerという構造にしておくといいかも。
WEBプログム、WEBデザインなどの制作については、以下を御覧ください。
WEBプログム、WEBデザインなどの制作