Traiter les commandes
Découvrez comment traiter les paiements reçus avec l’API Checkout Sessions.
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.
Remarque
Payment Links utilise Checkout, de sorte que toutes les informations ci-dessous s’appliquent à la fois à Payment Links et à Checkout, sauf indication contraire.
Créer une fonction de réalisationCô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_
, mais vous pouvez lui donner un autre nom.
Votre fonction fulfill_
doit :
- Gérer correctement le fait d’être appelée plusieurs fois avec le même identifiant de session Checkout.
- Accepter un ID de Session Checkout comme argument.
- Récupérer la session Checkout depuis l’API avec la propriété line_items étendue.
- Vérifier la propriété payment_status pour déterminer si le traitement doit être déclenché.
- Lancer le traitement des postes de facture.
- Enregistrer l’état du traitement pour la session Checkout fournie.
Utilisez le code ci-dessous comme point de départ pour votre fonction fulfill_
. Les commentaires TODO
indiquent les fonctionnalités que vous devez implémenter.
Remarque
Les extraits de code ci-dessous peuvent nommer la fonction fulfill_
fulfillCheckout
ou FulfillCheckout
selon la le langage sélectionné. Il s’agit bien d’une même fonction.
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_
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 paiementCô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_
.
Lorsqu’un règlement est effectué, un événement checkout.
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.
Vous pouvez également vouloir écouter et gérer les événements checkout.
. 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 :
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
)
- Saisissez
- 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énementcheckout.
transmis à votre serveur local.session. completed - 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.
à votre serveur, puis testez à nouveau le tunnel de paiement Checkout.
Configurer l'URL d'une page d'accueilRecommandé
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. Ajoutez le paramètre substituable {CHECKOUT_
dans l’URL de votre page, qui sera remplacé par l’identifiant de la session Checkout lorsque votre client est redirigé à partir de Checkout.
Checkout hébergé
Pour les sessions Checkout dont le code ui_mode par défaut est hosted
, définissez le success_
.
Remarque
Lorsque vous avez configuré un endpoint de webhook pour écouter les événements checkout.
et que vous avez défini un success_
, Checkout attend jusqu’à 10 secondes que votre serveur réponde à la livraison de l’événement de webhook avant de rediriger votre client. Si vous utilisez cette approche, assurez-vous que votre serveur répond aux événements checkout.
le plus rapidement possible.
Payment Links
Pour les Payment Links que vous créez avec l’API, définissez le paramètre after_completion.redirect.url.
Pour les Payment Links que vous créez dans le Dashboard :
- Accédez à l’onglet Après le paiement.
- Sélectionnez Ne pas afficher la page de confirmation.
- Fournissez l’URL de votre page d’accueil qui inclut le paramètre substituable
{CHECKOUT_
(par exemple,SESSION_ ID} https://example.
)com/after-checkout?session_ id={CHECKOUT_ SESSION_ ID}
Déclencher la réalisation sur votre page d'accueilRecommandé
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 :
- Lorsque votre serveur reçoit une requête pour votre page d’accueil Checkout, extrayez l’identifiant de session Checkout de l’URL.
- Exécutez votre fonction
fulfill_
avec l’identifiant fourni.checkout - 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.