Facturation Stripe
Configurez prix, checkout idempotent, webhooks, crédits, sécurité du portail et réconciliation.
Synchronisé avec le commit
7d452a6du starter.
Créez des Prices Stripe stables mensuels/annuels pour Plus et Max, puis définissez STRIPE_PRICE_*, STRIPE_PRIVATE_KEY et STRIPE_WEBHOOK_SECRET. Les Prices CNY sont optionnels. Montants et catalogue sont dans src/config/billing.ts ; les IDs restent serveur.
Le checkout est réservé à l’owner et exige Idempotency-Key. Une intention/commande précède Stripe : rejouer la même requête produit un seul effet ; un second achat volontaire utilise une nouvelle clé. Plusieurs abonnements peuvent coexister et le resolver combine leurs entitlements.
Webhooks
Exposez /api/pay/notify/stripe et abonnez checkout terminé/expiré, abonnement créé/modifié/supprimé, facture payée/échouée et remboursement/litige. Le handler vérifie la signature, déduplique, respecte le temps d’événement et accorde chaque bénéfice une fois. Un renouvellement crée commande et crédits mensuels.
Remboursements et litiges sont signalés pour revue ; les crédits consommés ne sont pas repris silencieusement. Utilisez la commande de réconciliation et la vue admin pour les états incertains.
Portail et tests
Créez la configuration Billing Portal et son ID en production. Les changements d’abonnement dans le portail doivent être désactivés ; sinon le starter échoue fermé.
stripe listen --forward-to localhost:3000/api/pay/notify/stripeTestez doublons, webhooks retardés, renouvellement, échec, annulation, remboursement et portail. En production, clés live et événements live uniquement.
Plans, limites et droits
Personnaliser les capacités Free, Plus et Max, limites d’organisation, mappages Stripe, grâce, abonnements cumulés et exceptions support.
Registre de crédits d’organisation
Comprenez crédits mutualisés, comptabilité append-only, expiration, consommation idempotente et remboursements.