Accéder directement au contenu
Créez un compte
ou
connecter-vous
Logo de la documentation Stripe
/
Demander à l'assistant IA
Créez un compte
Connectez-vous
Démarrer
Paiements
Revenus
Plateformes et places de marché
Gestion de fonds
Ressources pour les développeurs
Aperçu
À propos des paiements Stripe
Mettre votre intégration à niveau
Analyses des paiements
Paiements en ligne
PrésentationTrouver votre cas d'usageManaged Payments
Utiliser Payment Links
Créer une page de paiement
Développer une intégration avancée
Développer une intégration dans l'application
Moyens de paiement
Ajouter des moyens de paiement
    Présentation
    Options d'intégration des moyens de paiement
    Gérer les moyens de paiement par défaut dans le Dashboard
    Types de moyens de paiement
    Cartes bancaires
    Payer avec le solde Stripe
    Cryptomonnaies
    Prélèvements bancaires
      Prélèvement automatique ACH
      Prélèvement automatique Bacs
      Débit préautorisé au Canada
        Accepter un paiement
        Enregistrer les informations bancaires
        Mandats personnalisés
      Prélèvement automatique BECS en Australie
      Prélèvement automatique BECS en Nouvelle-Zélande
      Prélèvement automatique SEPA
    Virements avec redirection bancaire
    Virements bancaires
    Virements (Sources)
    Achetez maintenant, payez plus tard
    Paiements en temps réel
    Coupons
    Portefeuilles
    Activer des moyens de paiement locaux par pays
    Moyens de paiement personnalisés
Gérer les moyens de paiement
Paiement accéléré avec Link
Interfaces de paiement
Payment Links
Checkout
Elements pour le web
Elements intégrés à l'application
Scénarios de paiement
Gérer plusieurs devises
Tunnels de paiement personnalisés
Acquisition flexible
Orchestration
Paiements par TPE
Terminal
Au-delà des paiements
Constituez votre entreprise
Cryptomonnaies
Financial Connections
Climate
Comprendre la fraude
Radar pour la protection contre la fraude
Gestion des litiges
Vérifier l'identité
AccueilPaiementsAdd payment methodsBank debitsPre-authorized debit in Canada

Accepter un paiement par prélèvement automatique canadien

Créez un formulaire de paiement personnalisé ou utilisez Stripe Checkout pour accepter des paiements avec prélèvement automatique au Canada.

Accepter un paiement par prélèvement automatique (PA) sur votre site Web consiste à créer un objet afin de suivre un paiement, à recueillir les informations de moyen de paiement et la confirmation du mandat, puis à envoyer le paiement à Stripe pour traitement et vérification du compte bancaire de votre client.

Stripe utilise cet objet de paiement, le Payment Intent, pour suivre et gérer l’ensemble des états du paiement jusqu’à son aboutissement.

Configurer Stripe
Côté serveur

Pour commencer, il vous faut un compte Stripe. S’inscrire.

Utilisez nos bibliothèques officielles pour accéder à l’API Stripe depuis votre application :

Command Line
Ruby
Python
PHP
Java
Node
Go
.NET
No results
# Available as a gem sudo gem install stripe
Gemfile
Ruby
Python
PHP
Java
Node
Go
.NET
No results
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

Créer ou récupérer un objet Customer
Côté serveur

Pour réutiliser un compte bancaire à l’occasion de paiements ultérieurs, le compte en question doit être associé à un objet Customer.

Vous devez créer 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 stockées sur le moyen de paiement.

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.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node
Go
.NET
No results
curl -X POST https://api.stripe.com/v1/customers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"

Créer un PaymentIntent
Côté serveur

Un PaymentIntent est un objet qui représente votre intention de collecter un paiement auprès d’un client et qui suit le cycle de vie du processus de paiement étape par étape.

Pour recourir aux prélèvements pré-autorisés canadiens, vous devez obtenir l’autorisation de vos clients pour les paiements ponctuels et récurrents à l’aide d’un mandat de prélèvement automatique (consultez la section Mandats de prélèvement automatique). L’objet Mandate enregistre le mandat et l’autorisation.

Tout d’abord, créez un PaymentIntent sur votre serveur et spécifiez le montant à collecter et la devise (habituellement cad). Si vous avez déjà une autre intégration utilisant l’API Payment Intents, ajoutez acss_debit à la liste des types de moyen de paiement pour votre PaymentIntent. Spécifiez l’id de l’objet Customer.

Si vous souhaitez réutiliser le moyen de paiement dans le futur, fournissez le paramètre setup_future_usage avec une valeur de off_session.

Pour définir une méthode de vérification et une fréquence de paiement sur l’objet Mandate pour ce PaymentIntent, incluez également les paramètres suivants :

