Configurer un abonnement payé par prélèvement automatique BECS en Australie
Découvrez comment créer et facturer un abonnement par prélèvement automatique BECS.
Note
Contrairement à ce qui est indiqué dans ce guide, nous recommandons aux nouveaux utilisateurs d’utiliser le composant Payment Element plutôt que Stripe Elements. Le composant Payment Element propose un chemin d’intégration avec peu de code et des optimisations de conversion intégrées. Pour connaître la procédure à suivre, consultez la documentation consacrée à la création d’un abonnement.
Suivez ce guide pour configurer un abonnement avec le prélèvement automatique BECS comme moyen de paiement.
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 AUD 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 AUD.
- 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 un SetupIntentCôté serveur
Un SetupIntent est un objet qui représente votre intention de configurer le moyen de paiement d’un client en vue de paiements ultérieurs. Le SetupIntent
suivra les étapes de ce processus de configuration. Dans le cas d’un prélèvement automatique BECS, ces étapes prévoient notamment l’obtention d’un mandat auprès du client et le suivi de sa validité tout au long de son cycle de vie.
Créez un SetupIntent sur votre serveur en définissant payment_method_types sur au_
:
L’objet SetupIntent
renvoyé contient une propriété client_
. Transmettez la clé secrète du client à l’application côté client pour continuer le processus de configuration.
Recueillir les informations du moyen de paiement et la confirmation du mandatCôté client
Vous êtes prêt à collecter les informations de paiement sur le client avec Stripe Elements. Elements est un ensemble de composants d’interface utilisateur prédéfinis pour la collecte des informations de paiement.
Un composant Element contient une balise iframe qui envoie de manière sécurisée les informations de paiement à Stripe par une connexion HTTPS. Pour que votre intégration fonctionne, l’adresse de votre page de règlement doit aussi commencer par https:// au lieu de http://.
Vous pouvez tester votre intégration sans utiliser le protocole HTTPS. Activez-le au moment d’accepter des paiements en mode production.
Configurer Stripe Elements
Envoyer les informations du moyen de paiement à StripeCôté client
Au lieu de transmettre au client l’objet SetupIntent
dans son intégralité, utilisez la clé secrète du client de l’étape 3. Cette clé est différente de vos clés API qui servent à authentifier les requêtes envoyées à l’API Stripe.
La clé secrète du client doit être manipulée avec prudence, car elle permet de mettre en œuvre la configuration. Ne l’enregistrez pas, ne l’intégrez pas dans des URL et ne la dévoilez à personne d’autre que votre client.
Créer un client avec un PaymentMethodCôté serveur
La création d’abonnements nécessite un client, qui représente le client achetant votre produit. Le tarif que vous avez créé étant facturé mensuellement, vous devez ajouter un moyen de paiement enregistré au client afin que les paiements à venir puissent aboutir. Pour ce faire, vous devez configurer le moyen de paiement que vous avez recueilli au niveau racine de l’objet Customer et définir ce moyen de paiement comme moyen de paiement par défaut pour les factures :
Ceci renvoie un objet Customer
. Vous pouvez voir le moyen de paiement par défaut dans l’objet invoice_
:
{ "id": "cus_Gk0uVzT2M4xOKD", "object": "customer", "address": null, "balance": 0, "created": 1581797088, "currency": null, "default_source": null, "delinquent": false, "description": null, "discount": null, "email": "jenny.rosen@example.com", "invoice_prefix": "11D0B3D7", "invoice_settings": { "custom_fields": null, "default_payment_method": "pm_1FU2bgBF6ERF9jhEQvwnA7sX", "footer": null },
Après avoir créé le client, sauvegardez la valeur id
dans votre propre base de données afin de pouvoir l’utiliser ultérieurement. L’étape suivante nécessite aussi cet ID.
Créer un abonnementCôté serveur
Créez un abonnement avec le tarif et le client :
Dans le cadre d’un abonnement, le client est débité automatiquement dans la mesure où son moyen de paiement par défaut est défini. Lorsqu’un paiement aboutit, son état dans le Dashboard Stripe bascule sur Actif. Le tarif que vous avez créé précédemment détermine les facturations à venir.
Gérer les états de l'abonnementCôté client
Si le paiement initial aboutit, l’état de l’abonnement passe à 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 d’encaissement automatique. Vous devez alors avertir votre client que le paiement a échoué et le débiter avec un autre moyen de paiement.
Note
Les paiements par prélèvement automatique BECS ne sont jamais automatiquement relancés, même si vous avez configuré une planification de relance pour les autres moyens de paiement.
Tester l'intégration
Vous pouvez tester votre formulaire en utilisant le numéro BSB de test 000-000
et l’un des numéros de compte de test ci-dessous dans votre requête confirmAuBecsDebitSetup.
Numéro BSB | Numéro de compte | Description |
---|---|---|
000-000 | 000123456 | Le PaymentIntent créé avec le PaymentMethod résultant passe de processing à succeeded . L’état du mandat reste active . |
000-000 | 900123456 | Le PaymentIntent créé avec le PaymentMethod résultant passe de processing à succeeded (avec un délai de trois minutes). L’état du mandat reste active . |
000-000 | 111111113 | Le PaymentIntent créé avec le PaymentMethod résultant passe de processing à requires_ avec un code d’échec account_ . L’état du mandat devient inactive à ce stade. |
000-000 | 111111116 | Le PaymentIntent créé avec le PaymentMethod résultant passe de processing à requires_ avec un code d’échec no_ . L’état du mandat devient inactive à ce stade. |
000-000 | 222222227 | Le PaymentIntent créé avec le PaymentMethod résultant passe de processing à requires_ avec un code d’échec refer_ . L’état du mandat reste active . |
000-000 | 922222227 | Le PaymentIntent créé avec le PaymentMethod résultant passe de processing à requires_ avec un code d’échec refer_ (avec un délai de trois minutes). L’état du mandat reste active . |
000-000 | 333333335 | Le PaymentIntent créé avec le PaymentMethod résultant passe de processing à requires_ avec un code d’échec debit_ . L’état du mandat devient inactive à ce stade. |
000-000 | 666666660 | Le PaymentIntent créé avec le PaymentMethod résultant passe de processing à succeeded , mais un litige est immédiatement créé. |
000-000 | 343434343 | The PaymentIntent that was created with the resulting PaymentMethod fails with a charge_ error due to the payment amount causing the account to exceed its weekly payment volume limit. |
000-000 | 121212121 | The PaymentIntent that was created with the resulting PaymentMethod fails with a charge_ error due to the payment amount exceeding the account’s transaction volume limit. |