概要
RailsでAPIを使うまでの事前準備はこちら。
Rails Stripe サブスクリプション決済実装 初期設定をしてAPIを使える状態にする
プランの登録はこちら。
Rails Stripe サブスクリプション決済実装 プランの登録
今回はカスタマーにプランを設定する実装の紹介をします。
この工程によってカスタマーにサブスクリプションが登録されます。
サブスクリプションというのは定期支払いのことです。
管理ページからカスタマーにサブスクリプションを追加する
サイドメニューの定期支払いでサブスクリプション一覧が閲覧できます。
以下の画像はサブスクリプションが1件もない場合の見え方です。
新規ボタンよりサブスクリプションを追加しましょう。
追加ボタンをクリックすると作成画面に遷移します。
まずはカスタマーを選択します。
(「追加」と書いていますが、新規にカスタマーを追加するわけではありません。「選択」の方がニュアンスあっているかと。)
カスタマーは候補に10人くまでは出てきてくれます。(登録日時の降順かな?)
候補に存在しない場合は検索しましょう。
カスタマーの選択の次はプランの選択です。
(「追加」と書いていますが、新規にプランをを追加するわけでは...以下略)
これも候補に存在しない場合は検索しましょう。
確認画面です。
「定期支払いを作成」をクリックすると完了します。
プランをカスタマーに設定できたらカスタマー詳細画面にも表示されます。
ちゃんと設定できてますね。
正常に設定できていればサブスクリプション一覧に表示されます。
以上です。結構めんどくさいですね。
複数人一括でプラン設定などできないので、
数十、数百人単位でプラン変更したい時などは正直手動では無理なのではないでしょうか?(不可能とは言っていない)
Railsからカスタマーにプランを設定する
それでは、Railsでの実装を見ていきましょう。
今回は2パターン紹介します。
新規カスタマーにプランを設定する
新規カスタマーを作成するには、
Stripe::Customer
クラスのcreate
メソッドを使用します。
公式リファレンス:Create a customer
カスタマーを作成するパラメータの一つにプランが設定できます。
Stripe::Customer.create(
email:'test@test.com',
plan: 'small_plan_monthly'
)
既存カスタマーにプランを設定する
既存カスタマーを取得するには、
Stripe::Customer
クラスのretrieve
メソッドを使用します。
公式リファレンス:Retrieve a customer
取得したカスタマーに対してプランを設定します。
customer = ::Stripe::Customer.retrieve('cus_XXXXX')
customer.plan = 'small_plan_monthly'
customer.save
planに設定するID
上記どちらの場合でもplanにIDを設定しましたが、planのIDってなに!?という人もいるかもしれないので一応ここのことです。
プラン登録時に設定したIDですね。
サブスクリプション有効期限の取得
Customer.create
、Customer.retrieve
で取得したカスタマーオブジェクトには色々な情報が入っています。
サブスクリプションを管理するのに使えそうなものも何点かありますが、今回はサブスクリプション有効期限の紹介をします。
current_period_end
がサブスクリプション有効期限のエンドです。
この値はタイムスタンプになっているので変換する必要があります。
Time.zone.at(customer.current_period_end)
参考
- Stripe API Reference
https://stripe.com/docs/api
ブログで見たい方はこちら
Rails Stripe サブスクリプション決済実装 カスタマーにプランを設定する