stripe-integration

Stripe Integration Skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "stripe-integration" with this command: npx skills add yusuketsunoda/ppt-trans/yusuketsunoda-ppt-trans-stripe-integration

Stripe Integration Skill

Stripe決済連携の実装・デバッグ・テストのためのスキル。

When to Use This Skill

  • Stripe決済機能を新規実装・改善する時

  • Webhook処理でエラーが発生した時

  • サブスクリプション管理を実装する時

  • 決済フローのデバッグが必要な時

  • Stripe CLIでローカルテストする時

  • 課金プランの変更を実装する時

主要ファイル

役割 ファイル

Stripeクライアント src/lib/stripe/client.ts

サブスクリプション src/lib/stripe/subscription-service.ts

Webhook処理 src/app/api/stripe/webhook/route.ts

ゲストチェックアウト src/app/api/stripe/guest-checkout/route.ts

決済アクション src/app/actions/payment.ts

Webhook イベント

イベント 処理内容

checkout.session.completed

支払い完了 → プラン更新

customer.subscription.updated

サブスク更新 → 期間更新

customer.subscription.deleted

サブスク解約 → Freeに戻す

invoice.payment_failed

支払い失敗 → 通知

ローカルテスト

Stripe CLI でWebhook転送

stripe listen --forward-to localhost:3000/api/stripe/webhook

別ターミナルでイベント送信

stripe trigger checkout.session.completed

テスト用カード番号

カード番号 用途

4242424242424242 成功

4000002500003155 3Dセキュア認証

4000000000009995 残高不足

4000000000000341 カード拒否

環境変数

STRIPE_SECRET_KEY=sk_test_... STRIPE_WEBHOOK_SECRET=whsec_... NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_...

プラン設計

SSOT: src/lib/stripe/config.ts の PLAN_CONFIGS を参照。 プラン名・価格・制限値はすべてこのファイルで一元管理される。

import { PLAN_CONFIGS, type PlanName } from "@/lib/stripe/config"; // PLAN_CONFIGS.free / PLAN_CONFIGS.standard / PLAN_CONFIGS.pro

DBテーブル

-- profiles.stripe_customer_id: Stripe顧客ID -- user_plans: プラン情報 -- stripe_events: Webhook履歴(重複防止)

よくある問題

  1. Webhookシグネチャ検証失敗
  • 原因: rawBodyが必要

  • 対策: route.ts で request.text() を使用

  1. 二重課金
  • 原因: Webhookの重複配信

  • 対策: stripe_events で idempotency チェック

  1. サブスク状態の不整合
  • 原因: Webhookミス

  • 対策: 定期的な stripe.subscriptions.retrieve で同期

Evidence Doc(変更証跡) (CRITICAL)

Stripe関連ファイルを変更するPRには必ずEvidence Docが必要。 CIの stripe-evidence-check.yml が自動チェックする。

必要なもの

  • docs/evidence/stripe-change-evidence-YYYYMMDD-<説明>.md を作成

  • PR本文に ## Evidence Doc セクションを追加しファイル名を記載

手順

1. テンプレートからコピー

cp docs/evidence/stripe-change-evidence-TEMPLATE.md
docs/evidence/stripe-change-evidence-$(date +%Y%m%d)-<説明>.md

2. 必須セクションを記入

§1 変更概要, §4 リスク評価・ロールバック手順, §5 検証結果, §7 承認

3. 承認欄のプレースホルダを実際の値に置換

APPROVER_GH_HANDLE → @YourHandle

APPROVAL_DATE → 2026-02-18

4. PR本文に追記

Evidence Doc

CIが検出するファイルパス

src/lib/stripe/** src/app/api/stripe/** src/app/actions/payment.ts docs/policies/billing-tax-invoice-policy.md docs/configuration/stripe-dashboard-setup.md docs/runbooks/stripe-webhook-recovery.md

上記を触るPRでEvidence Docリンクがなければ CIがfailする。

AI Assistant Instructions

このスキルが有効化された時:

  • 環境確認: Stripe環境変数が設定されているか確認

  • テストモード確認: sk_test_ / pk_test_ を使用しているか確認

  • Webhook検証: シグネチャ検証が正しく実装されているか確認

  • 冪等性確認: 二重課金防止の実装を確認

  • Evidence Doc確認: Stripe関連ファイル変更時にEvidence Docを作成・リンクしたか確認

Always:

  • テスト用カード番号(4242...)を使用する

  • Webhookはidempotencyチェックを実装する

  • rawBodyで署名検証する

  • stripe_events テーブルで重複防止する

  • Stripe関連変更時はEvidence Docを作成する

Never:

  • 本番キー(sk_live_ )をコードにハードコードしない

  • Webhookシグネチャ検証をスキップしない

  • ユーザー入力を検証せずにStripe APIに渡さない

  • Evidence Docなしで決済関連PRを作成しない

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

pptx-translation

No summary provided by upstream source.

Repository SourceNeeds Review
General

material-design

No summary provided by upstream source.

Repository SourceNeeds Review
General

review

No summary provided by upstream source.

Repository SourceNeeds Review
General

e2e-testing

No summary provided by upstream source.

Repository SourceNeeds Review