Laravel Cashier(Stripe)で、StripeのCustomer生成を捕まえる。
数年ぶりの投稿です。LaravelにはCashierというパッケージが用意されています。機能としては、サブスクリプション(定期課金)を簡単にできるようにするものです。現在はStripeとPaddle、2つの課金サービスをサポートしています。(それぞれ、別パッケージ)
私はLaravelのドキュメントを翻訳していますが、Paddle版は訳していません。UIが日本語に対応していないため、日本人のユーザーに使われる見込みがない、つまり読まれないからです。
Cashierに戻ると、定期課金を簡単にできるようにするためのパッケージでしたが、Stripeの進化に追いついていないように思えます。Cashierが想定しているシナリオは、サービスや商品を売りたい人が、自前のWebページでそれを紹介し、気に入った顧客はそのWebページから購入手続きを進めるというものでしょう。
このシナリオであれば、Cashierが管理する顧客と、Laravelのユーザーを紐付けることができます。こういう使い方が想定されています。
さて、私が今回Cashierに興味を持ったのは、翻訳プロジェクトへの寄付です。病気が悪化したため、寄付に頼ることにし、そのために調べ始めました。すると、Stripeがノーコード、つまりプログラミングをしなくても、大抵のことが用意されていることに気が付きました。
例えば、商品、この場合は寄付ですが、「月に1,000円寄付する」リンクをStripeで生成し、それを自前のWebページではなく、どこにでも貼り付け、それにより寄付を募るという手法が取れます。プログラミングは必要ありません。
ただ、顧客に定期課金の解約や変更、プラン(値段)の変更、カードの追加/切り替えがやってもらえません。これを実現するためStripeにはポータルが用意されています。
私が用意したサービスを誰かが購入してくれると、Stripeは顧客を作成します。顧客にはIDが付いており、このIDを元にその顧客のポータルページを表示してもらいます。もちろん、カードやプランの切り替えもお任せです。いままでは、Cashierでプログラムする必要のある部分が、今ではStripeがやってくれる時代になったということです。Cashier自体の存在意義が薄れます。
ただし、ポータルにはその顧客自身のポータルを表示する義務があります。他の顧客の情報を表示するのは大問題です。つまり、顧客の認証が必要です。現在、その部分はStripeで提供されていません。そこまで提供してくれれば、使いやすく最強のスクリプション提供システムになると思います。いささか、中途半端な感じはします。将来はサポートされると思っています。
顧客の認証部分はCashier、というよりはLaravelの担当部分です。Laravelに組み込まれている部分です。これが利用できます。