Mises à jour de l'état des paiements
Surveiller et vérifier l'état des paiements, afin de pouvoir répondre aux paiements réussis et échoués.
Les PaymentIntents sont mis à jour en fonction des actions effectuées par vos clients ou par les moyens de paiement. Votre intégration peut examiner un PaymentIntent pour déterminer l’état du processus de paiement et ainsi vous permettre d’entreprendre les actions commerciales appropriées ou de répondre aux états nécessitant une intervention supplémentaire.
Vous pouvez aussi utiliser le Dashboard Stripe pour configurer votre compte afin de recevoir des e-mails lors des changements d’état des paiements, par exemple à la réussite d’un paiement. Modifiez vos notifications par e-mail dans les paramètres de l’utilisateur.
Vérifier l’état du PaymentIntent côté client
Lorsqu’un paiement est effectué côté client avec la fonction confirmCardPayment, vous pouvez examiner le PaymentIntent renvoyé pour déterminer son état actuel :
(async () => { const {paymentIntent, error} = await stripe.confirmCardPayment(clientSecret); if (error) { // Handle error here } else if (paymentIntent && paymentIntent.status === 'succeeded') { // Handle successful payment here } })();
Voici les résultats possibles lorsque la fonction confirmCardPayment
est utilisée :
Événement | Ce qui s’est passé | Intégration attendue |
---|---|---|
Aboutit à un PaymentIntent | Le client a effectué un paiement sur votre page de paiement | Informer le client que son paiement a abouti |
Aboutit à une erreur | Le paiement du client a échoué sur votre page de paiement | Afficher un message d’erreur et inviter votre client à effectuer une nouvelle tentative de paiement |
La promesse renvoyée par confirmCardPayment
aboutit lorsque le processus de paiement réussit ou échoue en renvoyant une erreur. Si le paiement réussit et renvoie un PaymentIntent, son état est toujours succeeded
(ou requires_
en cas de capture ultérieure). Lorsque le paiement nécessite une étape supplémentaire, par exemple une authentification, la promesse n’aboutit qu’une fois que cette étape est effectuée ou après expiration du délai.
Vérifier l’état du PaymentIntent côté client sans utiliser confirmCardPayment
Pour vérifier l’état d’un PaymentIntent sans utiliser la fonction confirmCardPayment
, récupérez-le séparément à l’aide de la fonction retrievePaymentIntent en transmettant la clé secrète du client.
Voici quelques états possibles d’un PaymentIntent après confirmation :
Ce qui s’est passé | État attendu du PaymentIntent |
---|---|
Le client a effectué un paiement sur votre page de paiement | succeeded |
Le client n’a pas effectué le paiement | requires_ |
Le paiement du client a échoué sur votre page de paiement | requires_ |
En savoir plus sur les états des Paymentintents.
(async () => { const {paymentIntent} = await stripe.retrievePaymentIntent(clientSecret); if (paymentIntent && paymentIntent.status === 'succeeded') { // Handle successful payment here } else { // Handle unsuccessful, processing, or canceled payments and API errors here } })();
Suivre un PaymentIntent avec des webhooks
Stripe peut envoyer des événements webhook à votre serveur pour vous informer du changement d’état d’un PaymentIntent, ce qui est notamment utile pour déterminer quand fournir les biens ou les services.
Ne tentez pas de gérer la réalisation d’une commande côté client, car vos clients peuvent quitter la page après la finalisation du règlement, mais avant le début du processus de réalisation de la commande. Utilisez donc plutôt des webhooks pour surveiller l’événement payment_
et gérer son exécution de manière asynchrone au lieu de tenter de réaliser la commande côté client.
Mise en garde
Il est techniquement possible de recourir au polling (en récupérant de façon répétée un PaymentIntent pour vérifier son état) afin de surveiller les changements causés par des opérations asynchrones, plutôt que d’utiliser des webhooks, mais cette solution est bien moins fiable et peut entraîner des problèmes de limite de débit. Stripe applique une limite de débit sur les requêtes API. Ainsi, nous vous recommandons de procéder avec prudence si vous choisissez de recourir au polling.
Pour gérer un événement webhook, créez un chemin sur votre serveur et configurez l’endpoint d’un webhook correspondant dans le Dashboard. Stripe envoie l’événement payment_
lorsque le paiement réussit et l’événement payment_
lorsque le paiement échoue.
La charge utile du webhook inclut l’objet PaymentIntent. L’exemple suivant montre comment gérer les deux événements :
Lorsque le paiement échoue, vous pouvez trouver des informations en examinant la propriété last_
du PaymentIntent. Vous pouvez informer votre client de l’échec du paiement et l’inviter à réessayer avec un autre moyen de paiement. Réutilisez ensuite le même PaymentIntent pour continuer à suivre l’achat de votre client.
Gérer des événements de webhook spécifiques
La liste suivante décrit comment gérer différents événements de webhook :
Événement | Description | Étapes suivantes |
---|---|---|
processing | Le paiement du client a été correctement envoyé à Stripe. Ne s’applique qu’aux moyens de paiement pour lesquels la confirmation de paiement est différée. | Attendez que le paiement effectué réussisse ou échoue. |
succeeded | Le paiement du client a abouti | Traiter la commande de biens ou de services de votre client |
amount_ | Le paiement du client est autorisé et prêt à être capturé | Capturez les fonds disponibles pour le paiement |
payment_ | Le paiement du client a été refusé par un réseau de cartes ou a expiré | Contactez votre client par e-mail ou notification push pour l’inviter à fournir un autre moyen de paiement |
Pour tester des webhooks localement, vous pouvez utiliser l’interface de ligne de commande Stripe. Après l’avoir installée, vous pouvez transférer les événements à votre serveur :
stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is '{{WEBHOOK_SIGNING_SECRET}}' (^C to quit)
En savoir plus sur la configuration des webhooks.
Identifier les paiements d’un PaymentIntent
Lorsque vous tentez d’encaisser le paiement d’un client, le PaymentIntent crée un API Charge. Pour accéder à l’identifiant du dernier paiement, inspectez la propriété latest_charge du PaymentIntent :
Pour voir tous les paiements associés à un PaymentIntent, y compris ceux qui n’ont pas abouti, affichez la liste de tous les paiements et spécifiez le paramètre payment_
.
Gérer les actions suivantes
Certains moyens de paiement nécessitent des actions supplémentaires, comme l’authentification, pour finaliser le processus de paiement. Stripe.js les gère automatiquement lors de la confirmation du PaymentIntent, mais si vous disposez d’une intégration avancée, il peut s’avérer préférable de les gérer manuellement.
La propriété next_action du PaymentIntent indique l’étape suivante à effectuer par votre intégration pour finaliser le paiement. Le type d’actions suivantes possibles peut varier selon le moyen de paiement. Vous trouverez une liste complète des actions suivantes possibles dans la documentation relative à l’API.
Pour en savoir plus sur la gestion des actions suivantes requises par différents moyens de paiement, consultez la documentation relative aux moyens de paiement.