Stripe -Subscription 定期支払い-

前回はFlaskアプリにStripeによる支払いを実装しました。

今回は定期支払い(Subscription)を実装します。

Stripe -Payments Flaskアプリに導入-

 

定期支払い実装 -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の概念を理解するのに少し悩みましたが、パパッと作れそうです。

決済がこれだけ簡単に実装できるのは嬉しいです。

 

参考

コメントを残す