Accéder directement au contenu
Créez un compte
ou
connecter-vous
Logo de la documentation Stripe
/
Ask AI
Créez un compte
Connectez-vous
Démarrer
Paiements
Automatisation des opérations financières
Plateformes et places de marché
Gestion de fonds
Outils de développement
Démarrer
Paiements
Automatisation des opérations financières
Démarrer
Paiements
Automatisation des opérations financières
Plateformes et places de marché
Gestion de fonds
Aperçu
À propos des paiements Stripe
Mettre votre intégration à niveau
Analyses des paiements
Paiements en ligne
PrésentationTrouver votre cas d'usageManaged Payments
Utiliser Payment Links
Créer une page de paiement
    Présentation
    Solutions de démarrage rapide
    Personnaliser l'apparence
    Collecter des informations supplémentaires
    Collecter des taxes
    Mise à jour dynamique lors du paiement
    Gérer votre catalogue de produits
    Abonnements
    Gérer les moyens de paiement
    Offrir aux clients la possibilité de payer dans leur devise locale
    Ajoutez des réductions, des ventes incitatives et des articles facultatifs
    Configurer des paiements futurs
    Enregistrer les coordonnées bancaires lors du paiement
    Manually approve payments on your server
    Après le paiement
      Traiter vos commandes
      Envoyer des reçus ou factures après paiement
      Personnaliser le comportement de redirection
      Récupération des paniers abandonnés
      Analyser l'entonnoir de conversion
    Liste des modifications de la version bêta d'Elements avec l'API Checkout Sessions
    Migrer depuis l'ancienne version de Checkout
    Migrer vers Checkout pour utiliser Prices
Développer une intégration avancée
Développer une intégration dans l'application
Moyens de paiement
Ajouter des moyens de paiement
Gérer les moyens de paiement
Paiement accéléré avec Link
Interfaces de paiement
Payment Links
Checkout
Web Elements
Elements intégrés à l'application
Scénarios de paiement
Tunnels de paiement personnalisés
Acquisition flexible
Orchestration
Paiements par TPE
Terminal
Autres produits Stripe
Financial Connections
Cryptomonnaies
Climate
AccueilPaiementsBuild a checkout pageAfter the payment

Traiter les commandes

Découvrez comment traiter les paiements reçus avec l’API Checkout Sessions.

Copier la page

Lorsque vous recevez un paiement via l’API Checkout Sessions (y compris Payment Links), vous devez peut-être effectuer une action pour fournir à votre client ce pour quoi il a payé. Par exemple, vous devrez peut-être lui accorder l’accès à un service ou lui expédier des biens physiques. Ce processus est connu sous le nom de traitement des commandes, et vous avez deux façons de procéder :

  • Manuellement : vous pouvez réaliser manuellement des commandes en utilisant les informations que Stripe met à votre disposition. Par exemple, vous pouvez surveiller le Dashboard, vérifier les e-mails de notification de paiement ou consulter les rapports, puis réaliser les commandes.
  • Automatiquement : vous pouvez mettre en place un système d’exécution automatique. Recommended

La première option convient pour les projets expérimentaux ou à faible volume, mais pour la plupart des situations, nous recommandons d’automatiser la réalisation des commandes. La suite de ce guide vous montre comment mettre en place un système d’exécution automatique.

Exécution automatique

Le système d’exécution automatique décrit ci-dessous utilise une combinaison de webhooks et une redirection vers votre site Web pour déclencher la réalisation de la commande. Vous devez utiliser les webhooks pour vous assurer que celle-ci est effectuée pour chaque paiement, et les redirections permettent à vos clients d’accéder aux services ou aux détails du traitement de la commande immédiatement après le paiement.

Créer une fonction de réalisation
Côté serveur

Créez une fonction sur votre serveur pour initier le traitement une fois les paiements effectués. Les webhooks en place déclencheront cette fonction, qui sera appelée lorsque les clients seront renvoyés sur votre site Web après avoir effectué le paiement. Ce guide fait référence à cette fonction sous le nom de fulfill_checkout, mais vous pouvez lui donner un autre nom.

Prévenir les traitements multiples

N’effectuez la réalisation qu’une seule fois par paiement. En raison du mode de fonctionnement de Checkout et d’Internet, votre fonction fulfill_checkout peut être appelée plusieurs fois, éventuellement en même temps, pour la même session Checkout. Exécuter le paiement une seule fois permet d’éviter tout comportement indésirable.

