53

即時ではなく、期間終了時にユーザーをダウングレードすることはできますか? API ドキュメントをくまなく調べましたが、これを達成する方法を理解できませんでした。

回避策として、現在、ユーザーのサブスクリプションをすぐにキャンセルしてから、より少ないサブスクリプションにサブスクライブし、月末まで試用しています。ただし、これは機能しません-期間が終了するまでダウングレードを遅らせることができる必要があります(ただし、ダウングレードが要求された時点でStripeを使用して「記録」します)。

Webhook コールバックを使用したり、ユーザー サブスクリプションをローカルで追跡したりすることでこれを実現する方法があることは明らかですが、可能であればそれは避けたいと思います。


編集

誰かが尋ねる前に - 私は Temboo の PHP SDK を使用しています。ただし、言語固有のアプローチを探しているのではなく、高レベルのハウツー (可能であれば) を探しているだけです。

4

10 に答える 10

5

ユーザーがいつプランに参加したかを追跡する必要があります - データベースの customer_id の横に日付フィールドを保持します。この日付を使用して、参加した月の日、つまり請求サイクルを決定できます。請求日がその月の 31 日である場合、それより短い月では、Stripe はそれらの月の最終日に請求します ( https://support.stripe.com/questions/subscription-date-at-end-of-month )。

ユーザーがダウングレードを希望する場合、ログイン時に Web サイトでアクションを完了します。このダウングレード要求をメモして、データベースに「stripe_actionable_table」と呼びましょう。このテーブルに含める重要なフィールドは次のとおりです。

  • actionable_date (Stripe リクエストを実行する日付 - 上記のように短い月を決定するには何らかのロジックが必要です)
  • strip_customer_id
  • what_to_do (アップグレード/ダウングレード/キャンセル)
  • change_plan_to (プラン ID - キャンセル要求の場合は null になる可能性があります)

次に、毎日特定の時間に実行される cron を作成し、この strip_actionable_table をチェックして、その月の日がテーブル内の行と一致する場合は、Stripe リクエストを実行します。完了したら、行を削除または削除済みとしてマークできます。

于 2014-05-19T06:15:22.950 に答える