決済ゲートウェイ(Stripe & PayPal)
FeedbackPulse SaaS は、サブスクリプション請求に Stripe と PayPal をサポートしています。どちらか一方、または両方を有効にできます。
💰 請求の仕組み
Admin → Plansでサブスクリプションプランを作成します(例:Starter $9.99/月、Pro $29.99/月)- 各プランには Stripe Price ID および/または PayPal Plan ID を設定します
- テナントがサブスクライブすると、Stripe Checkout または PayPal にリダイレクトされます
- 支払い完了後、FeedbackPulse がサブスクリプションを有効化します
- Webhook が更新・キャンセル・失敗などの状態を同期し続けます
💳 Stripe のセットアップ
ステップ 1:Stripe アカウントの作成
- stripe.com でサインアップします
- 本人確認を完了します
- Developers → API Keys から API キーを取得します
ステップ 2:API キーの取得
| キー | 取得場所 | .env 変数 |
|---|---|---|
| 公開可能キー | Dashboard → Developers → API Keys | STRIPE_PUBLISHABLE_KEY |
| シークレットキー | Dashboard → Developers → API Keys | STRIPE_SECRET_KEY |
STRIPE_PUBLISHABLE_KEY=pk_live_xxxxxxxxxxxxxxxx
STRIPE_SECRET_KEY=sk_live_xxxxxxxxxxxxxxxx
🧪 テスト: サンドボックスモードでは
pk_test_およびsk_test_キーを使用してください。
ステップ 3:Stripe での商品と価格の作成
各サブスクリプションプランについて、Stripe に継続課金価格を作成します。
- Products → Add Product に移動 します
- 名前:「FeedbackPulse Starter」(またはプラン名)
- 継続課金価格を追加:$9.99 / 月
- 必要に応じて年間価格を追加:$99.99 / 年
- Price ID(
price_で始まる)をコピーします
ステップ 4:プランへの価格の紐付け
FeedbackPulse の Admin → Plans → Edit に移動します。
| プランフィールド | Stripe の値 |
|---|---|
| Stripe 月額 Price ID | price_xxxxxxxxx(月額 Price ID) |
| Stripe 年額 Price ID | price_xxxxxxxxx(年額 Price ID) |
ステップ 5:Stripe Webhook の設定
これは必須です — Webhook がサブスクリプションの同期を維持します。
- Stripe Dashboard → Developers → Webhooks に移動します
- Add endpoint をクリックします
- エンドポイント URL:
https://yourdomain.com/webhooks/stripe - リッスンするイベント:
checkout.session.completedcustomer.subscription.createdcustomer.subscription.updatedcustomer.subscription.deletedinvoice.payment_failed
- Signing Secret(
whsec_で始まる)をコピーします
STRIPE_WEBHOOK_SECRET=whsec_xxxxxxxxxxxxxxxx
ステップ 6:管理パネルでの有効化
Admin → Settings → Payments に移動します:
- Stripe をオンに切り替えます
- 公開可能キーとシークレットキーを貼り付けます
- 保存します
💰 PayPal のセットアップ
ステップ 1:PayPal ビジネスアカウントの作成
- paypal.com/business でサインアップします
- developer.paypal.com に移動します
ステップ 2:REST API アプリの作成
- Dashboard → Apps & Credentials に移動します
- Create App をクリックします
- 名前:「FeedbackPulse」
- Client ID と Secret をコピーします
PAYPAL_CLIENT_ID=your_client_id
PAYPAL_CLIENT_SECRET=your_client_secret
PAYPAL_MODE=live
🧪 テスト:
PAYPAL_MODE=sandboxとサンドボックス認証情報を使用してください。
ステップ 3:PayPal でのサブスクリプションプランの作成
- PayPal Developer Dashboard → Subscriptions → Plans に移動します
- まず商品を作成し、その後プランを作成します
- 各プラン ID(
P-で始まる)をコピーします
ステップ 4:FeedbackPulse へのプランの紐付け
Admin → Plans → Edit で設定します。
| プランフィールド | PayPal の値 |
|---|---|
| PayPal 月額プラン ID | P-xxxxxxxxx(月額プラン) |
| PayPal 年額プラン ID | P-xxxxxxxxx(年額プラン) |
ステップ 5:PayPal Webhook の設定
- PayPal Developer Dashboard → Webhooks に移動します
- Webhook URL を追加:
https://yourdomain.com/webhooks/paypal - イベントを選択:
BILLING.SUBSCRIPTION.CREATEDBILLING.SUBSCRIPTION.ACTIVATEDBILLING.SUBSCRIPTION.UPDATEDBILLING.SUBSCRIPTION.CANCELLEDBILLING.SUBSCRIPTION.SUSPENDEDPAYMENT.SALE.COMPLETED
- Webhook ID をコピーします
PAYPAL_WEBHOOK_ID=your_webhook_id
ステップ 6:管理パネルでの有効化
Admin → Settings → Payments に移動します:
- PayPal をオンに切り替えます
- クライアント ID とシークレットを貼り付け ます
- 保存します
🧪 決済のテスト
Stripe テストモード
テスト用カード番号:
- 成功:
4242 4242 4242 4242 - 拒否:
4000 0000 0000 0002 - 3D セキュア:
4000 0025 0000 3155
有効期限:未来の任意の日付。CVC:任意の 3 桁。
PayPal サンドボックス
- developer.paypal.com → Sandbox → Accounts に移動します
- 生成されたサンドボックスの購入者アカウントを使用して決済をテストします
多通貨サポート
プランには異なる通貨(例:USD、EUR、GBP)を割り当てることができます。サポートする通貨のリストは Admin > Settings > Payments の サポート通貨 フィールドで設定します。
- Stripe: チェックアウトセッションはプランの通貨を自動的に渡すため、顧客は正しい通貨で請求されます。
- PayPal: サブスクリプションリクエストには、プランで設定された通貨のメタデータが含まれます。
- 通貨は正確な記録管理のため、各請求書に保存されます。
サポート通貨の設定については、プラットフォーム設定 を参照してください。
🔒 セキュリティについて
- API キーは
platform_settingsテーブルに暗号化して保存されます - Webhook シグネチャが検証されます(Stripe HMAC、PayPal シグネチャ検証)
- 決済イベントは
payment_eventsテーブルに記録されます(Admin → Payments) - イベントの重複排除により、Webhook の二重処理を防止します