Votre fonction fulfill_checkout doit :

  1. Gérer correctement le fait d’être appelée plusieurs fois avec le même identifiant de session Checkout.
  2. Accepter un ID de Session Checkout comme argument.
  3. Récupérer la session Checkout depuis l’API avec la propriété line_items étendue.
  4. Vérifier la propriété payment_status pour déterminer si le traitement doit être déclenché.
  5. Lancer le traitement des postes de facture.
  6. Enregistrer l’état du traitement pour la session Checkout fournie.

Utilisez le code ci-dessous comme point de départ pour votre fonction fulfill_checkout. Les commentaires TODO indiquent les fonctionnalités que vous devez implémenter.

Remarque

Les extraits de code ci-dessous peuvent nommer la fonction fulfill_checkout fulfillCheckout ou FulfillCheckout selon la le langage sélectionné. Il s’agit bien d’une même fonction.

Ruby
def fulfill_checkout(session_id) # Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
puts "Fullfilling Checkout Session #{session_id}" # TODO: Make this function safe to run multiple times, # even concurrently, with the same session ID # TODO: Make sure fulfillment hasn't already been # performed for this Checkout Session # Retrieve the Checkout Session from the API with line_items expanded checkout_session = Stripe::Checkout::Session.retrieve({ id: session_id, expand: ['line_items'], }) # Check the Checkout Session's payment_status property # to determine if fulfillment should be performed if checkout_session.payment_status != 'unpaid' # TODO: Perform fulfillment of the line items # TODO: Record/save fulfillment status for this # Checkout Session end end

Remarque

Si une session Checkout comporte de nombreux postes, utilisez la pagination automatique avec l’API pour les postes Checkout pour les récupérer tous.

En fonction des moyens de paiement que vous acceptez et des besoins de votre activité, vous pouvez demander à votre fonction fulfill_checkout d’effectuer les opérations suivantes :

  • Fournir l’accès aux services.
  • Déclencher l’envoi des marchandises.
  • Enregistrer une copie des détails du paiement et des postes de la commande dans votre base de données.
  • Envoyer à votre client un reçu personnalisé par e-mail si vous n’avez pas activé les reçus de Stripe.
  • Rapprocher les postes et les quantités achetées si vous autorisez les clients à ajuster les quantités dans Checkout.
  • Actualiser les registres d’inventaire ou de stock.

Créer un gestionnaire d'événement de paiement
Côté serveur

Pour déclencher le traitement, créez un gestionnaire d’événements webhook pour écouter les événements de paiement et lancer votre fonction fulfill_checkout.

Lorsqu’un règlement est effectué, un événement checkout.session.completed est créé. Configurez un endpoint sur votre serveur pour accepter, traiter et confirmer la réception de ces événements.

Immediate versus delayed payment methods

Some payment methods aren’t instant, such as ACH direct debit and other bank transfers. This means, funds won’t be immediately available when Checkout completes. Delayed payment methods generate a checkout.session.async_payment_succeeded event when payment succeeds later. The status of the object is in processing until the payment status either succeeds or fails.

Remarque

Le secret du webhook (whsec_...) indiqué dans le code ci-dessous provient soit de la CLI Stripe, soit de votre endpoint de webhook. Vous pouvez utiliser la CLI Stripe pour des tests locaux, et Stripe utilise un endpoint de webhook pour envoyer des événements à votre gestionnaire d’événements lorsqu’il est exécuté sur un serveur. Voir la section suivante pour plus de détails.

Ruby
require 'sinatra' # Use the secret provided by Stripe CLI for local testing # or your webhook endpoint's secret. endpoint_secret = 'whsec_...' post '/webhook' do event = nil # Verify webhook signature and extract the event # See https://stripe.com/docs/webhooks#verify-events for more information. begin sig_header = request.env['HTTP_STRIPE_SIGNATURE'] payload = request.body.read event = Stripe::Webhook.construct_event(payload, sig_header, endpoint_secret) rescue JSON::ParserError => e # Invalid payload return status 400 rescue Stripe::SignatureVerificationError => e # Invalid signature return status 400 end if event['type'] == 'checkout.session.completed' || event['type'] == 'checkout.session.async_payment_succeeded' fulfill_checkout(event['data']['object']['id']) end status 200 end

Vous pouvez également vouloir écouter et gérer les événements checkout.session.async_payment_failed. Par exemple, vous pouvez envoyer un e-mail à votre client en cas d’échec d’un paiement différé.

