Enregistrer les coordonnées bancaires de prélèvement automatique Bacs
Découvrez comment utiliser Checkout pour enregistrer les informations du moyen de paiement de vos clients pour leurs paiements futurs par prélèvement automatique Bacs.
Utilisez Stripe Checkout pour collecter les informations du moyen de paiement par prélèvement automatique Bacs en amont, en vue d’un paiement dont la date et le montant seront déterminés ultérieurement. Ceci est utile aux fins suivantes :
- Enregistrement des moyens de paiement dans un portefeuille pour faciliter les achats ultérieurs.
- Encaissement de suppléments de facturation après la fourniture d’un service.
- Démarrer une période d’essai gratuit dans le cadre d’un abonnement.
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 un clientCôté serveur
Pour que la réutilisation d’un moyen de paiement par prélèvement automatique Bacs soit possible pour de futurs paiements, celui-ci doit être rattaché à un objet Customer. Créez un objet Customer lorsqu’un client ouvre un compte sur votre site et associez l’ID de l’objet Customer à votre propre représentation interne du client afin de pouvoir utiliser ultérieurement les données du moyen de paiement stockées. Si vous possédez déjà un objet Customer, ignorez cette étape.
Créer une session CheckoutCôté clientCôté serveur
Pour que vous puissiez accepter les paiements par prélèvement automatique, votre client doit au préalable vous fournir ses coordonnées bancaires et vous donner l’autorisation de débiter son compte (au moyen de ce que l’on appelle un mandat) via Stripe Checkout.
Ajoutez sur votre site Web un bouton de paiement qui appelle un endpoint côté serveur afin de créer une session Checkout.
<html> <head> <title>Checkout</title> </head> <body> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>
Créez une session Checkout en mode setup
pour recueillir les informations requises. Après avoir créé la session Checkout, redirigez votre client vers l’URL renvoyée dans la réponse.
Une fois les informations de son moyen de paiement fournies, votre client est redirigé vers le success_
, à savoir une page de votre site Web lui confirmant l’enregistrement de son moyen de paiement. Mettez l’ID de session à disposition sur votre page de confirmation en incluant le modèle de variable {CHECKOUT_
dans le success_
, comme illustré ci-dessus.
Si lors d’une session Checkout, votre client clique sur votre logo sans fournir les données de son moyen de paiement, Checkout le redirige vers votre site Web sur la page cancel_
. Cette page est généralement celle que le client a consultée sur votre site avant d’être redirigé vers Stripe Checkout.
Mise en garde
Ne vous fiez pas uniquement à la redirection vers le success_
pour détecter l’initiation du paiement, sachant que :
- Des utilisateurs malveillants pourraient accéder directement au
success_
sans payer et obtenir l’accès à vos biens ou à vos services.url - Il peut arriver que le client n’aboutisse pas au
success_
à l’issue de son paiement. Il peut par exemple lui arriver de fermer l’onglet de son navigateur avant que la redirection n’intervienne.url
Note
Les règles applicables aux prélèvements automatiques Bacs prévoient l’envoi obligatoire au client d’une notification par e-mail à la collecte de ses informations de paiement. Par défaut, ces e-mails sont envoyés automatiquement par Stripe, mais vous pouvez également choisir d’envoyer vos propres notifications Bacs à vos clients.
Récupérer le moyen de paiementCôté serveur
Une fois que le client a soumis ses informations de paiement, récupérez l’objet PaymentMethod. Un PaymentMethod stocke les informations bank account du client pour ses paiements ultérieurs. Vous pouvez récupérer cet objet de manière synchrone en utilisant la success_
ou de manière asynchrone au moyen de webhooks.
La décision de récupérer l’objet PaymentMethod de manière synchrone ou asynchrone dépend de votre tolérance aux abandons de paiement. En effet, il peut arriver que le client n’aboutisse pas au success_
à l’issue de son paiement (il peut par exemple lui arriver de fermer l’onglet de son navigateur avant que la redirection n’intervienne). L’utilisation de webhooks vous permet d’éviter que votre intégration ne subisse ce type d’abandon.
Gérer les événements post-configurationCôté serveur
Une fois la session Checkout terminée, les informations de paiement sont soumises à la banque sous forme de mandat.
Un mandat peut changer à tout moment après avoir été collecté. Par exemple, le client peut demander à sa banque de le modifier ou peut changer de banque. Lorsqu’un mandat est modifié, Stripe envoie les événements suivants :
Nom de l’événement | Description | Peut accepter les paiements ? |
---|---|---|
mandate. | Déclenché lorsque le mandat est rejeté, annulé ou réactivé par le réseau Bacs. Consultez le mandate.status pour déterminer si le mandat peut continuer à être utilisé. | Oui, si le nouvel état est active |
payment_ | Déclenché lorsque les coordonnées bancaires du client changent. | Oui |
Vous pouvez visualiser ces événements dans votre Dashboard, mais il est néanmoins souhaitable de configurer un webhook pour les gérer de manière programmatique.
Tester l'intégration
Stripe met à votre disposition plusieurs numéros de compte bancaire de test que vous pouvez utiliser en mode test pour vous assurer que votre intégration est opérationnelle.
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 | The payment fails with a charge_ failure code due to the payment amount causing the account to exceed its weekly payment volume limit. |
108800 | 12121212 | The payment fails with a charge_ failure code due to the payment amount exceeding the account’s transaction volume limit. |
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.
Note
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 en mode test.
Utiliser le moyen de paiement pour les paiements ultérieursCôté serveur
Une fois le PaymentMethod configuré, vous pouvez accepter les paiements ultérieurs par prélèvement automatique Bacs en créant et confirmant un PaymentIntent.