Configurer un abonnement avec le prélèvement automatique canadien
Comment créer et facturer un abonnement avec les prélèvements automatiques canadiens.
Note
Le mode abonnement n’est pas encore pris en charge dans Checkout. Pour être informé de l’accès anticipé lorsque cette fonctionnalité sera disponible, contactez-nous pour rejoindre la liste d’attente.
Créer un produit et un tarifDashboard
Les produits correspondent aux articles ou services que vous vendez. Les tarifs définissent le montant et la fréquence des paiements facturés pour un produit. Le tarif prend en compte la valeur du produit, la devise que vous acceptez et s’il s’agit d’un paiement ponctuel ou récurrent. Si vous n’avez que quelques produits et tarifs, créez-les et gérez-les dans le Dashboard.
Ce guide prend comme exemple un service de banque d’images qui débite ses clients d’un montant de 15 CAD pour un abonnement mensuel. Pour modéliser ceci :
- Rendez-vous à la page Ajouter un produit.
- Saisissez un Nom pour le produit.
- Saisissez 15 pour le tarif.
- Sélectionnez la devise CAD.
- Cliquez sur Enregistrer le produit.
Après avoir créé le produit et le tarif, enregistrez l’ID de tarif de manière à pouvoir l’utiliser dans les étapes ultérieures. La page des tarifs affiche l’ID dont le format est similaire à ce qui suit : price_
.
Créer l'abonnementCôté serveur
Note
Pour créer un abonnement avec une période d’essai, consultez la documentation relative aux périodes d’essai des abonnements.
Créez un abonnement avec le tarif et le client à l’état incomplete
en fournissant le paramètre payment_behavior défini sur la valeur default_
.
La réponse inclut le premier PaymentIntent de l’abonnement, qui contient une clé secrète à utiliser côté client pour finaliser le processus de paiement en toute sécurité, plutôt que de transmettre l’objet PaymentIntent dans son intégralité. Renvoyez le paramètre client_
au front-end pour finaliser le paiement.
Recueillir les informations du moyen de paiement et la confirmation du mandatCôté client
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.
Stripe configure automatiquement les mandats d’abonnement et de facture pour vous. Votre client n’a besoin d’accepter les conditions du mandat qu’une seule fois, les frais d’abonnement ultérieurs seront appliqués sans qu’aucune autre intervention ne soit nécessaire.
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.
<head> <title>Checkout</title> <script src="https://js.stripe.com/v3/"></script> </head>
Créez une instance de Stripe.js avec le code JavaScript suivant sur votre page de paiement.
// 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_
du paramètre payment_
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.
Note
stripe.
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.
Si le client termine le processus de vérification instantanée, l’abonnement devient automatiquement active
. Sinon, consultez la section suivante pour gérer la vérification à l’aide de microversements pendant que l’abonnement reste incomplete
.
Vérifier le compte bancaire à l'aide de microversementsCôté client
Note
Dans le cadre d’un abonnement, les clients ont 10 jours pour vérifier les microversements, au lieu des 23 heures habituellement accordées dans le cycle de vie d’un abonnement. Toutefois, cette date d’expiration ne peut pas être postérieure à la date de début du cycle de facturation.
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.
In this case, Stripe automatically sends two micro-deposits to the customer’s bank account. These deposits take 1–2 business days to appear on the customer’s online statement and have statement descriptors that include ACCTVERIFY
.
Le résultat de l’appel du moyen de paiement stripe.
dans la configuration précédente est un PaymentIntent avec l’état requires_
. Le PaymentIntent contient un champ next_
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_
dans l’objet next_
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], });
Configurer le moyen de paiement par défautServeur
Vous disposez à présent d’un abonnement actif appartenant à un client avec un moyen de paiement défini, mais ce dernier ne sera pas automatiquement utilisé pour les futurs paiements. À l’avenir, si vous souhaitez débiter automatiquement ce moyen de paiement, utilisez un consommateur de webhook pour écouter l’événement invoice.
pour votre nouvel abonnement et pour définir le moyen de paiement par défaut.
Gérer l'état de l'abonnementCôté client
Si le paiement initial aboutit, l’abonnement prend l’état active
et aucune action supplémentaire n’est nécessaire. Si le paiement échoue, l’état passe à l’état de l’abonnement que vous avez configuré dans vos paramètres de recouvrement automatique. Prévenez votre client que le paiement a échoué et débitez-le avec un autre moyen de paiement.
Note
Les paiements par prélèvement automatique canadien ne sont jamais automatiquement relancés, même si vous avez configuré une planification de relance pour les autres moyens de paiement.
Tester votre intégration
Recevoir un e-mail de vérification du micro-versement
Afin de recevoir l’e-mail de vérification du microversement dans le mode 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_
dans le formulaire de {any_
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’établissement | Numéro de transit | Numéro de compte | Scénario |
---|---|---|---|
000 | 11000 | 000123456789 | Réussite immédiate du paiement après la vérification des microversements. |
000 | 11000 | 900123456789 | Réussite du paiement avec un délai de trois minutes après la vérification des microversements. |
000 | 11000 | 000222222227 | Échec immédiat du paiement après la vérification des microversements. |
000 | 11000 | 900222222227 | Échec du paiement avec un délai de trois minutes après la vérification des microversements. |
000 | 11000 | 000666666661 | Échec d’envoi des microversements de vérification. |
000 | 11000 | 000777777771 | Fails the payment due to the payment amount causing the account to exceed its weekly payment volume limit. |
000 | 11000 | 000888888881 | Fails the payment due to the payment amount exceeding the account’s transaction limit. |
Pour simuler les réussites ou les échecs de la vérification des comptes bancaires dans le mode test, utilisez ces montants représentatifs pour les microversements :
Valeurs des micro-versements | Scénario |
---|---|
32 et 45 | Vérification du compte réussie. |
Toute autre combinaison de montants | Échec de la vérification du compte. |