ParamètreValeurObligatoire ?
payment_method_options[acss_debit][mandate_options][payment_schedule]La fréquence des paiements définie dans le mandat. Les valeurs acceptées sont interval, sporadic ou combined. Consultez la section Mandats de prélèvement automatique pour vous aider à sélectionner la fréquence la plus adaptée à votre entreprise.Oui
payment_method_options[acss_debit][mandate_options][interval_description]Description textuelle de la période de fréquence des paiements. Consultez la section Mandats de prélèvement automatique pour vous aider à élaborer la description de période la plus adaptée à votre entreprise.Si la valeur payment_schedule est définie sur interval ou combined
payment_method_options[acss_debit][mandate_options][transaction_type]Le type de mandat que vous créez, qu’il s’agisse d’un mandat personal (si votre client est un particulier) ou business (si votre client est une entreprise).Oui
Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=cad \ -d setup_future_usage=off_session \ -d customer={{CUSTOMER_ID}} \ -d "payment_method_types[]"=acss_debit \ -d "payment_method_options[acss_debit][mandate_options][payment_schedule]"=interval \ -d "payment_method_options[acss_debit][mandate_options][interval_description]"="First day of every month" \ -d "payment_method_options[acss_debit][mandate_options][transaction_type]"=personal

Récupérer la clé secrète du client

Le PaymentIntent contient une clé secrète à utiliser côté client pour finaliser le processus de paiement en toute sécurité. Vous pouvez adopter différentes approches pour transmettre cette clé secrète côté client.

Récupérez la clé secrète du client à partir d’un endpoint sur votre serveur, à l’aide de la fonction fetch du navigateur. Cette approche est recommandée si votre côté client est une application d’une seule page, en particulier si elle repose sur un framework front-end moderne tel que React. Créez l’endpoint de serveur qui gère la clé secrète du client :

main.rb
Ruby
Python
PHP
Java
Node
Go
.NET
No results
get '/secret' do intent = # ... Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end

Récupérez ensuite la clé secrète du client à l’aide JavaScript côté client :

