顧客にサブスクリプションを提供する場合、契約・プラン変更タイミングによる差額調整や解約処理の進め方など、時間経過を伴うデータの変化を考慮する必要があります。
考慮が必要なケースの例
- 月額プランを、月の途中で上位 or 下位プランに変更した場合に、差額をどう処理するか
- 「契約期間終了後に解約」設定のサブスクリプションで、Webhookの解約イベントが意図したタイミングで発火発火するか
- 請求サイクルを固定したサブスクリプションを提供する場合、初回の請求額がどう変わるか
Stripeテストクロックで、顧客の時間経過をシミュレートしよう
Stripeでは、「顧客の時間」をテスト環境でシミュレートする「テストクロック」機能が用意されています。
この機能を使うことで、時間経過を伴う状態変化やWebhookイベントの発火をシミュレートできます。
ダッシュボードから、テストクロックの利用を開始する
Step1: シミュレーションを作成しよう
ダッシュボードから利用する場合、[支払い > サブスクリプション]に移動しましょう。
[テストクロックの時間を使用して組み込みをテストし、請求書のシナリオをシミュレーション。]のリンクをクリックしましょう。
[新しいシミュレーション]ボタンをクリックして、シミュレーションの準備を開始します。
シミュレーションでは、[名前]と[開始日時]を設定できます。
過去の日付を指定することもできます。
設定が終われば、[作成]をクリックしましょう。
これで準備完了です。
テストクロック一覧ページから、複数のテストクロックを作成したり、別のテストクロックを開いたりもできます。
Step2: シミュレーション用の顧客データを作成しよう
シミュレーションを始めるには、シミュレーションに紐づいた顧客データが必要です。
[最初の顧客を追加]をクリックしましょう。
顧客データを登録します。
作成に成功すると、テストクロック詳細ページに顧客データが表示されます。
Step3: 顧客をサブスクリプションに登録しよう
最後に、作成した顧客を、シミュレートしたいサブスクリプションに登録しましょう。
[クロックオブジェクト]セクション右側にある、[追加]ボタンをクリックして、[サブスクリプションを追加]を選びます。
[顧客]を選択すると、選択中のテストクロックに紐づいた顧客のみ表示されます。
商品・料金を選択した後、トライアルの日数や決済用のテストカードの登録を済ませましょう。
テスト用のカード番号は、こちらから確認できます。
作成に成功すると、クロックオブジェクトにサブスクリプションが表示されます。
テストクロックで、時間経過をシミュレートする
シミュレーションの準備が完了すれば、いよいよ時間経過をシミュレートします。
テストクロック詳細ページから、[時間を進める]ボタンをクリックしましょう。
どの時間まで進めるかを指定するモーダルが表示されます。
年月日のフォームを選択すると、カレンダーと入力支援ボタンのある画面が立ち上がります。
日時を指定後、[進める]をクリックすると、時間経過のシミュレーションを開始します。
「クロック時間はXXXX年XX月XX日〜」のテキストが、指定した日時に変わればシミュレート完了です。
サブスクリプションの詳細ページに移動すると、インボイスやイベントログが、指定した時間分発行・記録されていることがわかります。
サブスクリプションを更新して、その変化をシミュレートする
サブスクリプションや顧客の状態を変化させて、再度シミュレートしてみましょう。
画像のサンプルでは、サブスクリプションを更新して、プランの数量や終了日の指定を追加しています。
テストクロックに紐づいた顧客やサブスクリプションの場合、それぞれの詳細ページでもテストクロックの操作ができます。
[時間を進める]で解約予定日以降に時間を動かしてみましょう。
契約期間を満了したため、サブスクリプションが解約されています。
プラン変更時や解約時の差額調整(比例配分)も、インボイスで確認できます。
Webhookイベントは、「シミュレート中の日時」でデータを送信
Webhookイベントも送信されるため、システム連携のテストも可能です。
送信されるデータの日時(UNIXタイムスタンプ)は、シミュレート内の日時です。
そのため、Webhookイベントを受信する側のシステムは、「未来または過去の日付」でデータを処理することになる点に、注意しましょう。
Stripe APIとSDKで、シミュレーションをコード化する方法
テストクロックは、APIやSDKからも利用できます。
Node.jsでのサンプルコードを、以下の記事で紹介していますので、こちらも併せてご覧ください。
[PR] Stripe開発者向け情報をQiitaにて配信中!
- [Stripe Updates]:開発者向けStripeアップデート紹介・解説
- ユースケース別のStripe製品や実装サンプルの紹介
- Stripeと外部サービス・OSSとの連携方法やTipsの紹介
- 初心者向けのチュートリアル(予定)
など、Stripeを利用してオンラインビジネスを始める方法について週に2〜3本ペースで更新中です。