stripe決済と会員サービスのコース


 

なかなか苦労したので、メモ。

苦労した点 コース管理は自前の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デザインなどの制作