(async () => { const response = await fetch('/secret'); const {client_secret: clientSecret} = await response.json(); // Render the form using the clientSecret })();

Collecter et envoyer les informations du moyen de paiement
Côté client

Lorsqu’un client clique pour payer avec Canadian pre-authorized debit, nous vous recommandons d’utiliser Stripe.js pour soumettre le paiement à Stripe. Stripe.js est notre bibliothèque JavaScript de base pour créer les tunnels de paiement : elle gère automatiquement les opérations complexes d’intégration et vous permettra de facilement étendre votre intégration à d’autres moyens de paiement par la suite.

Intégrez le script Stripe.js à votre page de paiement en l’ajoutant entre les balises head de votre fichier HTML.

checkout.html
<head> <title>Checkout</title> <script src="https://js.stripe.com/basil/stripe.js"></script> </head>

Créez une instance de Stripe.js avec le code JavaScript suivant sur votre page de paiement.

client.js
// Set your publishable key. Remember to change this to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
);

Plutôt que d’envoyer la totalité de l’objet PaymentIntent au client, utilisez sa clé secrète provenant de l’étape précédente. Il ne s’agit pas de vos clés API qui authentifient les requêtes de l’API de Stripe.

La clé secrète du client doit être utilisée avec prudence, car elle peut servir à finaliser le paiement. Elle ne doit être ni enregistrée, ni intégrée dans des URL, ni dévoilée à d’autres personnes que votre client.

Utilisez stripe.confirmAcssDebitPayment pour collecter les informations du compte bancaire et effectuer la vérification, confirmer le mandat et lancer le paiement lorsque l’utilisateur envoie le formulaire. Il est nécessaire d’inclure l’adresse électronique et le nom du client dans la propriété billing_details du paramètre payment_method pour créer un moyen de paiement pour le prélèvement préautorisé.

const form = document.getElementById('payment-form'); const accountholderName = document.getElementById('accountholder-name'); const email = document.getElementById('email'); const submitButton = document.getElementById('submit-button'); const clientSecret = submitButton.dataset.secret; form.addEventListener('submit', async (event) => { event.preventDefault(); const {paymentIntent, error} = await stripe.confirmAcssDebitPayment( clientSecret, { payment_method: { billing_details: { name: accountholderName.value, email: email.value, }, }, } ); if (error) { // Inform the customer that there was an error. console.log(error.message); } else { // Handle next step based on PaymentIntent's status. console.log("PaymentIntent ID: " + paymentIntent.id); console.log("PaymentIntent status: " + paymentIntent.status); } });

Stripe.js charge ensuite une interface utilisateur du modal sur la page qui gère la collecte et la vérification des informations du compte bancaire, présente un accord de mandat hébergé et collecte l’autorisation.

Remarque

stripe.confirmAcssDebitPayment peut prendre plusieurs secondes. Pendant ce temps, bloquez le renvoi de votre formulaire et affichez un indicateur d’attente. Si vous recevez une erreur, montrez-la au client, réactivez le formulaire et masquez l’indicateur d’attente.

S’il réussit, Stripe renvoie un objet PaymentIntent avec l’un des états suivants :

ÉtatDescriptionProchaine étape
processingLe compte bancaire a été instantanément vérifié ou la vérification n’était pas nécessaire.Étape 6 : Confirmer le PaymentIntent qui a réussi
requires_actionAucune action n’est requise pour effectuer la vérification du compte bancaire.Étape 5 : Vérifier le compte bancaire à l’aide de micro-versements

Une fois la confirmation du PaymentIntent, une confirmation du mandat et des informations du compte bancaire collectées doivent être envoyées par e-mail à votre client. Stripe les gère par défaut mais, si vous le préférez, vous pouvez choisir d’envoyer des notifications personnalisées.

Remarque

Aucun e-mail de confirmation de mandat ne sera envoyé à l’adresse e-mail du client lors des tests d’intégration.

Si le client choisit de fermer la boîte de dialogue modale sans terminer le flux de vérification, Stripe.js renvoie l’erreur suivante :

{ "error": { "type": "validation_error", "code": "incomplete_payment_details", "message": "Please provide complete payment details." } }

Vérifier le compte bancaire à l'aide de micro-versements
Côté client

Tous les clients ne peuvent pas vérifier instantanément le compte bancaire. Cette étape ne s’applique que si votre client a choisi de se désinscrire du flux de vérification instantanée dans l’étape précédente.

Dans ce cas, Stripe envoie automatiquement deux microversements sur le compte bancaire du client. Ces versements sont effectués sous un à deux jours ouvrables avant d’apparaître sur le relevé en ligne du client et sont accompagnés de libellés de relevé bancaire contenant ACCTVERIFY.

Le résultat de l’appel du moyen de paiement stripe.confirmAcssDebitPayment dans la configuration précédente est un PaymentIntent avec l’état requires_action. Le PaymentIntent contient un champ next_action qui contient des informations utiles pour effectuer la vérification.

Stripe informe votre client de la date à laquelle les versements devraient arriver en envoyant un message à l’adresse e-mail de facturation. L’e-mail inclut un lien vers la page de vérification hébergée par Stripe où il peut confirmer les montants des versements et effectuer la vérification.

La limite pour la vérification est fixée à trois tentatives. Si cette limite est dépassée, le compte bancaire ne peut plus être vérifié. De plus, les vérifications des microversements expirent sous 10 jours. Si les micro-versements ne sont pas vérifiés dans ce laps de temps, le Paymentintent rétablit les informations du nouveau moyen de paiement. Une communication claire à propos de ces microversements et leur utilisation peut aider vos clients à éviter des difficultés liées à la vérification.

Facultatif : un e-mail et une page de vérification personnalisés

Si vous avez préalablement choisi d’envoyer des notifications personnalisées par e-mail, vous devez à la place envoyer un e-mail à votre client. Pour ce faire, vous pouvez utiliser l’URL verify_with_microdeposits[hosted_verification_url] dans l’objet next_action pour que votre client puisse effectuer le processus de vérification.

Si vous envoyez des e-mails personnalisés et que vous ne souhaitez pas utiliser la page de vérification hébergée par Stripe, vous pouvez créer un formulaire sur votre site pour que vos clients puissent vous indiquer ces montants et vérifier le compte bancaire à l’aide de Stripe.js.

stripe.verifyMicrodepositsForPayment(clientSecret, { amounts: [32, 45], });

Lorsque le compte bancaire est vérifié, Stripe renvoie l’objet PaymentIntent avec un status processing et envoie un événement webhook payment_intent.processing.

La vérification peut échouer pour plusieurs raisons. L’échec peut se produire de manière synchrone comme une réponse d’erreur directe, ou de manière asynchrone à travers un événement webhook payment_intent.payment_failed (voir les exemples suivants).

{ "error": { "code": "payment_method_microdeposit_verification_amounts_mismatch", "message": "The amounts provided do not match the amounts that were sent to the bank account. You have {attempts_remaining} verification attempts remaining.", "type": "invalid_request_error" } }
Code d’erreurSynchrone ou asynchroneMessageChangement d’état
payment_method_microdeposit_failedDe façon synchrone ou asynchrone à travers un événement webhookLes micro-versements ont échoué. Veuillez vérifier la validité des numéros de compte, de l’établissement et de transit fournis.status est défini sur requires_payment_method et last_payment_error est défini.
payment_method_microdeposit_verification_amounts_mismatchDe façon synchroneLes montants fournis ne correspondent pas à ceux envoyés au compte bancaire. Il vous reste {attempts_remaining} tentatives de vérification du compte.Inchangé
payment_method_microdeposit_verification_attempts_exceededDe façon synchrone et asynchrone à travers un événement webhookDépassement du nombre de tentatives de vérification autoriséstatus est défini sur requires_payment_method et last_payment_error est défini.
payment_method_microdeposit_verification_timeoutDe façon asynchrone à travers un événement webhookExpiration du microversement. Le client n’a pas vérifié son compte bancaire dans le délai de 10 jours prévu.status est défini sur requires_payment_method et last_payment_error est défini.

Confirmer l'aboutissement du PaymentIntent
Côté serveur

Les prélèvements automatiques canadiens sont un moyen de paiement à notification différée. Cela signifie que pour recevoir une notification concernant le succès ou l’échec d’un paiement, il faut compter jusqu’à cinq jours ouvrables après avoir effectué un débit sur le compte du client.

Initialement, le PaymentIntent que vous créez présente l’état processing. Une fois le paiement abouti, l’état du PaymentIntent passe de processing à succeeded.

Les événements suivants sont envoyés lorsque le PaymentIntent change d’état :

ÉvénementDescriptionÉtape suivante
payment_intent.processingLe paiement du client a bien été envoyé à Stripe.Attendez que le paiement effectué aboutisse ou échoue.
payment_intent.succeededLe paiement du client a abouti.Traitez la commande de biens ou de services du client.
payment_intent.payment_failedLe paiement du client a été refusé. Ceci peut aussi s’appliquer en cas d’échec de la vérification à l’aide de microversements.Envoyez un e-mail ou une notification push au client pour lui demander d’utiliser un autre moyen de paiement. Si le webhook a été envoyé suite à l’échec de la vérification à l’aide de micro-versements, l’utilisateur doit à nouveau saisir ses coordonnées bancaires. De nouveaux micro-versements seront déposés sur son compte.

Nous vous recommandons d’utiliser des webhooks afin de confirmer que le paiement a réussi et d’informer le client que le paiement a été effectué. Vous pouvez également afficher les événements sur le Dashboard Stripe.

Tester l'intégration

Recevoir un e-mail de vérification du micro-versement

Afin de recevoir l’e-mail de vérification du microversement dans un environnement de test une fois la collecte des informations du compte bancaire et l’acceptation d’un mandat effectuées, fournissez un e-mail dans le champ payment_method[billing_details][email] du formulaire de {any_prefix}+test_email@{any_domain} lors de la confirmation des informations du moyen de paiement.

Numéros de comptes de test

Stripe fournit plusieurs numéros de compte test que vous pouvez utiliser pour vous assurer que votre intégration pour les comptes bancaires saisis manuellement sont prêts pour le mode production. Tous les comptes test avec un paiement qui réussit ou échoue automatiquement doivent être vérifiés à l’aide des montants de microversement test ci-dessous avant de pouvoir être effectués.

Numéro d’établissementNuméro de transitNuméro de compteScénario
00011000000123456789Réussite immédiate du paiement après la vérification des microversements.
00011000900123456789Réussite du paiement avec un délai de trois minutes après la vérification des microversements.
00011000000222222227Échec immédiat du paiement après la vérification des microversements.
00011000900222222227Échec du paiement avec un délai de trois minutes après la vérification des microversements.
00011000000666666661Échec d’envoi des microversements de vérification.
00011000000777777771Échec du paiement, car le montant du paiement a entraîné le dépassement de la limite de volume de paiement hebdomadaire du compte.
00011000000888888881Échec du paiement, car son montant dépasse la limite du volume de transactions du compte.

Pour simuler les réussites ou les échecs de la vérification des comptes bancaires dans un environnement de test, utilisez ces montants représentatifs pour les microversements :

Valeurs des micro-versementsScénario
32 et 45Vérification du compte réussie.
10 et 11Simule le dépassement du nombre de tentatives de vérification autorisé.
Toute autre combinaison de montantsÉchec de la vérification du compte.

FacultatifVérification instantanée uniquement
Côté serveur

FacultatifVérification par microversements uniquement
Côté serveur

Voir aussi

  • Enregistrer les informations des prélèvements automatiques canadiens pour de futurs paiements
Cette page vous a-t-elle été utile ?
OuiNon
  • Besoin d'aide ? Contactez le service Support.
  • Rejoignez notre programme d'accès anticipé.
  • Consultez notre log des modifications.
  • Des questions ? Contactez l'équipe commerciale.
  • LLM ? Lire llms.txt.
  • Propulsé par Markdoc