Stripe決済通知をSlackに自動送信: Stripe Notification Construct for AWS CDK
Stripeの決済イベントをEventBridge経由で受け取り、Lambda関数で処理してSlackに通知を送信するAWS CDKコンストラクトライブラリです。
開発の背景
Stripeを使ったプロジェクトで、決済完了をリアルタイムで把握したいという要件がありました。StripeのEventBridge統合を使えば実現できそうでしたが、既存のコンストラクトライブラリを探しても、Stripe APIを呼び出して詳細情報を取得し、フォーマットされたSlack通知を送るものは見つかりませんでした。
そこで、自分で実装することにしました。EventBridgeから受け取ったイベントをLambda関数で処理し、Stripe APIから追加の詳細情報を取得して、AWS Chatbot経由でSlackに通知を送る仕組みを構築しました。
アーキテクチャ
Stripe → EventBridge → Lambda → SNS → AWS Chatbot → Slack
- Stripeが決済イベントをEventBridgeに送信
- EventBridgeルールがLambda関数をトリガー
- Lambda関数がStripe APIを呼び出して詳細情報を取得
- フォーマットされたメッセージをSNSに送信
- AWS ChatbotがSlackに通知を配信
実装のポイント
TypeScriptでの型安全性
StripeのイベントデータやAPIレスポンスに対して、完全な型定義を提供しています。開発時に型チェックが効くので、実行時エラーを減らせます。
セキュリティを考慮した設計
StripeのAPIキーは、環境変数に直接書くのではなく、AWS Secrets ManagerやSSM Parameter Storeから取得する設計にしています。本番環境での使用を想定し、セキュリティベストプラクティスに従っています。
多言語対応
通知メッセージは日本語と英語の両方に対応しています。notificationLanguageプロパティで切り替え可能です。
環境ごとの切り替え
テスト環境と本番環境で異なるStripeアカウントを使い分けられるよう、environmentプロパティで環境を指定できます。
使用例
import * as cdk from 'aws-cdk-lib';
import { StripeCheckoutHandler } from 'cdk-stripe-slack-notification';
const stack = new cdk.Stack(app, 'MyStack');
new StripeCheckoutHandler(stack, 'StripeNotification', {
environment: 'production',
snsTopicArn: 'arn:aws:sns:us-west-2:123456789:my-slack-topic',
stripeSecretKeyFromSecretsManager: {
secretArn: 'arn:aws:secretsmanager:us-west-2:123456789:secret:stripe/secret-key',
},
stripeAccountName: 'MyCompany',
notificationLanguage: 'ja',
});
技術スタック
- AWS CDK: インフラストラクチャの定義
- TypeScript: 型安全な開発
- AWS Lambda: イベント処理
- Stripe API: 決済情報の取得
- AWS EventBridge: イベントルーティング
- AWS SNS: メッセージ配信
- AWS Chatbot: Slack連携
対応イベント
checkout.session.completed: チェックアウトセッション完了時checkout.session.async_payment_succeeded: 非同期決済成功時
通知内容
Slackに送信される通知には、以下の情報が含まれます:
- チェックアウトセッションID
- 決済インテントID
- 注文詳細(商品名、数量、金額など)
- Stripeダッシュボードへの直接リンク
- イベントタイプ
- 環境情報(テスト/本番)
関連ツール・アプリ
cdk-construct-stripe-events-to-sns
Stripeの決済イベントをAWS EventBridge経由で受け取り、SNSトピックに通知を送るためのCDK Constructライブラリを開発しました。Lambda関数を使わずにEventBridgeから直接SNSへ通知を送ることで、コストとレイテンシーを削減できる設計になっています。
stripe-pwa-elements
あらゆるWebフレームワークで使えるStripe決済Web Components。カード決済、Apple Pay、Google Pay、Payment Elementなど主要な決済手段をHTMLタグだけで組み込み可能。Stencil.jsベースでフレームワーク非依存、PWAやCapacitorアプリにも対応。
stripe-search-ql
Stripe Search APIのクエリ構文を型安全に構築できるTypeScriptクエリビルダー。フルエントAPIによるメソッドチェーンで、手書きのクエリ文字列に起因するバグを排除し、開発効率を向上させます。
関連ニュース
cdk-stripe-slack-notification v0.1.0 リリースのお知らせ
Stripeの決済完了をSlackに自動通知するAWS CDK Constructライブラリをリリースしました。 このライブラリについて ECサイトやSaaSでStripeを使っていると、決済が完了したタイミングをSla []
Revtrona
Developer
