2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PostmanAdvent Calendar 2024

Day 3

Postman Flowを使って、Stripeのサブスクリプションをシミュレーションする仕組みを作ってみた

Posted at

この記事は、Postman Advent Calendar 2024 3日目の投稿です。

こんにちは、Stripe Developer Advocateの岡本です。Qiitaでは、Stripeに関する記事を大体年に40-50本投稿したり、開発者コミュニティへの参加や登壇などにも携わっています。

Postmanでは、APIコレクションを公開している他、YouTubeチャンネル(英語)でも使い方の紹介なども行っています、PostmanでStripe APIを試されたい方は、ぜひ公式のガイド記事などもお試しください。

今回はPostman Flowを使ったシミュレーターの作成に挑戦した時のことを紹介したいと思います。

サブスクリプションの時間経過を伴うテストには、複数のAPIリクエストが必要

Stripeには、サブスクリプションの時間経過をシミュレーションできる仕組み(テストクロック)があります。この機能を使うことで、契約期間途中でのプラン変更における差額計算や、長期間の未払いが発生した時の処理について事前にテストできます。この手続きをAPIで行う場合、次のようなステップを踏みます。

  • テストクロックオブジェクトを作成する
  • テストクロックに紐づいた顧客と支払い情報を作成する
  • サブスクリプションを作成する
  • テストクロックの時間を進める
  • サブスクリプションを更新する

おおまかに書き出しただけでも、5つ6つのStripe APIを呼び出し、それぞれのレスポンスを引き回す実装が必要です。プログラム言語で実装することが大変・・・というほどではありませんが、それでもスクリプトのダウンロードやAPIキーの設定など、新しく参加したメンバーがシミュレーションを開始するには少し手間が残ります。

そこで今回はワークフローを簡単に作成、実行できるPostman Flowを使ってみました。

今回作成したFlow

作成したFlowがこちらです。かなり大きなフローになってしまったため、何枚かのスクリーンショットに分割してご紹介します。

初めのステップでは、シミュレーション期間や対象のプランIDなどの設定と、テストクロックのセットアップを行います。Date & Timeのレコードで設定した日時を、EvaluateでUNIX TIMESTAMPへの変換処理($floor(input.start_at/1000))にかけ、Send Requestfrozen_timeとしてStripe APIリクエストで送信します。

スクリーンショット 2024-11-28 14.01.39.png

次のステップではStripe上にCustomerと支払い情報の設定を行っています。Customerを作成するAPIリクエストで、payment_methodパラメータにpm_card_visaを設定しています。

スクリーンショット 2024-11-28 14.01.52.png

その後サブスクリプションを作成し、時間のシミュレーションを開始します。Stripeのテストクロックによるシミュレーション実行が完了するまですこし時間を必要とすることがあります。そのため、Delayで15000msほどの遅延を入れるようにしました。プラン変更のシミュレーションとその後の時間経過についても、ほぼ同様の手順で行います。

スクリーンショット 2024-11-28 14.02.04.png

最後に日割り計算のシミュレーション結果を出すため、InvoiceのAPIを呼び出して明細を表示させています。

スクリーンショット 2024-11-28 14.02.10.png

Flowそのものを共有しない理由
お恥ずかしながら、作成完了後にPrivate WorkspacesでFlowを構築してみまいました・・・
そのため、完全に同じものを作り直す以外にFlowを公開することが難しく、今回はスクリーンショットでの共有といたします。

このFlowを実行すると、途中でプラン変更した場合と、そうでない場合の請求内容を比較してチェックできます。今回のサンプルでは、契約期間途中に新しく追加されたプラン分の価格が新しい請求内容に反映されています。

スクリーンショット 2024-11-28 14.14.41.png

Postman Flowを作成してみて

Private Workspaceに作ってしまったため、公開や共有が難しい状態になるハプニングはありました。ただしその部分さえ回避すれば、Postman Flowで定義したテストシナリオを、Flowにアクセスできる人が簡単に実行できるようになるのは魅力的です。Recordを使って更新タイミングや更新内容を変更できるようにすることで、APIパラメータを差し替えるタイプのテストシナリオ変更は簡単に実現できそうでした。

もしPostman Flowを使ってAPIリクエストを組み合わせる際、意図しないエラーが発生した場合は、StripeのダッシュボードにあるAPIログ機能も調査に活かせます。PostmanがどのようなAPIリクエストを送信しようとしているか、そしてStripeがどのようなエラーを返しており、それがどんな原因かなども簡単にチェックできます。

スクリーンショット 2024-11-28 14.21.10.png

Postman FlowとStripeダッシュボードを組み合わせて、ぜひ決済処理や請求管理に関するテストシナリオの作成を、2025年はみなさん挑戦してみてください。

Stripe x Postmanに興味がある方はこちら

Stripeが公開しているPostmanコレクションについては、Stripe Docsでも紹介しています。

スクリーンショット 2024-11-28 14.23.46.png
https://docs.stripe.com/test-mode#postman-collection

インポート方法やテストケースのヒントなども紹介されていますので、ぜひご覧ください。

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?