stripe-payments

Par mkurman · zorai

Intégration des paiements Stripe : charges, abonnements, factures, webhooks, plateforme Connect et prévention de la fraude (Radar). Créez des workflows de paiement, une facturation récurrente et des versements pour les marketplaces.

npx skills add https://github.com/mkurman/zorai --skill stripe-payments

Aperçu

Stripe gère le traitement des paiements pour les entreprises en ligne — débits uniques, facturation d'abonnement, facturation, versements de place de marché (Connect) et prévention de la fraude (Radar). Cette compétence couvre le SDK Python (stripe module).

Installation

uv pip install stripe

Débit unique

import stripe
stripe.api_key = "sk_test_..."

charge = stripe.Charge.create(
    amount=2000,  # $20.00 en cents
    currency="usd",
    source="tok_visa",  # token from Stripe.js
    description="Example charge",
)
print(charge.id, charge.status)

Abonnement

customer = stripe.Customer.create(email="customer@example.com")
subscription = stripe.Subscription.create(
    customer=customer.id,
    items=[{"price": "price_123"}],  # recurring price ID
)
print(subscription.id, subscription.status)

Vérification Webhook

from flask import request
import stripe

payload = request.data
sig_header = request.headers.get("Stripe-Signature")
event = stripe.Webhook.construct_event(payload, sig_header, "whsec_...")

if event.type == "payment_intent.succeeded":
    payment_intent = event.data.object
    print(f"Payment {payment_intent.id} succeeded")

Plateforme Connect (Versements de place de marché)

# Create a connected account
account = stripe.Account.create(
    type="express",
    country="US",
    email="seller@example.com",
)

# Transfer funds
transfer = stripe.Transfer.create(
    amount=1000,
    currency="usd",
    destination=account.id,
)

Gestion des erreurs

try:
    charge = stripe.Charge.create(amount=-1, currency="usd")
except stripe.error.InvalidRequestError as e:
    print(f"Invalid request: {e.user_message}")
except stripe.error.CardError as e:
    print(f"Card declined: {e.error.decline_code}")
except stripe.error.RateLimitError:
    print("Rate limited — retry with exponential backoff")

Références

Skills similaires