Accéder directement au contenu
Créez un compte
ou
connectez-vous
Le logo de la documentation Stripe
/
Demander à l’IA
Créer un compte
Connectez-vous
Commencer
Paiements
Automatisation des finances
Plateformes et places de marché
Gestion des fonds
Outils de développement
Commencer
Paiements
Automatisation des finances
Commencer
Paiements
Automatisation des finances
Plateformes et places de marché
Gestion des fonds
AperçuDécouvrez tous les produits
Commencer à développer
Commencer le développement
Exemples de projets
À propos des API
    Visite guidée de l'API
    API Payment Intents
      Fonctionnement des PaymentIntents
      Mises à jour de l'état des paiements
      Capture asynchrone
      Comparer à Charges
    API Setup Intents
    Moyens de paiement
    API plus anciennes
    Phases de publication
Développer avec des GML
Utiliser Stripe sans codage
Configurer Stripe
Créer un compte
Produits et tarifs
Dashboard Web
Dashboard mobile
Migrer vers Stripe
Migrer les données client
Migrer des données de paiement
Migrer des abonnements
Gérer le risque de fraude
Comprendre la fraude
Radar pour la protection contre la fraude
Gérer les litiges
Vérifier l'identité
Assistance sur la réglementation
AccueilCommencerAbout the APIsPayment Intents API

Mises à jour de l'état des paiements

Surveillez et vérifiez l'état des paiements afin de pouvoir répondre aux paiements réussis et échoués.

Copier la page

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 courriels lors des changements d’état des paiements, par exemple à la réussite d’un paiement. Modifiez vos notifications par courriel 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énementCe qui s’est passéIntégration attendue
Aboutit à un PaymentIntentLe client a effectué un paiement sur votre page de paiementInformer le client de la réussite du paiement
Aboutit à une erreurLe paiement du client sur votre page de paiement a échoué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_capture 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 paiementsucceeded
Le client n’a pas effectué le paiementrequires_action
Le paiement du client sur votre page de paiement a échouérequires_payment_method

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 le traitement 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 traitement de la commande. Utilisez donc plutôt des webhooks pour surveiller l’événement payment_intent.succeeded et gérer son exécution de manière asynchrone au lieu de tenter de traiter la commande côté client.

Avertissement

Il est techniquement possible de recourir à l’interrogation (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 à l’interrogation.

Pour gérer un événement webhook, ajoutez un chemin sur votre serveur et configurez un point de terminaison d’un webhook correspondant dans le Dashboard. Stripe envoie l’événement payment_intent.succeeded lorsque le paiement réussit et l’événement payment_intent.payment_failed lorsque le paiement échoue.

La charge utile du webhook inclut l’objet PaymentIntent. L’exemple suivant montre comment gérer les deux événements :

Ruby
require 'sinatra' require 'stripe' post '/webhook' do payload = request.body.read sig_header = request.env['HTTP_STRIPE_SIGNATURE'] event = nil begin event = Stripe::Webhook.construct_event( payload, sig_header, endpoint_secret ) rescue JSON::ParserError => e # Invalid payload status 400 return rescue Stripe::SignatureVerificationError => e # Invalid signature status 400 return end case event['type'] when 'payment_intent.succeeded' intent = event['data']['object'] puts "Succeeded:", intent['id'] # Fulfill the customer's purchase when 'payment_intent.payment_failed' intent = event['data']['object'] error_message = intent['last_payment_error'] && intent['last_payment_error']['message'] puts "Failed:", intent['id'], error_message # Notify the customer that payment failed end status 200 end

Lorsque le paiement échoue, vous pouvez trouver des informations en examinant la propriété last_payment_error 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énementDescriptionÉtapes suivantes
processingLe 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.
succeededLe paiement du client a réussiTraiter la commande de biens ou de services
amount_capturable_updatedLe paiement du client est autorisé et peut être capturéCapturez les fonds disponibles pour le paiement
payment_failedLe paiement du client a été refusé par un réseau de cartes ou a expiréContactez votre client par courriel ou notification poussée 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 :

Command Line
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 :

Ruby
# 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'
intent = Stripe::PaymentIntent.retrieve('{{PAYMENT_INTENT_ID}}') latest_charge = intent.latest_charge

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_intent​.

Command Line
cURL
curl -G https://api.stripe.com/v1/charges \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d payment_intent=
{{PAYMENT_INTENT_ID}}

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.

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