LoginSignup
10
6

More than 1 year has passed since last update.

【時を駆ける】StripeのTest Clocks ベータ版を試してみた

Last updated at Posted at 2022-01-23

はじめに

Stripeのテストクロックのベータ版が使えるようになったらしい、ということで軽く試してみました。
テストクロックは最近新しく追加された機能で、仮想の時計を使ってサブスクリプションのライフサイクルを再現できる素敵なツールです。

※ 2022/3/7 追記 テストクロックが正式版としてリリースされました!

ダッシュボードのサブスクリプションのページに画像のようなリンクが表示されるようになります。

Image from Gyazo

クロックを作成する

まずは、検証に使う架空の時計を作成します。この時計に対して顧客とサブスクリプションを紐づけて検証を行います。

画面の「新しいシミュレーション」からクロックを作成します。作成したクロックは30日後に勝手に消えるようです。

Image from Gyazo
curlコマンドでAPIからも作成できます。

curl https://api.stripe.com/v1/test_helpers/test_clocks -u <APIシークレットキー> -d "frozen_time"=1635750000 -d "name"="MySimulation1"

検証用の顧客を追加する

クロックに顧客を追加します。
Image from Gyazo
Image from Gyazo

顧客にカードを追加する

先ほど作成した顧客に決済するカードを追加します。
Image from Gyazo

Image from Gyazo

検証に使用できるカード番号はドキュメントをご確認ください。
Testing | Stripe のドキュメント

顧客にサブスクリプションを作成する

顧客にサブスクリプションを紐づけます。
サブスクリプションは既存のものが使えるようです。

Image from Gyazo
Image from Gyazo

Webhookイベントを待ち受ける

Webhookエンドポイントを設置して、Webhookイベントを処理するアプリケーションが期待通りの動きをするか観察します。
Stripe CLIを使って stripe listen すると発火されたイベントをリアルタイムで確認できます。
Listen for events | Stripe CLI Reference

時計を進める

準備ができました。時を進めましょう。
ダッシュボードの "Advance Time" からクロックを進めたい時点を指定します。

Image from Gyazo
Image from Gyazo

"進める" を押すと、数秒間かけてクロックの時間が進んでいきます。

Webhookを確認する

期間中に起こるWebhookイベントが順番に発火されることを確認します。前後には以下のイベントが発火されます。

  • test_helpers.test_clock.advancing -> 進行開始
  • test_helpers.test_clock.ready -> 指定した時間まで進行完了
    Image from Gyazo

クロックを削除する

検証が終わったら、クロックを削除します。画面の "Finish simulation" から削除できます。
Image from Gyazo

クロックの中で新しく作成された顧客やサブスクリプションは、このタイミングで一緒に削除されます。

注意点

クロックは使い捨て

現実と同じようにクロックの時間は巻き戻すことができません。また、作成したクロックは30日後に自動で削除されます。
これらのことから、クロックは検証する度に使い捨てる運用を想定しているようです。

作成からクロックオブジェクトの紐づけまでをスクリプト化しておくのが良さそうです。

気になった点

使ってみて気になる点がいくつかありました。これらはフィードバックを送ってみようと思います。

Stripe CLIから操作できない

現状、コマンドラインからクロックを操作する際は curl コマンドでAPIを呼び出す必要があります。Stripe CLIから操作できないので正式リリースまでにコマンドが追加されると嬉しいです。

APIではfrozen_timeにUNIX時間を指定する

APIからfrozen_timeを指定するときはUNIX時間に変換してから指定する必要があります。UNIX時間以外にも時間とタイムゾーンの組み合わせで指定できるオプションが欲しいところです。

ダッシュボードからクロックのIDが分からない

クロックにはそれぞれID(clock_XXXXXX)があり、APIからクロックを操作する際は対象のクロックIDを引数に指定するのですが、ダッシュボードではこのIDを確認できません。他のリソースと同様にIDを表示してほしいなと感じました。
Image from Gyazo
Image from Gyazo

まとめ

ベータ版を使ってみてとても便利な機能だと思いました。

サブスクリプションのWebhook検証は今まで請求間隔の短い商品を作ったり、実際に時間が経つのを待って検証していましたが、テストクロックを使うことでサクッと検証ができるようになりました。
顧客のカードを変更できるので有効期限切れなどのイベントを意図的に発生させたいときにも使えそうです。

参考リンク

10
6
1

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
10
6