0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Stripeテストクロックで、サブスクリプションを期間途中でプラン変更・解約した場合の差額計算をテストしよう

Posted at

顧客にサブスクリプションを提供する場合、契約・プラン変更タイミングによる差額調整解約処理の進め方など、時間経過を伴うデータの変化を考慮する必要があります。

考慮が必要なケースの例

  • 月額プランを、月の途中で上位 or 下位プランに変更した場合に、差額をどう処理するか
  • 「契約期間終了後に解約」設定のサブスクリプションで、Webhookの解約イベントが意図したタイミングで発火発火するか
  • 請求サイクルを固定したサブスクリプションを提供する場合、初回の請求額がどう変わるか

Stripeテストクロックで、顧客の時間経過をシミュレートしよう

Stripeでは、「顧客の時間」をテスト環境でシミュレートする「テストクロック」機能が用意されています。

この機能を使うことで、時間経過を伴う状態変化やWebhookイベントの発火をシミュレートできます。

test-clock-lifecycle.5ccbe48040e88de447cb08eea433d91b.png

ダッシュボードから、テストクロックの利用を開始する

Step1: シミュレーションを作成しよう

ダッシュボードから利用する場合、[支払い > サブスクリプション]に移動しましょう。

スクリーンショット 2022-10-20 15.09.23.png

[テストクロックの時間を使用して組み込みをテストし、請求書のシナリオをシミュレーション。]のリンクをクリックしましょう。

スクリーンショット 2022-10-20 15.10.29.png

[新しいシミュレーション]ボタンをクリックして、シミュレーションの準備を開始します。

スクリーンショット 2022-10-20 15.11.23.png

シミュレーションでは、[名前]と[開始日時]を設定できます。

スクリーンショット 2022-10-20 15.12.32.png

過去の日付を指定することもできます。

設定が終われば、[作成]をクリックしましょう。

スクリーンショット 2022-10-20 15.13.17.png

これで準備完了です。

スクリーンショット 2022-10-20 15.14.35.png

テストクロック一覧ページから、複数のテストクロックを作成したり、別のテストクロックを開いたりもできます。

Step2: シミュレーション用の顧客データを作成しよう

シミュレーションを始めるには、シミュレーションに紐づいた顧客データが必要です。

スクリーンショット 2022-10-20 15.13.17.png

[最初の顧客を追加]をクリックしましょう。

スクリーンショット 2022-10-20 15.15.36.png

顧客データを登録します。

スクリーンショット 2022-10-20 15.16.18.png

作成に成功すると、テストクロック詳細ページに顧客データが表示されます。

Step3: 顧客をサブスクリプションに登録しよう

最後に、作成した顧客を、シミュレートしたいサブスクリプションに登録しましょう。

[クロックオブジェクト]セクション右側にある、[追加]ボタンをクリックして、[サブスクリプションを追加]を選びます。
スクリーンショット 2022-10-20 15.17.12.png

[顧客]を選択すると、選択中のテストクロックに紐づいた顧客のみ表示されます。
スクリーンショット 2022-10-20 15.18.27.png

商品・料金を選択した後、トライアルの日数や決済用のテストカードの登録を済ませましょう。
スクリーンショット 2022-10-20 15.18.56.png

テスト用のカード番号は、こちらから確認できます。

作成に成功すると、クロックオブジェクトにサブスクリプションが表示されます。

スクリーンショット 2022-10-20 15.20.55.png

テストクロックで、時間経過をシミュレートする

シミュレーションの準備が完了すれば、いよいよ時間経過をシミュレートします。

テストクロック詳細ページから、[時間を進める]ボタンをクリックしましょう。

スクリーンショット 2022-10-20 15.21.03.png

どの時間まで進めるかを指定するモーダルが表示されます。

スクリーンショット 2022-10-20 15.22.28.png

年月日のフォームを選択すると、カレンダーと入力支援ボタンのある画面が立ち上がります。

スクリーンショット 2022-10-20 15.22.33.png

日時を指定後、[進める]をクリックすると、時間経過のシミュレーションを開始します。

「クロック時間はXXXX年XX月XX日〜」のテキストが、指定した日時に変わればシミュレート完了です。

スクリーンショット 2022-10-20 15.24.33.png

サブスクリプションの詳細ページに移動すると、インボイスやイベントログが、指定した時間分発行・記録されていることがわかります。

スクリーンショット 2022-10-20 15.25.23.png

サブスクリプションを更新して、その変化をシミュレートする

サブスクリプションや顧客の状態を変化させて、再度シミュレートしてみましょう。

画像のサンプルでは、サブスクリプションを更新して、プランの数量や終了日の指定を追加しています。

スクリーンショット 2022-10-20 15.26.41.png

テストクロックに紐づいた顧客やサブスクリプションの場合、それぞれの詳細ページでもテストクロックの操作ができます。

スクリーンショット 2022-10-20 15.28.08.png

[時間を進める]で解約予定日以降に時間を動かしてみましょう。

スクリーンショット 2022-10-20 15.29.01.png

契約期間を満了したため、サブスクリプションが解約されています。

スクリーンショット 2022-10-20 15.30.12.png

プラン変更時や解約時の差額調整(比例配分)も、インボイスで確認できます。

スクリーンショット 2022-10-20 15.30.24.png

Webhookイベントは、「シミュレート中の日時」でデータを送信

Webhookイベントも送信されるため、システム連携のテストも可能です。

スクリーンショット 2022-10-20 15.35.46.png

送信されるデータの日時(UNIXタイムスタンプ)は、シミュレート内の日時です。

そのため、Webhookイベントを受信する側のシステムは、「未来または過去の日付」でデータを処理することになる点に、注意しましょう。

Stripe APIとSDKで、シミュレーションをコード化する方法

テストクロックは、APIやSDKからも利用できます。

Node.jsでのサンプルコードを、以下の記事で紹介していますので、こちらも併せてご覧ください。

[PR] Stripe開発者向け情報をQiitaにて配信中!

  • [Stripe Updates]:開発者向けStripeアップデート紹介・解説
  • ユースケース別のStripe製品や実装サンプルの紹介
  • Stripeと外部サービス・OSSとの連携方法やTipsの紹介
  • 初心者向けのチュートリアル(予定)

など、Stripeを利用してオンラインビジネスを始める方法について週に2〜3本ペースで更新中です。

-> Stripe Organizationsをフォローして最新情報をQiitaで受け取る

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?