Paiements Stripe
Overview
Wagoo s’intègre avec Stripe pour les paiements en ligne sécurisés.
Configuration Stripe
1. Créer un compte Stripe
- Allez sur Stripe.comÂ
- Cliquez Sign up
- Remplissez vos informations
- Acceptez les conditions
- Validez votre email
2. Récupérer vos clés API
- Allez au Stripe DashboardÂ
- Cliquez Developers → API keys
- Copiez :
- Publishable key :
pk_test_...(public) - Secret key :
sk_test_...(privé!)
- Publishable key :
- Ajoutez Ă
.env.local:
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="pk_test_..."
STRIPE_SECRET_KEY="sk_test_..."3. Configurer les webhooks
- Allez à Developers → Webhooks
- Cliquez Add endpoint
- URL :
http://localhost:3000/api/webhooks/stripe(ou votre domaine) - Événements à écouter :
payment_intent.succeededcharge.refundedcustomer.subscription.updated
- Cliquez Add endpoint
- Copiez le Signing secret (commence par
whsec_) - Ajoutez Ă
.env.local:
STRIPE_WEBHOOK_SECRET="whsec_..."Créer des produits
Via le Dashboard Stripe
- Allez à Products → Add product
- Remplissez :
- Nom : “Accès Premium”
- Description : Optionnel
- Pricing :
- Model : Standard pricing
- Price : En cents (ex: 2999 = 29.99€)
- Cliquez Save
Via l’API Wagoo
curl -X POST http://localhost:3000/api/stripe/products \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"name": "Accès Premium",
"description": "Déverrouille toutes les fonctionnalités",
"price": 2999,
"currency": "eur"
}'Paiements uniques
Créer un Checkout
curl -X POST http://localhost:3000/api/stripe/checkout \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"lineItems": [
{
"price": "price_1234567890",
"quantity": 1
}
],
"successUrl": "http://localhost:3000/success",
"cancelUrl": "http://localhost:3000/cancel"
}'Réponse :
{
"sessionId": "cs_test_...",
"checkoutUrl": "https://checkout.stripe.com/pay/cs_test_..."
}Redirigez l’utilisateur vers checkoutUrl.
Paiements récurrents (Abonnements)
Créer un plan d’abonnement
- Allez à Products → [Product]
- Dans la section “Pricing” :
- Recurring : Activé
- Interval : Monthly / Yearly
- Price : Montant
- Cliquez Save
Créer une souscription
curl -X POST http://localhost:3000/api/stripe/subscriptions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"priceId": "price_1234567890",
"successUrl": "http://localhost:3000/dashboard/billing",
"cancelUrl": "http://localhost:3000/upgrade"
}'Gérer les paiements
Voir les factures
- Allez à Dashboard → Billing
- Affiche :
- Transactions passées
- Date et montant
- Statut
Télécharger une facture
- Cliquez sur une transaction
- Cliquez Download Invoice
Gérer l’abonnement
- Allez à Dashboard → Subscription
- Options :
- Change plan : Changer d’abonnement
- Update payment method : Changer la carte
- Cancel : Arrêter l’abonnement
Webhook Stripe
Wagoo traite automatiquement les events Stripe :
payment_intent.succeeded
Paiement réussi. L’utilisateur accède au produit.
charge.refunded
Remboursement. L’accès est révoqué.
customer.subscription.updated
Abonnement modifié (changement de plan, renouvellement).
Vérifier la signature
// app/api/webhooks/stripe/route.ts
import { stripe } from "@/lib/stripe";
export async function POST(request: Request) {
const body = await request.text();
const sig = request.headers.get("stripe-signature");
try {
const event = stripe.webhooks.constructEvent(
body,
sig,
process.env.STRIPE_WEBHOOK_SECRET
);
// Traiter l'event
switch (event.type) {
case "payment_intent.succeeded":
console.log("Paiement réussi!");
break;
}
return Response.json({ received: true });
} catch (err) {
return Response.json(
{ error: "Invalid signature" },
{ status: 400 }
);
}
}Mode Test vs Production
Développement (Test Mode)
- Clés :
pk_test_*etsk_test_* - Cartes de test : Voir docs StripeÂ
- Aucun argent réel n’est débité
Production (Live Mode)
- Clés :
pk_live_*etsk_live_* - Vrais paiements
- ⚠️ JAMAIS commiter les clés live!
Pour passer en production :
- Complétez la vérification Stripe
- Activez le mode Live
- Remplacez les clés
.env.local(ou via variables d’env) - Testez avec une vraie carte
Cartes de test
Utilisez ces cartes en mode test :
| Numéro | CVC | Date | Résultat |
|---|---|---|---|
| 4242 4242 4242 4242 | 424 | 12/26 | Succès |
| 4000 0000 0000 0002 | 424 | 12/26 | Rejeté |
| 4000 0000 0000 9995 | 424 | 12/26 | Rejeté |
Sécurité
✅ JAMAIS stocker les numéros de carte
âś… Utiliser stripe.js pour capturer les paiements
✅ Vérifier les webhooks avec signatures
âś… Utiliser HTTPS en production
✅ Quotas de taux de paiement limités
Cas d’usage
SaaS
Vendez des abonnements mensuels/annuels.
Marketplace
Paiements de transactions individuelles.
Adhésions
Abonnements pour accès premium.
Cours en ligne
Vente de cours et contenu payant.
Fonctionnalités futures
- 📊 Rapports de chiffre d’affaires
- đź’¶ Support de plusieurs devises
- 🏦 Virements bancaires (Connect)
- 🎟️ Billets numériques avec Stripe
- đź“§ Factures automatiques
Last updated on