Testez votre gestionnaire d'événements localement

Le moyen le plus rapide de développer et de tester votre gestionnaire d’événements webhook est d’utiliser la CLI Stripe. Si vous n’en disposez pas, reportez-vous aux instructions du guide d’installation.

Lorsque la CLI Stripe est installée, vous pouvez tester votre gestionnaire d’événements localement. Lancez votre serveur (par exemple, sur localhost:4242), puis exécutez la commande stripe listen pour que la CLI transmette les événements à votre serveur local :

Command Line
stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is 'whsec_<REDACTED>' (^C to quit)

Ajoutez le secret du webhook (whsec_...) à votre code de gestion des événements, puis testez la réalisation en utilisant Checkout en tant que client :

  • Appuyez sur le bouton de paiement qui vous permet de passer à Checkout, ou visitez votre Payment Link
  • Fournissez les données de test suivantes dans Checkout :
    • Saisissez 4242 4242 4242 4242 comme numéro de carte bancaire
    • Saisissez n’importe quelle date future comme date d’expiration
    • Saisissez n’importe quel code CVC à 3 chiffres
    • Saisissez un code postal pour la facturation (90210)
  • Appuyez sur le bouton Payer

Une fois le paiement effectué, vérifiez les points suivants :

  • Sur votre ligne de commande, où stripe listen s’exécute, vous voyez un événement checkout.session.completed transmis à votre serveur local.
  • Les logs de votre serveur affichent la sortie attendue de votre fonction fulfill_checkout.

Créer un endpoint de webhook

Après avoir testé localement, lancez votre gestionnaire d’événements webhook sur votre serveur. Ensuite, créez un endpoint de webhook pour envoyer les événements checkout.session.completed à votre serveur, puis testez à nouveau le tunnel de paiement Checkout.

Configurer l'URL d'une page d'accueil
Recommandé

Configurez Checkout de manière à ce que le client soit redirigé vers une page de votre site Web une fois qu’il a terminé le processus Checkout. Incluez le paramètre substituable {CHECKOUT_SESSION_ID} dans l’URL de votre page, qui est remplacé par l’ID de session Checkout lorsque votre client termine le processus de paiement.

Command Line
cURL
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "line_items[0][price]"=
{{PRICE_ID}}
\ -d "line_items[0][quantity]"=1 \ -d mode=payment \ -d ui_mode=embedded \ --data-urlencode return_url="https://example.com/after-checkout?session_id={CHECKOUT_SESSION_ID}"

Déclencher la réalisation sur votre page d'accueil
Recommandé

L’écoute des webhooks est nécessaire pour s’assurer que vous déclenchez toujours le traitement pour chaque paiement, mais les webhooks peuvent parfois être retardés. Pour optimiser votre tunnel de paiement et garantir un traitement immédiat lorsque votre client est présent, déclenchez également le traitement depuis votre page d’accueil.

Utilisez l’identifiant de la session Checkout de l’URL indiquée à l’étape précédente pour effectuer les opérations suivantes :

  1. Lorsque votre serveur reçoit une requête pour votre page d’accueil Checkout, extrayez l’identifiant de session Checkout de l’URL.
  2. Exécutez votre fonction fulfill_checkout avec l’identifiant fourni.
  3. Affichez la page une fois la tentative de traitement terminée.

Lorsque vous affichez votre page d’accueil, vous pouvez présenter les éléments suivants :

  • Détails du processus de traitement.
  • Liens ou informations sur les services auxquels le client a désormais accès.
  • Détails relatifs à l’expédition ou à la logistique des biens physiques.

Les webhooks sont indispensables

Vous ne pouvez pas compter sur un déclenchement du traitement uniquement à partir de votre page d’accueil Checkout, car il n’est pas sûr que vos clients visitent cette page. Par exemple, quelqu’un peut payer avec succès dans Checkout, puis perdre sa connexion à Internet avant que votre page d’accueil ne se charge.

Set up a webhook event handler so Stripe can send payment events directly to your server, bypassing the client entirely. Webhooks provide the most reliable way to confirm when you get paid. If webhook event delivery fails, Stripe retries multiple times.

Cette page vous a-t-elle été utile ?
OuiNon
Besoin d'aide ? Contactez le service Support.
Rejoignez notre programme d'accès anticipé.
Consultez notre log des modifications.
Des questions ? Contactez l'équipe commerciale.
LLM ? Lire llms.txt.
Propulsé par Markdoc