Help us improve
Share bugs, ideas, or general feedback.
From payment-gateway-integration
Integrates payment processing with Stripe, PayPal, or Square including subscriptions, webhooks, and PCI compliance. Use when implementing checkout flows, recurring billing, or handling refunds and disputes.
npx claudepluginhub secondsky/claude-skills --plugin payment-gateway-integrationHow this skill is triggered — by the user, by Claude, or both
Slash command
/payment-gateway-integration:payment-gateway-integrationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Integrate secure payment processing with proper error handling and compliance.
Integrates Stripe, PayPal, Square for checkout flows, subscriptions, webhooks, and PCI compliance. Guides secure payment processing, error handling, and best practices for billing features.
Implements Stripe payment processing for checkout sessions, subscriptions, webhooks, refunds, and PCI-compliant flows in web/mobile apps. Covers SCA, customer management, and Stripe Connect.
Provides e-commerce payment gateway integration patterns including Stripe, PayPal, Adyen, BNPL (Klarna), crypto (BitPay), orchestration (Primer), 3DS2, fraud prevention, subscriptions, refunds, multi-currency, and idempotency.
Share bugs, ideas, or general feedback.
Integrate secure payment processing with proper error handling and compliance.
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);
}
}
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 });
});
See references/paypal-integration.md for complete PayPal implementation with:
Do:
Don't: