mcpField
P
payment-gateway-integration

payment-gateway-integration

github.com/secondsky開発240463 回インストール5 週間前に更新
リポジトリ

payment-gateway-integration について

StripeまたはPayPalで決済フローを実装する開発者向けの決済統合スキルです。決済の作成、Webhook、セキュリティ確認、失敗時の処理を扱います。

主な機能

  1. 01Stripe Payment Intentの例
  2. 02Webhook署名の検証
  3. 03PayPalの注文と返金のガイド
  4. 04決済セキュリティチェックリスト
  5. 05エラー処理とリトライ

活用シーン

  1. 01アプリへの決済処理の追加
  2. 02決済プロバイダーのWebhook処理
  3. 03決済コードのセキュリティ確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/secondsky/claude-skills --skill payment-gateway-integration

インストール後、Claude Code で/payment-gateway-integrationを入力して読み込まれたか確認します。

同梱ファイルreferences/paypal-integration.md

詳細

決済ゲートウェイの統合

適切なエラー処理とコンプライアンスを備えた、安全な決済処理を統合します。

Stripe の統合(Node.js)

const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);

class PaymentService {
  async createPaymentIntent(amount, currency, customerId) {
    return stripe.paymentIntents.create({
      amount: Math.round(amount * 100), // Convert to cents
      currency,
      customer: customerId,
      automatic_payment_methods: { enabled: true }
    });
  }

  async createSubscription(customerId, priceId) {
    return stripe.subscriptions.create({
      customer: customerId,
      items: [{ price: priceId }],
      payment_behavior: 'default_incomplete',
      expand: ['latest_invoice.payment_intent']
    });
  }

  async refund(paymentIntentId, amount = null) {
    const params = { payment_intent: paymentIntentId };
    if (amount) params.amount = Math.round(amount * 100);
    return stripe.refunds.create(params);
  }
}

Webhook の処理

app.post('/webhooks/stripe', express.raw({ type: 'application/json' }), (req, res) => {
  const sig = req.headers['stripe-signature'];

  let event;
  try {
    event = stripe.webhooks.constructEvent(req.body, sig, process.env.STRIPE_WEBHOOK_SECRET);
  } catch (err) {
    return res.status(400).send(`Webhook Error: ${err.message}`);
  }

  switch (event.type) {
    case 'payment_intent.succeeded':
      await handlePaymentSuccess(event.data.object);
      break;
    case 'invoice.payment_failed':
      await handlePaymentFailed(event.data.object);
      break;
  }

  res.json({ received: true });
});

PayPal の統合

PayPal の実装の詳細については、references/paypal-integration.md を参照してください。以下が含まれます。

  • 注文の作成と決済の確定
  • 返金処理
  • Webhook の処理
  • フロントエンド SDK の統合
  • 成功時/キャンセル時のコールバック

セキュリティチェックリスト

  • 公式 SDK のみを使用する
  • Webhook の署名を検証する
  • カード番号全体をログに記録しない
  • 決済データの保存は最小限にする
  • まずサンドボックスでテストする
  • すべての決済ルートで HTTPS を使用する
  • すべてのエラーケースに対処する
  • 冪等性キーを使用する
  • リトライロジックを実装する

ベストプラクティス

推奨事項:

  • 公式 SDK ライブラリを使用する
  • すべての Webhook 署名を検証する
  • カード情報ではなく、取引 ID をログに記録する
  • サンドボックス環境でテストする
  • すべての決済状態に対処する
  • 適切なエラーメッセージを実装する

禁止事項:

  • 生のカードデータを直接処理する
  • 機密性の高い決済情報を保存する
  • API キーをハードコードする
  • Webhook の署名検証を省略する
  • 決済失敗イベントを無視する
  • 本番環境でテストキーを使用する

コメント