payment-gateway-integration について
StripeまたはPayPalで決済フローを実装する開発者向けの決済統合スキルです。決済の作成、Webhook、セキュリティ確認、失敗時の処理を扱います。
主な機能
- 01Stripe Payment Intentの例
- 02Webhook署名の検証
- 03PayPalの注文と返金のガイド
- 04決済セキュリティチェックリスト
- 05エラー処理とリトライ
活用シーン
- 01アプリへの決済処理の追加
- 02決済プロバイダーのWebhook処理
- 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 の署名検証を省略する
- 決済失敗イベントを無視する
- 本番環境でテストキーを使用する
コメント
Markdown 対応