Stripe CLIを利用したDockerのテスト環境を構築

3 min read読了の目安(約2800字

ごろうです。この記事はJP_Stripes Advent Calendar 2020の17日目のエントリーです。
以前からStripe CLIを使ったテスト環境を整備したかったので作ってみました。

https://adventar.org/calendars/5626

Stripe CLIとは

Stripe公式のコマンドツールで、Stripeアカウントに接続してデータの作成・イベントトリガー・webookイベントをlistenしたりできるGo製の便利コマンドです。

https://stripe.com/docs/stripe-cli

その中でもwebhookイベントをlistenできるコマンドがとても便利で、webhookイベントリクエストを別のアクセスポイントにフォワードすることができます。

https://stripe.com/docs/cli

Dockerでのテスト環境

そこで、Docker環境で簡単にwebhookの確認ができるgurimmer/stripe-webhook-testを作りました。

https://github.com/gurimmer/stripe-webhook-test

Stripe CLIでwebhookイベントをlistenしたものを、PHPのビルトインサーバ(PHP8)に流すサンプルを作りました。


Stripe CLIの大まかなフロー

以下のようなケースで役に立つと思います。

  1. APIバージョンアップデートでwebhookイベントデータの仕様変更確認
  2. 実際のデータでwebhookテスト
  3. Stripe管理画面を直接操作して、webhookイベントの把握
  4. webアプリの処理結果を利用したwebhookテスト

リポジトリのビルトインサーバ部分をテストしたいwebアプリなどに変更することでローカルでのテストも可能になります。

webhookイベントは連携しているStripeアカウントのデフォルトAPIバージョンの仕様で応答します。APIバージョンを変えたい場合はStripeアカウント側のデフォルトAPIバージョンを変更する必要があります。

テスト方法

任意の場所にcloneします。以下コマンドでdocker環境をビルドします。

$ make install

構築の最後にStripe CLIとStripeアカウントと連携します。URLがコンソールに表示されるのでURLをブラウザで開き連携します。

Stripeアカウントと連携


連携完了

リポジトリ内の build/stripe/config.toml ファイルに連携後Stripeのapi_keyが書き込まれます。取り扱いには注意しましょう。

次にwebhookイベントの転送先になるphpビルトインサーバの起動と、webhookをlistenさせます。

$ make up
...
php_1         | [Thu Dec 17 12:43:40 2020] PHP 8.0.0 Development Server (http://0.0.0.0:8000) started
stripe-cli_1  | Getting ready...
stripe-cli_1  | Ready! Your webhook signing secret is whsec_zzzzzzyyyyyykkkk (^C to quit)

Ready! と表示されればwebhookイベントが受け取れる状態になります。
まずはStripe CLIのtriggerコマンドでイベントを発生させてみます。別のターミナルで以下コマンドを実行します。

$ make stripe-trigger invoice.payment_succeeded

発行されたwebhookイベントがdockerのログに表示されます。listenしてビルトインサーバにフォワードできています。

listenしている様子

また、Stripeの管理画面で、単発課金を作成してみてもwehookイベントを検知しています。

まとめ

Stripe CLIを利用したwebhookのテスト環境を作成してみました。実際のアプリに対してリクエストを流せるのでとても楽に検証ができるのではないかと思います。

最近のStripeのアップデートとして銀行振込機能がとても便利そうで期待しています(Pilot版のため招待制です)。

https://buildersbox.corp-sansan.com/entry/2020/12/03/110000

日本商習慣である請求書払への対応のように、Stripeは各国の独自の決済を統合してますが、アフリカ市場の開拓も進めているようです。

https://thebridge.jp/2020/11/stripe-acquires-nigerias-paystack-for-200m-to-expand-into-the-african-continent-pickupnews

アメリカでは、Shopifyと銀行と提携して銀行口座開設などの金融機能をサービスを組み込める「Stripe Treasury」が発表されています。

https://www.itmedia.co.jp/news/articles/2012/04/news069.html

決済周りがとても便利にしてくれているので、今後の動向も期待したいです。