Stripe CLIを利用したDockerのテスト環境を構築
ごろうです。この記事はJP_Stripes Advent Calendar 2020の17日目のエントリーです。
以前からStripe CLIを使ったテスト環境を整備したかったので作ってみました。
Stripe CLIとは
Stripe公式のコマンドツールで、Stripeアカウントに接続してデータの作成・イベントトリガー・webookイベントをlistenしたりできるGo製の便利コマンドです。
その中でもwebhookイベントをlistenできるコマンドがとても便利で、webhookイベントリクエストを別のアクセスポイントにフォワードすることができます。
Dockerでのテスト環境
そこで、Docker環境で簡単にwebhookの確認ができるgurimmer/stripe-webhook-testを作りました。
Stripe CLIでwebhookイベントをlistenしたものを、PHPのビルトインサーバ(PHP8)に流すサンプルを作りました。
Stripe CLIの大まかなフロー
以下のようなケースで役に立つと思います。
- APIバージョンアップデートでwebhookイベントデータの仕様変更確認
- 実際のデータでwebhookテスト
- Stripe管理画面を直接操作して、webhookイベントの把握
- webアプリの処理結果を利用したwebhookテスト
リポジトリのビルトインサーバ部分をテストしたいwebアプリなどに変更することでローカルでのテストも可能になります。
テスト方法
任意の場所にcloneします。以下コマンドでdocker環境をビルドします。
$ make install
構築の最後にStripe CLIとStripeアカウントと連携します。URLがコンソールに表示されるのでURLをブラウザで開き連携します。
Stripeアカウントと連携
連携完了
次に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版のため招待制です)。
日本商習慣である請求書払への対応のように、Stripeは各国の独自の決済を統合してますが、アフリカ市場の開拓も進めているようです。
アメリカでは、Shopifyと銀行と提携して銀行口座開設などの金融機能をサービスを組み込める「Stripe Treasury」が発表されています。
決済周りがとても便利にしてくれているので、今後の動向も期待したいです。
Discussion