Accepter un virement bancaire
Utilisez l'API Payment Intents pour accepter les paiements par virements bancaires.
La première fois que vous acceptez un paiement par virement bancaire de la part d’un client, Stripe génère un compte bancaire virtuel pour lui, que vous pouvez ensuite partager directement avec lui. Tous les futurs paiements par virement bancaire de ce client seront envoyés vers ce compte bancaire. Dans certains pays, Stripe vous fournit également un numéro de référence de virement unique que votre client doit associer à chaque virement afin de faciliter la comparaison entre le virement et les paiements en attente. Notez que certains pays limitent le nombre de numéros de comptes bancaires virtuels que vous pouvez créer gratuitement.
Le diagramme de séquence suivant propose un aperçu des étapes courantes à suivre lors de l’acceptation d’un paiement par virement bancaire :
Gérer les paiements insuffisants et les trop-perçus
Avec les paiements par virement bancaire, il peut arriver que le montant des fonds envoyés par le client soit inférieur ou supérieur à celui attendu. Si la somme est insuffisante, Stripe règle partiellement le PaymentIntent ouvert. Les factures ne font pas l’objet d’un règlement partiel et restent ouvertes jusqu’à ce que les fonds entrants couvrent l’intégralité de leur montant.
Si le client envoie un montant supérieur au montant attendu, Stripe tente de rapprocher les fonds entrants avec un paiement en cours et conservera le montant excédentaire restant dans le solde de trésorerie du client. Vous trouverez plus de détails sur la manière dont Stripe gère le rapprochement dans la section consacrée aux opérations de rapprochement de notre documentation.
Gérer plusieurs paiements ou factures ouvert(e)s
Vous pouvez avoir plusieurs paiements ou factures ouvert(e)s payables par virement bancaire. Par défaut, Stripe tentera de rapprocher automatiquement le virement bancaire en utilisant certaines informations telles que le code de référence du virement ou le montant viré.
Vous pouvez désactiver le rapprochement automatique et rapprocher manuellement des paiements et des factures. Vous pouvez contourner le rapprochement automatique, selon le client, en définissant le mode de rapprochement sur manuel.
Configurer StripeCôté serveur
Pour commencer, vous devez créer un compte Stripe.
Utilisez nos bibliothèques officielles pour accéder à l’API Stripe à partir de votre application :
Créer ou récupérer un objet CustomerCôté serveur
Vous devez associer un objet Customer à chaque paiement par virement bancaire à des fins de rapprochement. Si vous possédez déjà un objet Customer, vous pouvez ignorer cette étape. Sinon, créez un nouvel objet Customer.
Créer un PaymentIntentCôté serveur
A PaymentIntent is an object that represents your intent to collect payment from a customer and tracks the lifecycle of the payment process through each stage. Create a PaymentIntent on the server, specifying the amount and currency you want to collect. You must also populate the customer parameter of the PaymentIntent creation request. Bank transfers aren’t available on PaymentIntents without a customer.
Collecter les informations de paiementCôté client
Collectez les informations de paiement du client avec le Payment Element. Le Payment Element est un composant d’interface utilisateur préconfiguré qui simplifie la collecte des informations pour de nombreux moyens de paiement.
Le Payment Element contient un iframe qui envoie les informations de paiement à Stripe de manière sécurisée via une connexion HTTPS. Évitez de placer le Payment Element dans un autre iframe, car certains moyens de paiement nécessitent une redirection vers une autre page pour la confirmation du paiement.
Pour que votre intégration fonctionne, l’adresse de la page de paiement doit commencer par https://
et non par http://
. Vous pouvez tester votre intégration sans utiliser le protocole HTTPS, mais n’oubliez pas de l’activer lorsque vous souhaitez commencer à accepter des paiements réels.
Le composant Payment Element affiche un formulaire dynamique qui permet à votre client de choisir un moyen de paiement. Pour chaque moyen de paiement, le formulaire demande automatiquement au client de renseigner toutes les informations de paiement nécessaires.
Personnaliser l’apparence
Personnalisez le Payment Element pour qu’il corresponde à l’apparence de votre site en ajoutant l’objet Appearance dans options
lors de la création du fournisseur Elements
.
Collecter les adresses
Par défaut, le composant Payment Element ne collecte que les informations nécessaires relatives à l’adresse de facturation. Si vous souhaitez obtenir l’adresse de facturation (par exemple, pour calculer la taxe sur les biens et services numériques) ou l’adresse de livraison complètes d’un client, utilisez le composant Address Element.
Après la confirmation, votre client voit automatiquement s’afficher une fenêtre modale contenant les détails du virement bancaire.
Soumettre le paiement à StripeCôté client
Utilisez stripe.confirmPayment pour effectuer le paiement à l’aide des informations du composant Payment Element. Ajoutez un paramètre return_url à cette fonction pour indiquer la page vers laquelle Stripe doit rediriger l’utilisateur à l’issue du paiement. Votre utilisateur peut être redirigé en premier lieu vers un site intermédiaire, comme une page d’autorisation bancaire, avant d’être redirigé vers la page spécifiée par le paramètre return_
. L’utilisateur sera immédiatement redirigé vers la page return_
après un paiement réussi par carte.
Si vous ne souhaitez pas effectuer de redirection à la fin des paiements par carte, vous pouvez assigner au paramètre redirect la valeur if_
. De cette manière, seuls les clients qui choisissent un moyen de paiement avec redirection seront redirigés.
Veillez à ce que le paramètre return_
corresponde à une page de votre site web qui indique l’état du paiement. Lorsque Stripe redirige le client vers la page return_
, nous fournissons les paramètres de requête d’URL suivants :
Paramètre | Description |
---|---|
payment_ | L’identifiant unique du PaymentIntent . |
payment_ | La clé secrète du client de l’objet PaymentIntent . |
Mise en garde
Si vous disposez d’outils qui assurent le suivi de la session navigateur du client, vous devrez peut-être ajouter le domaine stripe.
à la liste d’exclusion des sites référents. Les redirections font que certains outils créent de nouvelles sessions, ce qui empêche le suivi de la session dans son ensemble.
Utilisez l’un des paramètres de requête pour récupérer le PaymentIntent. Consultez l’état du PaymentIntent pour déterminer les informations à présenter à vos clients. Vous pouvez également ajouter vos propres paramètres de requête lorsque vous ajoutez l’URL return_
; ils seront conservés tout au long du processus de redirection.
Confirmer l'aboutissement du PaymentIntent
Le PaymentIntent reste à l’état requires_
jusqu’à ce que les fonds arrivent sur le compte bancaire. Dès réception du paiement, l’état du PaymentIntent associé passe de requires_
à succeeded
.
Vous devez configurer votre endpoint de webhook pour recevoir l’événement payment_
. Lorsque le PaymentIntent est partiellement financé, son état reste requires_
.
Vous pouvez ajouter un webhook depuis le Dashboard.
Alternatively, you can use the Webhook Endpoints API to start receiving the payment_intent.partially_funded event.
Mise en garde
La CLI Stripe ne prend pas en charge le déclenchement d’événements de la version bêta de l’API tels que payment_
.
Les événements suivants sont envoyés durant le flux de financement du paiement lorsque le PaymentIntent est mis à jour :
Événement | Description | Étapes suivantes |
---|---|---|
payment_ | Envoyé pendant la confirmation lorsque le solde du client ne dispose pas de fonds suffisants pour rapprocher le PaymentIntent, le PaymentIntent passe à l’état requires_ . | Demandez à votre client d’effectuer un virement bancaire correspondant au montant amount_ . |
payment_ | Le client a fait un virement bancaire qui a été appliqué au PaymentIntent, mais cela n’a pas suffi à finaliser le paiement. Cela peut arriver si le client a transféré un montant trop faible (pour cause de paiement insuffisant par erreur ou de frais facturés par sa banque) ou si un solde client restant a été appliqué à ce PaymentIntent. Les PaymentIntents partiellement financés ne sont pas visibles dans le solde de votre compte tant que le paiement n’a pas été effectué. | Demandez à votre client de réaliser un autre virement bancaire correspondant au nouveau amount_ pour finaliser le paiement. Si vous souhaitez effectuer le paiement avec les fonds partiellement appliqués, vous pouvez mettre à jour le champ amount et confirmer à nouveau le PaymentIntent. |
payment_ | Le paiement du client a abouti. | Traitez la commande de biens ou de services du client. |
Mise en garde
Lorsque vous modifiez le montant d’un PaymentIntent partiellement financé, les fonds sont reversés sur le solde du client. Si d’autres PaymentIntents sont ouverts, Stripe les finance automatiquement. Si le client est configuré pour le rapprochement manuel, vous devez utiliser les fonds à nouveau.
Nous vous recommandons d’utiliser des webhooks afin de confirmer que le paiement a abouti et pour signaler au client que le paiement a été effectué.
Exemple de code
Consulter les paiements en attente sur le Dashboard
Vous pouvez consulter les PaymentIntents associés à des virements bancaires en attente dans le Dashboard en appliquant le filtre En attente de financement au champ État.
Tester votre intégration
Vous pouvez tester votre intégration en simulant un virement bancaire entrant à l’aide de l’API, du Dashboard ou d’une version bêta de l’interface de ligne de commande Stripe.
Gestion des problèmes de disponibilité temporaires
Les codes d’erreur suivants indiquent que des problèmes temporaires affectent la disponibilité du moyen de paiement :
Code | Description | Gestion |
---|---|---|
payment_ | Un trop grand nombre de requêtes successives ont été effectuées pour ce moyen de paiement, dont les limites sont plus strictes que les limites de débit à l’échelle de l’API. | Lorsque de nombreux clients tentent d’utiliser le même moyen de paiement (par exemple, pendant la période des soldes), ces erreurs peuvent perdurer pendant plusieurs requêtes API. Dans ce cas, demandez à vos utilisateurs de choisir un autre moyen de paiement. |
Mise en garde
Si vous prévoyez une utilisation intensive, que ce soit de manière générale ou pour un événement à venir, veillez à nous prévenir aussitôt que possible.