Paiements par prélèvement automatique Bacs
Acceptez les paiements par prélèvement automatique Bacs de clients titulaires d'un compte bancaire au Le Royaume-Uni.
Pour accepter les paiements par prélèvement automatique Bacs sur votre site Web, il vous faut créer un objet de filière du paiement, collecter les informations relatives au moyen de paiement et la confirmation du mandat, puis envoyer le paiement à Stripe pour traiter et vérification du compte bancaire de votre client.
Stripe utilise cet objet de paiement, le PaymentIntent, pour filière et gérer l’ensemble des états du paiement jusqu’à son aboutissement.
Configurer StripeCôté serveur
Pour commencer, il vous faut un compte Stripe. Inscrivez-vous.
Utilisez nos bibliothèques officielles pour accéder à l’API Stripe depuis votre application :
Créer ou récupérer un objet CustomerCôté serveur
Pour réutiliser un compte bancaire à l’occasion de paiements ultérieurs, le compte en question doit être associé à un objet Customer.
Créez un objet Customer
lorsque votre client crée un compte auprès de votre entreprise. L’association de l’ID de l’objet Customer
à votre propre représentation interne d’un client vous permet de récupérer et d’utiliser ultérieurement les informations relatives aux moyens de paiement sauvegardé.
Créez ou récupérez un objet Customer
afin de l’associer à ce paiement. Pour créer un nouvel objet Customer
, ajoutez le code ci-après sur votre serveur créer un nouveau Customer
:
Collecter les informations relatives au moyen de paiement
Remarque
Les règles relatives aux prélèvements automatiques Bacs prévoient l’acceptation d’un mandat de la part du client commande que Stripe puisse débiter son compte. Le Payment Element collecter ce mandat lorsque vous acceptez les données de paiement du client. Aucune action n’est requise de votre part pour vous être conforme à cette exigence.
Vous êtes prêt à recueillir les informations de paiement de votre client à l’aide du composant Element Payment, un composant préconfiguré de l’interface utilisateur qui simplifie cette collecte 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.
Vous pouvez personnaliser le Payment Element pour l’adapter au design de votre site en transmettant l’objet Appearance dans les 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.
Créer un PaymentIntentCôté serveur
Exécuter une logique métier personnalisée immédiatement avant la confirmation du paiement
Accédez à l’étape 5 du guide « Finaliser » les paiements pour exécuter votre logique métier personnalisée immédiatement avant la confirmation du paiement. Sinon, suivez la procédure ci-dessous pour une intégration plus simple, qui utilise stripe.
au niveau du client afin de confirmer le paiement et gérer les actions qui pourraient suivre.
Envoyer le paiement à StripeCôté client
Utilisez stripe.confirmPayment pour finaliser le paiement à l’aide des informations du composant Payment Element.
Ajoutez un paramètre return_url à cette fonction pour indiquer à Stripe où rediriger l’utilisateur une fois le paiement effectué. Dans un premier temps, votre utilisateur sera peut-être redirigé vers un site intermédiaire, comme une page d’autorisation bancaire, avant d’être redirigé vers l’URL return_
. Une fois le paiement par carte abouti, l’utilisateur est immédiatement redirigé vers l’URL return_
.
Si vous ne souhaitez pas effectuer de redirection à la fin des paiements par carte, vous pouvez définir le paramètre redirect sur if_
. De cette manière, seuls les clients qui choisissent un moyen de paiement avec redirection seront redirigés.
Gérer les événements post-paiement
Le prélèvement automatique Bacs est un moyen de paiement à notification différée, de sorte que les fonds ne sont pas immédiatement disponibles.
Calendrier
Avec Bacs Direct Debit, la mise à disposition des fonds sur votre solde Stripe peut prendre plusieurs jours ouvrables. C’est ce que l’on appelle le délai de règlement. Les paiements soumis après la date limite quotidienne sont traités le jour ouvrable suivant.
Il faut compter 4 jours ouvrés pour confirmer l’aboutissement ou l’échec d’un paiement par prélèvement automatique Bacs lorsque le mandat existe déjà, et 7 jours ouvrés lorsque vous devez collecter un nouveau mandat.
Dans certains cas, la banque peut nous informer d’un échec de paiement après que le paiement a été marqué comme abouti sur votre compte Stripe. Le cas échéant, l’échec de paiement est identifié comme un litige et reçoit le code de motif approprié.
Le tableau suivant décrit les délais de règlement des paiements proposés par Stripe pour les paiements de { % $lpm_name %}.
Type de règlement | Paiement réussi | Fonds disponibles | Heure limite |
---|---|---|---|
Virement standard | T+3 at 21:00 UTC | T+4 at 00:00 UTC | 20:00 Europe/London |
Configurer des webhooks
Stripe envoie plusieurs événements pendant le processus de paiement et après sa finalisation. Utilisez l’outil de webhook du Dashboard ou suivez le guide consacré aux webhooks pour recevoir ces événements et exécuter des actions, comme envoyer une confirmation de commande par e-mail à votre client, enregistrer la vente dans une base de données ou lancer un flux de livraison.
Pour les prélèvements automatiques Bacs, vous devez gérer l’événement payment_intent.succeeded afin de confirmer l’aboutissement du paiement. Stripe vous recommande également de gérer les événements payment_intent.processing et payment_intent.payment_failed.
Pour tester des webhooks en local, vous pouvez utiliser la CLI Stripe. Après l’avoir installée, vous pouvez transférer des é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.
Tester l'intégration
Vous avez à votre disposition plusieurs numéros de compte bancaire de test dans un environnement de test pour vérifier que cette intégration est prête.
Code guichet | Numéro de compte | Description |
---|---|---|
108800 | 00012345 | Le paiement aboutit et l’état du PaymentIntent passe de processing à succeeded . |
108800 | 90012345 | Le paiement aboutit au bout de trois minutes et l’état du PaymentIntent passe de processing à succeeded . |
108800 | 33333335 | Le paiement est accepté, mais échoue immédiatement avec un code d’échec debit_ et le PaymentIntent bascule de processing à requires_ . L’objet Mandate devient inactive et le PaymentMethod ne peut plus être utilisé. |
108800 | 93333335 | Le paiement échoue au bout de trois minutes avec un code d’échec debit_ et le PaymentIntent bascule de processing à requires_ . L’objet Mandate devient inactive et le PaymentMethod ne peut plus être utilisé. |
108800 | 22222227 | Le paiement échoue avec un code d’échec insufficient_ et le PaymentIntent bascule de processing à requires_ . L’objet Mandate reste active et le PaymentMethod peut à nouveau être utilisé. |
108800 | 92222227 | Le paiement échoue au bout de trois minutes avec un code d’échec insufficient_ et le PaymentIntent bascule de processing à requires_ . L’objet Mandate reste active et le PaymentMethod peut à nouveau être utilisé. |
108800 | 55555559 | Le paiement aboutit au bout de trois minutes et l’état du PaymentIntent passe de processing à succeeded , mais un litige est immédiatement créé. |
108800 | 00033333 | La création du moyen de paiement aboutit, mais le mandat est refusé par la banque du client et passe immédiatement à l’état inactif. |
108800 | 00044444 | La demande de mise en place d’un prélèvement automatique Bacs échoue immédiatement en raison d’un numéro de compte non valide et le client est invité à mettre à jour ses informations avant de soumettre sa demande. Les données de paiement ne sont pas collectées. |
108800 | 34343434 | Le paiement échoue avec un code d’erreur charge_ , car le montant du paiement entraîne un dépassement de la limite hebdomadaire de volume de paiement du compte. |
108800 | 12121212 | Le paiement échoue avec un code d’erreur charge_ , car le montant du paiement dépasse la limite du volume de transactions du compte. |
Pour vos tests, vous pouvez utiliser l’un des numéros de compte fournis ci-dessus. Cependant, dans la mesure où le traitement des paiements par prélèvement automatique Bacs prend plusieurs jours, privilégiez les numéros de compte de test qui fonctionnent avec un délai de trois minutes, de manière à mieux simuler le comportement en situation réelle.
Remarque
Par défaut, Stripe envoie automatiquement des e-mails de notification au client lors de la collecte initiale de ses données de paiement et chaque fois qu’un débit est ensuite effectué sur son compte. Ces notifications ne sont pas envoyées dans les environnements de test.
Échecs de paiement
Les échecs de paiement peuvent être dus à diverses raisons. Le motif d’un échec est disponible via charge.failure_code. Seuls les paiements présentant certains codes d’échec peuvent être retentés. Lorsqu’une nouvelle tentative de paiement échoue, il convient de contacter votre client pour lui demander de renouveler son règlement avec un compte bancaire ou un moyen de paiement différent.
Les codes d’échec que nous envoyons actuellement pour les prélèvements automatiques Bacs sont indiqués ci-dessous. Cette liste est susceptible d’être enrichie à tout moment, et il importe donc de ne pas la considérer comme exhaustive dans le cadre du développement et de la maintenance de votre code.
Code d’échec | Description | Nouvelle tentative possible |
---|---|---|
account_ | Le compte bancaire a été clôturé. | Non |
bank_ | Le compte a été transféré à un nouveau prestataire de services de paiement (PSP). Vérifiez si les coordonnées du nouveau PSP vous ont été communiquées. Si ce n’est pas le cas, vous devez obtenir un nouveau mandat auprès du client. | Non |
debit_ | Le client a informé sa banque que le paiement n’était pas autorisé ou que la banque payeuse ne détient aucun mandat. | Non |
generic_ | Le paiement n’a pas pu être traité. | Oui |
insufficient_ | Le compte du client ne dispose pas de fonds suffisants pour couvrir le paiement. | Oui |
invalid_ | Le numéro de compte n’est pas valide. Cela peut signifier qu’il ne s’agit pas d’un compte libellé en GBP ou que le compte ne peut pas traiter les paiements par prélèvement automatique. | Non |
Pour effectuer une nouvelle tentative de paiement, confirmez le PaymentIntent à nouveau à l’aide du même PaymentMethod.
Pour mettre toutes les chances de votre côté que le paiement aboutisse, nous vous conseillons de contacter le payeur avant la nouvelle tentative.