Aller à l'article
Aniq-UI

E-CommercePaiements

Paiements

Comment le paiement est encaissé, comment connecter Stripe, et ce qu'il advient d'une commande à chaque étape.

Pour le pack Full Stack

Comment le paiement est encaissé

La boutique propose deux moyens de paiement : par carte via Stripe, et à la livraison. Il n'y a pas d'option PayPal au paiement. Les deux créent d'abord la commande sur l'API, au prix calculé par l'API à partir de son propre catalogue, jamais à partir des prix envoyés par le navigateur.

MéthodeCe qu'il advient de la commande
Carte (Stripe)Enregistrée en pending et non payée. L'API demande un paiement à Stripe et la boutique confirme la carte sur la même page. Quand Stripe signale le paiement via le webhook, la commande passe en paid et confirmed ; une carte refusée la marque failed.
Paiement à la livraisonEnregistrée en confirmed et non payée, immédiatement. Vous encaissez l'argent à la livraison et faites avancer la commande dans le tableau de bord.

Le paiement à la livraison est sélectionné par défaut. Les visiteurs sans compte peuvent payer avec leur e-mail ; les clients connectés retrouvent la commande dans leur compte.

La livraison est gratuite à partir de 75 $ et coûte 9,99 $ en dessous, et il n'y a pas de taxe. Le panier, le récapitulatif du paiement et l'API appliquent la même règle : le total que voit le client est donc le total débité. La boutique garde la règle dans storefront/src/config/shipping.ts et l'API dans back-end/src/modules/orders/orders.service.ts : modifiez les deux ensemble. Stripe débite en dollars américains.

Connecter Stripe

  1. Ajoutez vos clés API

    Depuis la page des clés API du tableau de bord Stripe, placez la clé secrète dans back-end/.env. Utilisez les clés de test (sk_test_…) jusqu'à ce que vous soyez prêt à encaisser de l'argent réel.

    back-end/.env
    STRIPE_SECRET_KEY=sk_test_…
  2. Abonnez le webhook

    Dans Stripe, ajoutez un endpoint de webhook à l'adresse de votre API suivie de /api/payments/webhook, abonné à payment_intent.succeeded et payment_intent.payment_failed. Copiez son secret de signature dans back-end/.env.

    back-end/.env
    STRIPE_WEBHOOK_SECRET=whsec_…
  3. Donnez à la boutique sa clé publiable

    Définissez la clé publiable dans le .env de la boutique, puis reconstruisez-la : la clé est compilée dans l'application. Avec Docker Compose, placez-la dans le .env à côté de docker-compose.yml et exécutez docker compose up --build.

    storefront/.env
    NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_…
  4. Redémarrez l'API

    Résultat attendu: Le journal de l'API affiche « Stripe initialized », et le paiement affiche le formulaire de carte.

C'est le webhook qui marque la commande comme payée

Une commande est marquée payée quand Stripe appelle le webhook, pas quand le client revient du paiement. Sans l'abonnement et son secret de signature, les commandes par carte restent en attente et non payées.

Pour tester le webhook sur votre propre machine, la CLI Stripe peut transférer les événements vers http://localhost:8000/api/payments/webhook et affiche le secret de signature à utiliser pendant qu'elle tourne.

Sans Stripe

  • Sans NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY, ou avec une valeur qui n'est pas une vraie clé pk_test_… ou pk_live_…, l'option carte du paiement affiche « Card payments are unavailable right now. Please choose cash on delivery. » et masque le champ de carte.
  • Sans STRIPE_SECRET_KEY, ou avec la valeur fictive de .env.example, l'API n'encaisse aucun paiement par carte : une commande passée avec la carte est enregistrée en attente et non payée.
  • Le paiement à la livraison fonctionne dans tous les cas.
  • Avec la boutique d'exemple, sans aucune API, le paiement aboutit sans appeler Stripe et rien n'est débité.

Encaisser de vrais paiements

  • Passez aux clés live (sk_live_… et pk_live_…) et à un webhook créé en mode live, qui a son propre secret de signature.
  • Définissez NEXT_PUBLIC_DEMO_CHECKOUT=false, pour que le paiement ne soit pas prérempli avec un acheteur généré.
  • Les prix sont débités en dollars américains. Pour vendre dans une autre devise, changez la devise que l'API envoie à Stripe dans back-end/src/modules/payments/payments.service.ts, et réglez NEXT_PUBLIC_ANALYTICS_CURRENCY en conséquence.

Bloqué sur une étape ?

Trouvez une solution avant de tout recommencer.

Dépannage

Préférences des Cookies

Nous utilisons des cookies pour améliorer votre expérience de navigation, analyser le trafic du site et personnaliser le contenu. En cliquant sur "Accepter Tout", vous consentez à notre utilisation des cookies pour l'analyse et la publicité personnalisée.