Stripe -Subscription 定期支払い-
前回はFlaskアプリにStripeによる支払いを実装しました。
今回は定期支払い(Subscription)を実装します。
目次
定期支払い実装 -Stripeダッシュボードにて-
Stripeにログインしてプランを作成します。
定期支払いはユーザとプランの組み合わせで定義されます。
「定期支払い -> プラン -> 新規」からプランを作成します。
ID、名前、通過、金額、期間を設定します。「プランを作成」。
これで新たなプランができました。
上部のタブから「定期支払い」を選択肢、「新規」で新たな定期支払いを作成します。
「顧客を追加」、「プランを追加」を行い、「定期支払いを作成」を押しましょう。
作成された定期支払いの詳細が表示されます。
トップに戻ると、新しい定期支払いが作成されていることが確認できます。
定期支払い実装 -Flaskアプリ内にて-
今回使用したライブラリはこちらです。
Planの作成
アプリからプランを作成することも可能みたいです。実際に試すことがあればまとめます。
Subscriptionの作成
以下のようにcreate()
メソッドでcustomerとplanを引数に取れば作成できます。
customerには顧客のID、planには上記のダッシュボードで作成したプランのIDを指定します。
import stripe subscription = stripe.Subscription.create( customer=customer.id, plan='basic' )
実行するとちゃんと作成されました。
Subscriptionの変更
以下のようにまずサブスクリプションIDで対象のサブスクリプションのitem_id
を取得します。
そしてmodify()
メソッドに引数としてサブスクリプションのID、item_id、新しいplanを指定することで変更が可能です。
stripe.api_key = "sk_test_mE7XWXneJMbK2Z22ILqIQDwz" subscription = stripe.Subscription.retrieve("sub_49ty4767H20z6a") item_id = subscription['items']['data'][0].id stripe.Subscription.modify("sub_49ty4767H20z6a", items=[{ "id": item_id, "plan": "pro-monthly", }], )
詳しくはこちらを参考に。
すごいのはアップグレードもダウングレードも自動で対応してくれる点です。
実際に、$0のfreeと$5のbasicというサブスクリプションを作成して切り替えてみました。
以下のようにプランの金額から自動でアップグレード、ダウングレードを判断しています。
おまけ
Subscriptionの概念を理解するのに少し悩みましたが、パパッと作れそうです。
決済がこれだけ簡単に実装できるのは嬉しいです。