Traiter vos commandes
Découvrez comment traiter les paiements reçus avec l’API Checkout Sessions.
Lorsque vous recevez un paiement au moyen de l’API Checkout Sessions (y compris Payment Links), il est possible que vous deviez prendre des mesures pour fournir à votre client le montant qu’il a payé. Par exemple, vous devrez peut-être lui donner accès à un service ou lui expédier des biens physiques. Ce processus est connu sous le nom de traitement, et vous avez deux façons de le gérer :
- Manuellement : Vous pouvez traiter manuellement vos commandes à l’aide des informations que Stripe met à votre disposition. Par exemple, vous pouvez surveiller le Dashboard, vérifier les courriels de notification de paiement ou consulter les rapports, puis traiter les commandes.
- Automatiquement : Vous pouvez mettre en place un système de traitement automatisé. Recommandé
La première option convient pour les activités expérimentales ou à faible volume, mais pour la plupart des situations, nous recommandons d’automatiser le traitement. La suite de ce guide vous explique comment mettre en place un système de traitement automatique.
Traitement automatique
Le système de traitement automatique décrit ci-dessous utilise une combinaison de liens de rappel et une redirection vers votre site Web pour déclencher le traitement. Vous devez utiliser des liens de rappel pour vous assurer que le traitement a lieu pour chaque paiement, et que les redirections permettent à vos clients d’accéder aux services ou aux informations sur le traitement immédiatement après le paiement.
Remarques
Payment Links utilise Checkout, de sorte que toutes les informations ci-dessous s’appliquent tant à Payment Links qu’à Checkout, sauf indication contraire.
Créez une fonction de traitementCôté serveur
Créez une fonction sur votre serveur pour lancer le traitement lorsque les paiements sont effectués. Les webhooks déclencheront cette fonction, qui sera appelée lorsque les clients seront renvoyés vers 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érez correctement le fait d’être appelé plusieurs fois avec le même ID de session Checkout.
- Acceptez un ID de session Session en tant qu’argument.
- Récupérez la session Checkout à partir de l’API à l’aide de la propriété line_items étendue.
- Vérifiez la propriété payment_status pour déterminer si elle doit être traitée.
- Effectuer le traitement des postes de facture.
- Enregistrez l’état de traitement de 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 mettre en œuvre.
Remarques
Les extraits de code ci-dessous peuvent nommer la fonction fulfill_
tantôt fulfillCheckout
, tantôt FulfillCheckout
en fonction de la langue choisie, mais il s’agit partout de la même fonction.
Remarques
Si une session Checkout comporte de nombreux postes de facture, utilisez la pagination automatique avec l’API pour les postes de facture Checkout afin de 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.
- Enregistrez une copie des informations de paiement et des postes de facture dans votre propre base de données.
- Envoyer à votre client un reçu personnalisé par courriel si vous n’avez pas activé les reçus de Stripe.
- Rapprochez les postes de facture 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éez votre gestionnaire d’événements 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 point de terminaison sur votre serveur pour accepter, traiter et confirmer la réception de ces événements.
Modes de paiement immédiat et modes de paiement différé
Certains modes de paiement ne sont pas instantanés, comme les ACH Direct Debit et d’autres virements bancaires. Cela signifie que les fonds ne seront pas immédiatement disponibles à la fin du processus Checkout. Les modes de paiement différé génèrent un événement checkout.session.async_payment_succeeded lorsque le paiement est effectué ultérieurement. L’état de l’objet est en cours de traitement jusqu’à ce que l’état du paiement réussisse ou échoue.
Remarques
La clé secrète du webhook (whsec_
) affichée dans le code ci-dessous provient soit de l’interface de ligne de commande Stripe, soit du point de terminaison de votre webhook. Vous pouvez utiliser l’interface de ligne de commande Stripe pour effectuer des tests locaux, et Stripe utilise un point de terminaison de webhook pour envoyer des événements à votre gestionnaire d’événements lorsqu’il est exécuté sur un serveur. Consultez la section suivante pour en savoir plus.
Vous pouvez également vouloir écouter et gérer les événements checkout.
. Par exemple, vous pouvez envoyer un courriel à 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 l’interface de ligne de commande Stripe. Si vous ne disposez pas de l’interface de ligne de commande Stripe, consultez le guide d’installation pour commencer.
Lorsque l’interface de ligne de commande 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 l’interface de ligne de commande Stripe 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 la clé secrète du webhook (whsec_
) à votre code de gestion des événements, puis testez le traitement en passant par Checkout en tant que client :
- Appuyez sur le bouton de paiement qui vous permet d’accéder à Checkout ou accédez à votre lien de paiement
- Fournissez les données de test suivantes dans Checkout :
- Saisissez
4242 4242 4242 4242
comme numéro de carte - Saisissez une date future pour l’expiration de la carte
- 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, lorsque
stripe listen
est en cours d’exécution, il est indiqué qu’un événementcheckout.
a été transmis à votre serveur local.session. completed - Les journaux de votre serveur affichent la sortie attendue de votre fonction
fulfill_
.checkout
Créer un point de terminaison de lien de rappel
Après avoir effectué des tests localement, faites en sorte que votre gestionnaire d’événements de liens de rappel soit opérationnel sur votre serveur. Ensuite, créez un point de terminaison de lien de rappel pour envoyer des événements checkout.
à votre serveur, puis testez à nouveau le flux de paiement.
Configurez l’URL d’une page de renvoiRecommandé
Configurez Checkout pour rediriger votre client vers une page de votre site Web une fois qu’il a terminé le paiement. Ajoutez l’espace réservé {CHECKOUT_
à l’URL de votre page, qui sera remplacé par l’ID de session Checkout lorsque votre client est redirigé à partir de Checkout.
Checkout hébergé
Pour les sessions Checkout dont l’ui_mode par défaut est hosted
, définissez le paramètresuccess_
.
Remarques
Lorsque vous avez configuré un point de terminaison de lien de rappel HTTP 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 lien de rappel HTTP 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.
Ce comportement n’est pas pris en charge pour les points de terminaison de webhook enregistrés dans un compte d’organisation. Stripe n’attend pas que les points de terminaison de lien de rappel HTTP d’organisation qui écoutent checkout.
répondent lors de la redirection des clients Checkout.
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 de renvoi qui inclut le paramètre réservé
{CHECKOUT_
(par exemple,SESSION_ ID} https://example.
)com/after-checkout?session_ id={CHECKOUT_ SESSION_ ID}
Déclenchez le traitement sur votre page de renvoiRecommandé
L’écoute des webhooks est nécessaire pour vous assurer que vous déclenchez toujours le traitement pour chaque paiement, mais les webhooks peuvent parfois être retardés. Pour optimiser votre flux de paiement et garantir un traitement immédiat lorsque votre client est présent, déclenchez également le traitement à partir de votre page de renvoi.
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 de renvoi Checkout, vous devez extraire l’ID 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.
- Informations sur la livraison ou la logistique des marchandises physiques.
Les webhooks sont requis
Vous ne pouvez pas compter sur le déclenchement du traitement uniquement à partir de votre page de renvoi Checkout, car rien ne garantit que vos clients visiteront cette page. Par exemple, une personne peut effectuer un paiement dans Checkout, puis perdre sa connexion à Internet avant le chargement de votre page de renvoi.
Configurez un gestionnaire d’événements de webhook afin que Stripe puissiez envoyer des événements de paiement directement à votre serveur, sans passer par le client. Les webhooks sont le moyen le plus fiable de confirmer la réception de vos paiements. En cas d’échec de l’envoi d’un événement de webhook, Stripe essaie plusieurs fois.