# Enregistrer les informations de prélèvement automatique BECS en Australie en vue de futurs paiements Utilisez l’API Setup Intents pour enregistrer les informations relatives au moyen de paiement en vue de futurs paiements par prélèvement automatique BECS en Australie. # Elements > This is a Elements for when payment-ui is elements. View the full page at https://docs.stripe.com/payments/au-becs-debit/set-up-payment?payment-ui=elements. Utilisez [Stripe Elements](https://docs.stripe.com/payments/elements.md), nos composants d’interface préconfigurés, pour créer un formulaire de paiement qui vous permettra de collecter de manière sécurisée les coordonnées bancaires de vos clients en éliminant les manipulations de données client sensibles. Vous pouvez utiliser l’[API Setup Intents](https://docs.stripe.com/payments/setup-intents.md) pour collecter en amont les informations du moyen de paiement par prélèvement automatique BECS et déterminer la date et le montant final d’un paiement ultérieurement. Ceci est utile aux fins suivantes : - Enregistrer des moyens de paiement dans un portefeuille pour faciliter les futurs achats - Encaisser des surtaxes après la fourniture d’un service - [Démarrer une période d’essai gratuit dans le cadre d’un abonnement](https://docs.stripe.com/billing/subscriptions/trials.md) ## Configurer Stripe [Côté serveur] Pour commencer, vous devez créer un compte Stripe. [Inscrivez-vous maintenant](https://dashboard.stripe.com/register). Utilisez nos bibliothèques officielles pour accéder à l’API Stripe depuis votre application : #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # 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 de prélèvement automatique BECS pour de futurs paiements, associez-le à un objet représentant votre client. > #### Utiliser l’API Accounts v2 pour représenter les clients > > L’API Accounts v2 est généralement disponible pour les utilisateurs de Connect et en aperçu public pour les autres utilisateurs de Stripe. Si vous avez accès à l’aperçu Accounts v2, vous devez [spécifier une version d’aperçu](https://docs.stripe.com/api-v2-overview.md#sdk-and-api-versioning) dans votre code. > > Pour demander l’accès à l’aperçu Accounts v2, > > Dans la plupart des cas d’usage, nous vous recommandons de [modéliser vos clients en tant qu’objets Account configurés par le client](https://docs.stripe.com/accounts-v2/use-accounts-as-customers.md), plutôt que d’utiliser des objets [Customer](https://docs.stripe.com/api/customers.md). Créez un [Account](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer) ou un [Customer](https://docs.stripe.com/api/customers/create.md) configuré par le client lorsque votre client crée un compte auprès de votre entreprise, ou lors de l’enregistrement d’un moyen de paiement. Associez l’ID de l’objet à votre propre représentation interne d’un client. Créez un nouveau client ou récupérez un client existant pour l’associer à ce paiement. #### Accounts v2 ```curl curl -X POST https://api.stripe.com/v2/core/accounts \ -H "Authorization: Bearer <>" \ -H "Stripe-Version: 2026-04-22.preview" \ --json '{ "contact_email": "jenny.rosen@example.com", "display_name": "Jenny Rosen", "configuration": { "customer": {} }, "include": [ "configuration.customer" ] }' ``` #### Customers v1 ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ -d "name=Jenny Rosen" \ --data-urlencode "email=jenny.rosen@example.com" ``` ## Créer un SetupIntent [Côté serveur] Un [SetupIntent](https://docs.stripe.com/api/setup_intents.md) 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](https://docs.stripe.com/api/setup_intents.md) sur votre serveur. Ajoutez `au_becs_debit` au tableau [payment_method_types](https://docs.stripe.com/api/setup_intents/create.md#create_setup_intent-payment_method_types) et indiquez l’identifiant de l’objet [Account](https://docs.stripe.com/api/v2/core/accounts/object.md#v2_account_object-id) ou [Customer](https://docs.stripe.com/api/customers/object.md#customer_object-id) configuré par le client : #### Accounts v2 #### curl ```bash curl https://api.stripe.com/v1/setup_intents \ -u <>: \ -d "payment_method_types[]"="au_becs_debit" \ -d "customer_account"="{{CUSTOMER_ACCOUNT_ID}}" ``` #### Customers v1 #### curl ```bash curl https://api.stripe.com/v1/setup_intents \ -u <>: \ -d "payment_method_types[]"="au_becs_debit" \ -d "customer"="{{CUSTOMER_ID}}" ``` Après avoir créé un `SetupIntent` sur votre serveur, vous pouvez associer l’ID du `SetupIntent` au client de la session actuelle dans le modèle de données de votre application. Vous pourrez ainsi récupérer les informations après avoir collecté un moyen de paiement avec succès. L’objet `SetupIntent` renvoyé contient une propriété `client_secret`. 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 mandat [Côté client] Vous êtes prêt à collecter les informations de paiement sur le client avec [Stripe Elements](https://docs.stripe.com/payments/elements.md). 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](https://docs.stripe.com/security/guide.md#tls) au moment d’accepter des paiements en mode production. ### Configurer Stripe Elements #### HTML + JS Stripe Elements est automatiquement disponible en tant que fonctionnalité de Stripe.js. Intégrez le script Stripe.js sur votre page de paiement, entre les balises `head` de votre fichier HTML. Chargez toujours Stripe.js directement à partir de js.stripe.com pour maintenir votre conformité PCI. Vous ne devez pas inclure le script dans un lot ni en héberger de copie. ```html Payment Setup ``` Créez une instance d’[Elements](https://docs.stripe.com/js.md#stripe-elements) avec le JavaScript suivant sur votre page de paiement : ```javascript const stripe = Stripe('<>'); const elements = stripe.elements(); ``` ### Demande de prélèvement automatique Avant de pouvoir procéder à un paiement par prélèvement automatique BECS, votre client doit accepter le contrat de service de demande de prélèvement automatique. Pour ce faire, il doit envoyer une demande de prélèvement remplie. Son approbation vous confère un mandat pour débiter son compte. Le `Mandate` est un enregistrement de l’autorisation de débiter un moyen de paiement. Pour l’acceptation des mandats en ligne, vous pouvez créer un formulaire afin de collecter les informations nécessaires. Servez le formulaire via [HTTPS](https://docs.stripe.com/security/guide.md#tls) et capturez les informations suivantes : | Informations | Description | | -------------------- | ----------------------------------------------------------------------- | | **Nom du compte** | Le nom complet du titulaire du compte | | **Numéro BSB** | Le numéro Bank-State-Branch du compte bancaire (par exemple, `123-456`) | | **Numéro de compte** | Le numéro de compte bancaire (par exemple, `87654321`) | Lorsque vous recevez une demande de prélèvement automatique, suivez nos [Conditions d’utilisation des prélèvements automatiques BECS](https://stripe.com/au-becs/legal), et, dans votre formulaire de paiement : - Affichez les conditions précises du [Contrat d’utilisation du service de demande de prélèvement automatique de Stripe](https://stripe.com/au-becs-dd-service-agreement/legal), soit directement sur le formulaire, soit sur une page dont le lien figure dans le formulaire, sous l’appellation « Contrat d’utilisation du service de demande de prélèvement ». - Vérifiez que la demande de prélèvement acceptée et le [contrat de service de demande prélèvement](https://stripe.com/au-becs-dd-service-agreement/legal) associé peuvent être partagés avec votre client à tout moment, que ce soit sous forme de document imprimé ou de copie numérique non modifiable (par exemple, par courrier électronique). Stripe l’hébergera pour vous. - Afficher le texte standard suivant à l’attention de votre client, en remplaçant *Rocketship Inc* par le nom de votre entreprise, afin de recueillir son consentement à votre demande de prélèvement automatique BECS. Son acceptation vous autorise à initier des paiements par prélèvement automatique BECS sur son compte bancaire. > En fournissant vos coordonnées bancaires, vous acceptez la présente demande de prélèvement automatique et le [Contrat d’utilisation du service de demande de prélèvement automatique](https://stripe.com/au-becs-dd-service-agreement/legal). Vous autorisez également Stripe Payments Australia Pty Ltd ACN (numéro d’immatriculation australien)160 180 343, identifiant d’utilisateur de prélèvement automatique n° 507156 (« Stripe ») à débiter votre compte par le biais du Bulk Electronic Clearing System (BECS) au nom de *Rocketship Inc* (le « Marchand ») pour les paiements conformément aux conditions de votre accord avec ce dernier. Vous certifiez être soit le titulaire du compte, soit un signataire autorisé du compte mentionné ci-dessus. Les informations du mandat accepté sont générées lors de la configuration d’un [PaymentMethod](https://docs.stripe.com/payments/payment-methods.md) ou de la confirmation d’un `PaymentIntent`. Vous devez à tout moment être en mesure de communiquer ce mandat (la demande de prélèvement acceptée et son contrat de service associé) à votre client, que ce soit sous forme de document imprimé ou de copie numérique non modifiable (par exemple, par e-mail). Stripe l’héberge pour vous sous la propriété `url` de l’objet `Mandate` lié au `PaymentMethod`. ### Ajouter et configurer un composant Element Australia Bank Account Le composant Australia Bank Account Element vous permet de collecter et de valider à la fois le numéro BSB et le numéro de compte du client. Incluez-le dans votre formulaire de paiement en créant des nœuds DOM (conteneurs) vides avec des ID uniques. Par ailleurs, votre client doit lire et accepter les conditions du [Contrat d’utilisation du service de demande de prélèvement automatique](https://stripe.com/au-becs-dd-service-agreement/legal). #### HTML ```html
By providing your bank account details, you agree to this Direct Debit Request and the Direct Debit Request service agreement, and authorise Stripe Payments Australia Pty Ltd ACN 160 180 343 Direct Debit User ID number 507156 (“Stripe”) to debit your account through the Bulk Electronic Clearing System (BECS) on behalf ofRocket Rides(the "Merchant") for any amounts separately communicated to you by the Merchant. You certify that you are either an account holder or an authorised signatory on the account listed above.
``` Lors du chargement du formulaire, vous pouvez [créer une instance](https://docs.stripe.com/js/elements_object/create_element?type=au_bank_account) du composant Element Australia Bank Account et la monter sur le conteneur Element : ```javascript // Custom styling can be passed to options when creating an Element const style = { base: { color: '#32325d', fontSize: '16px', '::placeholder': { color: '#aab7c4' }, ':-webkit-autofill': { color: '#32325d', }, }, invalid: { color: '#fa755a', iconColor: '#fa755a', ':-webkit-autofill': { color: '#fa755a', }, } }; const options = { style: style, disabled: false, hideIcon: false, iconStyle: "default", // or "solid" } // Create an instance of the auBankAccount Element. const auBankAccount = elements.create('auBankAccount', options); // Add an instance of the auBankAccount Element into // the `au-bank-account-element`
. auBankAccount.mount('#au-bank-account-element'); ``` #### React #### npm Installez [React Stripe.js](https://www.npmjs.com/package/@stripe/react-stripe-js) et le [chargeur Stripe.js](https://www.npmjs.com/package/@stripe/stripe-js) à partir du registre public npm. ```bash npm install --save @stripe/react-stripe-js @stripe/stripe-js ``` #### umd Nous fournissons également une version UMD pour les sites qui n’utilisent pas npm ni de modules. Incluez le script Stripe.js, qui exporte une fonction `Stripe` globale, ainsi que la version UMD de React Stripe.js, qui exporte un objet `ReactStripe` global. Chargez toujours le script Stripe.js directement à partir de **js.stripe.com** pour maintenir votre conformité PCI. Vous ne devez pas inclure le script dans un lot ni en héberger de copie. ```html ``` > La [démo de CodeSandbox](https://codesandbox.io/s/react-stripe-official-q1loc?fontsize=14&hidenavigation=1&theme=dark) vous permet de tester React Stripe.js sans créer de projet. ### Ajoutez Stripe.js et Elements à votre page Pour utiliser les composants Element, enveloppez votre composant de page de paiement dans un [fournisseur Elements](https://docs.stripe.com/sdks/stripejs-react.md#elements-provider). Appelez `loadStripe` avec votre clé publiable et transmettez l’élément `Promise` renvoyé au fournisseur `Elements`. ```jsx import React from 'react'; import ReactDOM from 'react-dom'; import {Elements} from '@stripe/react-stripe-js'; import {loadStripe} from '@stripe/stripe-js'; import PaymentSetupForm from './PaymentSetupForm'; // Make sure to call `loadStripe` outside of a component's render to avoid // recreating the `Stripe` object on every render. const stripePromise = loadStripe('<>'); function App() { return ( ); }; ReactDOM.render(, document.getElementById('root')); ``` ### Demande de prélèvement automatique Avant de pouvoir procéder à un paiement par prélèvement automatique BECS, votre client doit accepter le contrat de service de demande de prélèvement automatique. Pour ce faire, il doit envoyer une demande de prélèvement remplie. Son approbation vous confère un mandat pour débiter son compte. Le `Mandate` est un enregistrement de l’autorisation de débiter un moyen de paiement. Pour l’acceptation des mandats en ligne, vous pouvez créer un formulaire afin de collecter les informations nécessaires. Servez le formulaire via [HTTPS](https://docs.stripe.com/security/guide.md#tls) et capturez les informations suivantes : | Informations | Description | | -------------------- | ----------------------------------------------------------------------- | | **Nom du compte** | Le nom complet du titulaire du compte | | **Numéro BSB** | Le numéro Bank-State-Branch du compte bancaire (par exemple, `123-456`) | | **Numéro de compte** | Le numéro de compte bancaire (par exemple, `87654321`) | Lorsque vous recevez une demande de prélèvement automatique, suivez nos [Conditions d’utilisation des prélèvements automatiques BECS](https://stripe.com/au-becs/legal), et, dans votre formulaire de paiement : - Affichez les conditions précises du [Contrat d’utilisation du service de demande de prélèvement automatique de Stripe](https://stripe.com/au-becs-dd-service-agreement/legal), soit directement sur le formulaire, soit sur une page dont le lien figure dans le formulaire, sous l’appellation « Contrat d’utilisation du service de demande de prélèvement ». - Vérifiez que la demande de prélèvement acceptée et le [contrat de service de demande prélèvement](https://stripe.com/au-becs-dd-service-agreement/legal) associé peuvent être partagés avec votre client à tout moment, que ce soit sous forme de document imprimé ou de copie numérique non modifiable (par exemple, par courrier électronique). Stripe l’hébergera pour vous. - Afficher le texte standard suivant à l’attention de votre client, en remplaçant *Rocketship Inc* par le nom de votre entreprise, afin de recueillir son consentement à votre demande de prélèvement automatique BECS. Son acceptation vous autorise à initier des paiements par prélèvement automatique BECS sur son compte bancaire. > En fournissant vos coordonnées bancaires, vous acceptez la présente demande de prélèvement automatique et le [Contrat d’utilisation du service de demande de prélèvement automatique](https://stripe.com/au-becs-dd-service-agreement/legal). Vous autorisez également Stripe Payments Australia Pty Ltd ACN (numéro d’immatriculation australien)160 180 343, identifiant d’utilisateur de prélèvement automatique n° 507156 (« Stripe ») à débiter votre compte par le biais du Bulk Electronic Clearing System (BECS) au nom de *Rocketship Inc* (le « Marchand ») pour les paiements conformément aux conditions de votre accord avec ce dernier. Vous certifiez être soit le titulaire du compte, soit un signataire autorisé du compte mentionné ci-dessus. Les informations du mandat accepté sont générées lors de la configuration d’un [PaymentMethod](https://docs.stripe.com/payments/payment-methods.md) ou de la confirmation d’un `PaymentIntent`. Vous devez à tout moment être en mesure de communiquer ce mandat (la demande de prélèvement acceptée et son contrat de service associé) à votre client, que ce soit sous forme de document imprimé ou de copie numérique non modifiable (par exemple, par e-mail). Stripe l’héberge pour vous sous la propriété `url` de l’objet `Mandate` lié au `PaymentMethod`. ### Ajouter et configurer un composant AuBankAccountElement Le composant `AuBankAccountElement` vous permet de collecter et de valider à la fois le numéro BSB et le numéro de compte du client. Par ailleurs, votre client doit lire et accepter les conditions du [Contrat d’utilisation du service de demande de prélèvement automatique](https://stripe.com/au-becs-dd-service-agreement/legal). #### JSX ```jsx /** * Use the CSS tab above to style your Element's container. */ import React from 'react'; import {AuBankAccountElement} from '@stripe/react-stripe-js'; import './BecsFormStyles.css' // Custom styling can be passed as options when creating an Element. const AU_BANK_ACCOUNT_STYLE = { base: { color: '#32325d', fontSize: '16px', '::placeholder': { color: '#aab7c4' }, ':-webkit-autofill': { color: '#32325d', }, }, invalid: { color: '#fa755a', iconColor: '#fa755a', ':-webkit-autofill': { color: '#fa755a', }, } }; const AU_BANK_ACCOUNT_ELEMENT_OPTIONS = { style: AU_BANK_ACCOUNT_STYLE, disabled: false, hideIcon: false, iconStyle: "default", // or "solid" }; export default function BecsForm({onSubmit, disabled}) { return (
{/* Display mandate acceptance text. */}
By providing your bank account details, you agree to this Direct Debit Request and the Direct Debit Request service agreement, and authorise Stripe Payments Australia Pty Ltd ACN 160 180 343 Direct Debit User ID number 507156 (“Stripe”) to debit your account through the Bulk Electronic Clearing System (BECS) on behalf ofRocket Rides(the "Merchant") for any amounts separately communicated to you by the Merchant. You certify that you are either an account holder or an authorised signatory on the account listed above.
``` Les composants Element sont entièrement personnalisables. Vous pouvez [personnaliser les composants Element](https://docs.stripe.com/js/elements_object/create_element?type=au_bank_account#elements_create-options) pour qu’ils s’intègrent visuellement à votre site afin de fournir une expérience de paiement uniforme à vos clients. Il est également possible de personnaliser différents états de saisie, par exemple lorsque le composant Element est sélectionné. ## Envoyer les informations du moyen de paiement à Stripe [Côté client] Au lieu de transmettre au client l’objet `SetupIntent` dans son intégralité, utilisez la [clé secrète du client](https://docs.stripe.com/api/setup_intents/object.md#setup_intent_object-client_secret) de l’[étape 3](https://docs.stripe.com/payments/au-becs-debit/set-up-payment.md#web-create-setup-intent). 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. #### HTML + JS Utilisez [stripe.confirmAuBecsDebitSetup](https://docs.stripe.com/js/setup_intents/confirm_au_becs_debit_setup) pour mener à bien la configuration lorsque l’utilisateur envoie le formulaire. Si la configuration réussit, la propriété `status` du SetupIntent basculera sur `succeeded`. Si la configuration échoue, inspectez la valeur `error` renvoyée pour déterminer la cause de l’échec. Étant donné que le paramètre [customer](https://docs.stripe.com/api/setup_intents/create.md#create_setup_intent-customer) a été défini, le *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs) est associé à l’objet `Customer` renseigné une fois la configuration réalisée. À ce stade, vous pouvez associer l’ID de l’objet `Customer` à votre propre représentation interne du client. Vous pourrez ainsi utiliser le `PaymentMethod` enregistré afin d’encaisser les paiements ultérieurs, sans avoir à réclamer au client les informations de son moyen de paiement. ```javascript const form = document.getElementById('setup-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(); stripe.confirmAuBecsDebitSetup( clientSecret, { payment_method: { au_becs_debit: auBankAccount, billing_details: { name: accountholderName.value, email: email.value } } } ); }); ``` Une fois le `SetupIntent` confirmé, vous devez partager l’[URL du mandat](https://docs.stripe.com/api/mandates/object.md#mandate_object-payment_method_details-au_becs_debit-url) de l’[objet Mandate](https://docs.stripe.com/api/mandates.md) avec votre client. Nous vous recommandons également de communiquer au client les informations suivantes lors de la confirmation de la création de son mandat : - un message de confirmation explicite indiquant qu’un mandat de prélèvement automatique a été mis en place - la [dénomination sociale](https://docs.stripe.com/payments/au-becs-debit/set-up-payment.md#statement-descriptors) qui figurera sur le relevé bancaire du client lorsque son compte sera débité - le montant et le calendrier des paiements (le cas échéant) - un lien vers l’URL du mandat généré pour les demandes de prélèvement automatique Vous pouvez accéder à l’ID de l’objet `Mandate` dans le champ `mandate` de l’objet SetupIntent (inclus avec l’événement `setup_intent.succeeded` envoyé après la confirmation), ou le [récupérer via l’API](https://docs.stripe.com/api/setup_intents/retrieve.md). ```curl curl -G https://api.stripe.com/v1/setup_intents/{{SETUP_INTENT_ID}} \ -u "<>:" \ -d "expand[]=mandate" ``` #### React Utilisez [stripe.confirmAuBecsDebitSetup](https://docs.stripe.com/js/setup_intents/confirm_au_becs_debit_setup) pour collecter le mandat lorsque l’utilisateur envoie le formulaire. Il est nécessaire d’inclure l’adresse e-mail du client et le nom du titulaire du compte dans la propriété `billing_details` du paramètre `payment_method` pour créer un `PaymentMethod` de prélèvement automatique BECS. Pour appeler `stripe.confirmAuBecsDebitSetup` depuis votre composant de formulaire de paiement, utilisez les hooks [useStripe](https://docs.stripe.com/sdks/stripejs-react.md#usestripe-hook) et [useElements](https://docs.stripe.com/sdks/stripejs-react.md#useelements-hook). Si vous préférez les composants de classe traditionnels aux hooks, vous pouvez utiliser un [ElementsConsumer](https://docs.stripe.com/sdks/stripejs-react.md#elements-consumer). #### Hooks ```jsx import React from 'react'; import {useStripe, useElements, AuBankAccountElement} from '@stripe/react-stripe-js'; import BecsForm from './BecsForm'; export default function PaymentSetupForm() { const stripe = useStripe(); const elements = useElements(); const handleSubmit = async (event) => { // We don't want to let default form submission happen here, // which would refresh the page. event.preventDefault(); if (!stripe || !elements) { // Stripe.js hasn't yet loaded. // Make sure to disable form submission until Stripe.js has loaded. return; } const auBankAccount = elements.getElement(AuBankAccountElement); // For brevity, this example is using uncontrolled components for // the accountholder's name and email. In a real world app you will // probably want to use controlled components. // https://reactjs.org/docs/uncontrolled-components.html // https://reactjs.org/docs/forms.html#controlled-components const accountholderName = event.target['accountholder-name']; const email = event.target.email; const result = await stripe.confirmAuBecsDebitSetup('{{CLIENT_SECRET}}', { payment_method: { au_becs_debit: auBankAccount, billing_details: { name: accountholderName.value, email: email.value, }, } }); if (result.error) { // Show error to your customer. console.log(result.error.message); } else { // Show a confirmation message to your customer. // The SetupIntent is in the 'succeeded' state. } }; return ( ); } ``` #### Composants de classe ```jsx import React from 'react'; import {ElementsConsumer, AuBankAccountElement} from '@stripe/react-stripe-js'; import BecsForm from './BecsForm'; class PaymentSetupForm extends React.Component { handleSubmit = async (event) => { // We don't want to let default form submission happen here, // which would refresh the page. event.preventDefault(); const {stripe, elements} = this.props; if (!stripe || !elements) { // Stripe.js hasn't yet loaded. // Make sure to disable form submission until Stripe.js has loaded. return; } const auBankAccount = elements.getElement(AuBankAccountElement); // For brevity, this example is using uncontrolled components for // the accountholder's name and email. In a real world app you will // probably want to use controlled components. // https://reactjs.org/docs/uncontrolled-components.html // https://reactjs.org/docs/forms.html#controlled-components const accountholderName = event.target['accountholder-name']; const email = event.target.email; const result = await stripe.confirmAuBecsDebitSetup('{{CLIENT_SECRET}}', { payment_method: { au_becs_debit: auBankAccount, billing_details: { name: accountholderName.value, email: email.value, }, } }); if (result.error) { // Show error to your customer. console.log(result.error.message); } else { // Show a confirmation message to your customer. // The SetupIntent is in the 'succeeded' state. } }; render() { const {stripe} = this.props; return ( ); } } export default function InjectedPaymentSetupForm() { return ( {({stripe, elements}) => ( )} ); } ``` Une fois le `SetupIntent` confirmé, vous devez partager l’[URL du mandat](https://docs.stripe.com/api/mandates/object.md#mandate_object-payment_method_details-au_becs_debit-url) de l’[objet Mandate](https://docs.stripe.com/api/mandates.md) avec votre client. Nous vous recommandons également de communiquer au client les informations suivantes lors de la confirmation de la création de son mandat : - un message de confirmation explicite indiquant qu’un mandat de prélèvement automatique a été mis en place - la [dénomination sociale](https://docs.stripe.com/payments/au-becs-debit/set-up-payment.md#statement-descriptors) qui figurera sur le relevé bancaire du client lorsque son compte sera débité - le montant et le calendrier des paiements (le cas échéant) - un lien vers l’URL du mandat généré pour les demandes de prélèvement automatique Vous pouvez accéder à l’ID de l’objet `Mandate` dans le champ `mandate` de l’objet SetupIntent (inclus avec l’événement `setup_intent.succeeded` envoyé après la confirmation), ou le [récupérer via l’API](https://docs.stripe.com/api/setup_intents/retrieve.md). ```curl curl -G https://api.stripe.com/v1/setup_intents/{{SETUP_INTENT_ID}} \ -u "<>:" \ -d "expand[]=mandate" ``` ## Tester l'intégration Vous pouvez tester votre formulaire en utilisant le numéro BSB de test `000000` et l’un des numéros de compte test ci-dessous avec votre requête [confirmAuBecsDebitSetup](https://docs.stripe.com/js/setup_intents/confirm_au_becs_debit_setup). Vous pouvez également utiliser le token correspondant pour ignorer la saisie manuelle des informations du compte bancaire. | Numéro BSB | Numéro de compte | Token | Description | | ---------- | ---------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `000000` | `000123456` | `pm_auBecsDebit_success` | Le PaymentIntent créé avec le PaymentMethod résultant passe de `processing` à `succeeded`. L’état du mandat reste `active`. | | `000000` | `900123456` | `pm_auBecsDebit_successDelayed` | 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`. | | `000000` | `111111113` | `pm_auBecsDebit_accountClosed` | Le PaymentIntent créé avec le PaymentMethod résultant passe de `processing` à `requires_payment_method` avec un code d’échec `account_closed`. L’état du mandat devient `inactive` à ce stade. | | `000000` | `111111116` | `pm_auBecsDebit_noAccount` | Le PaymentIntent créé avec le PaymentMethod résultant passe de `processing` à `requires_payment_method` avec un code d’échec `no_account`. L’état du mandat devient `inactive` à ce stade. | | `000000` | `222222227` | `pm_auBecsDebit_referToCustomer` | Le PaymentIntent créé avec le PaymentMethod résultant passe de `processing` à `requires_payment_method` avec un code d’échec `refer_to_customer`. L’état du mandat reste `active`. | | `000000` | `922222227` | `pm_auBecsDebit_referToCustomerDelayed` | Le PaymentIntent créé avec le PaymentMethod résultant passe de `processing` à `requires_payment_method` avec un code d’échec `refer_to_customer` (avec un délai de trois minutes). L’état du mandat reste `active`. | | `000000` | `333333335` | `pm_auBecsDebit_debitNotAuthorized` | Le PaymentIntent créé avec le PaymentMethod résultant passe de `processing` à `requires_payment_method` avec un code d’échec `debit_not_authorized`. L’état du mandat devient `inactive` à ce stade. | | `000000` | `666666660` | `pm_auBecsDebit_dispute` | Le PaymentIntent créé avec le PaymentMethod résultant passe de `processing` à `succeeded`, mais un litige est immédiatement créé. | | `000000` | `343434343` | `pm_auBecsDebit_exceedsWeeklyLimit` | Le PaymentIntent qui a été créé avec le PaymentMethod résultant échoue avec une erreur `charge_exceeds_source_limit`, car le montant du paiement a entraîné le dépassement de la limite de volume de paiement hebdomadaire du compte. | | `000000` | `121212121` | `pm_auBecsDebit_exceedsTransactionLimit` | Le PaymentIntent qui a été créé avec le PaymentMethod résultant échoue avec une erreur `charge_exceeds_transaction_limit`, car le montant du paiement dépasse la limite du volume de transactions du compte. | ## Optional: Valider le composant Element Australia Bank Account [Côté client] Le composant Element Australia Bank Account valide les informations dès leur saisie par l’utilisateur. Pour aider vos clients à repérer d’éventuelles erreurs, nous vous conseillons d’écouter les événements ‘change’ du composant Element Australia Bank Account et d’afficher les erreurs : #### HTML + JS ```javascript auBankAccount.on('change', (event) => { const displayError = document.getElementById('error-message'); if (event.error) { displayError.textContent = event.error.message; } else { displayError.textContent = ''; } }); ``` #### React ```jsx { if (event.error) { // Store event.error.message in state and display it. } else { // Remove existing error from state. } }}> ``` L’événement ‘change’ contient d’autres paramètres qui peuvent vous aider à enrichir l’expérience utilisateur. Pour en savoir plus, consultez la [documentation de Stripe.js](https://docs.stripe.com/js/element/events/on_change?type=auBankAccountElement#element_on_change-handler). ## Optional: Acceptation des futurs paiements [Côté client] Lorsque le SetupIntent aboutit, il crée un nouvel objet *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs) et un [objet Mandate](https://docs.stripe.com/api/mandates.md). Ces objets peuvent être utilisés pour initier des paiements ultérieurs sans avoir à demander ses informations de paiement au client. #### Accounts v2 ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1000 \ -d currency=aud \ -d "payment_method_types[]=au_becs_debit" \ -d "customer_account={{CUSTOMERACCOUNT_ID}}" \ -d "payment_method={{PAYMENTMETHOD_ID}}" \ -d confirm=true ``` #### Customers v1 ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1000 \ -d currency=aud \ -d "payment_method_types[]=au_becs_debit" \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method={{PAYMENTMETHOD_ID}}" \ -d confirm=true ``` # iOS > This is a iOS for when payment-ui is mobile and platform is ios. View the full page at https://docs.stripe.com/payments/au-becs-debit/set-up-payment?payment-ui=mobile&platform=ios. Utilisez STPAUBECSFormView, l’interface utilisateur préconfigurée de Stripe pour la collecte des informations de paiement BECS, pour créer un formulaire de paiement permettant de recueillir de manière sécurisée les coordonnées bancaires de vos clients et éliminant les manipulations de données client sensibles. Vous pouvez utiliser l’API [Setup Intents](https://docs.stripe.com/payments/setup-intents.md) pour collecter les informations du moyen de paiement par prélèvement automatique BECS en amont et déterminer le montant final et la date du paiement ultérieurement. Ceci est utile aux fins suivantes : - Enregistrer des moyens de paiement dans un portefeuille pour faciliter les futurs achats - Encaisser des surtaxes après la fourniture d’un service - [Démarrer une période d’essai gratuit dans le cadre d’un abonnement](https://docs.stripe.com/billing/subscriptions/trials.md) ## Configurer Stripe [Côté serveur] [Côté client] Tout d’abord, il vous faut un compte Stripe. [Inscrivez-vous](https://dashboard.stripe.com/register). ### Côté serveur Pour cette intégration, votre serveur doit être doté d’endpoints qui communiquent avec l’API Stripe. Utilisez les bibliothèques officielles pour accéder à l’API Stripe depuis votre serveur : #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ### Côté client Le [SDK iOS de Stripe](https://github.com/stripe/stripe-ios) est disponible en open source et [fait l’objet d’une documentation complète](https://stripe.dev/stripe-ios/index.html). Il est également compatible avec les applications prenant en charge iOS 13 et les versions ultérieures. #### Swift Package Manager Pour installer le SDK, veuillez suivre les étapes ci-dessous : 1. Dans Xcode, sélectionnez **File** > **Add Package Dependencies…** puis saisissez `https://github.com/stripe/stripe-ios-spm` en tant qu’URL du référentiel. 1. Sélectionnez le dernier numéro de version, visible sur notre [page des versions](https://github.com/stripe/stripe-ios/releases). 1. Ajoutez le produit **StripePaymentsUI** à la [cible de votre application](https://developer.apple.com/documentation/swift_packages/adding_package_dependencies_to_your_app). #### CocoaPods 1. Si vous ne l’avez pas encore fait, installez la version la plus récente de [CocoaPods](https://guides.cocoapods.org/using/getting-started.html). 1. Si vous n’avez pas de fichier [Podfile](https://guides.cocoapods.org/syntax/podfile.html), exécutez la commande suivante pour en créer un : ```bash pod init ``` 1. Ajoutez cette ligne à votre `Podfile` : ```podfile pod 'StripePaymentsUI' ``` 1. Exécutez la commande suivante : ```bash pod install ``` 1. À partir de maintenant, n’oubliez pas d’utiliser le fichier .xcworkspace au lieu du fichier .xcodeproj pour ouvrir votre projet dans Xcode. 1. Pour mettre à jour ultérieurement le SDK vers la version la plus récente, il vous suffit d’exécuter : ```bash pod update StripePaymentsUI ``` #### Carthage 1. Si vous ne l’avez pas encore fait, installez la version la plus récente de [Carthage](https://github.com/Carthage/Carthage#installing-carthage). 1. Ajoutez cette ligne à votre `Cartfile` : ```cartfile github "stripe/stripe-ios" ``` 1. Suivez les [instructions d’installation de Carthage](https://github.com/Carthage/Carthage#if-youre-building-for-ios-tvos-or-watchos). Veillez à intégrer tous les cadres requis listés [ici](https://github.com/stripe/stripe-ios/tree/master/StripePaymentsUI/README.md#manual-linking). 1. Pour mettre à jour ultérieurement le SDK vers la version la plus récente, exécutez la commande suivante : ```bash carthage update stripe-ios --platform ios ``` #### Cadre manuel 1. Accédez à notre [page des versions GitHub](https://github.com/stripe/stripe-ios/releases/latest), puis téléchargez et décompressez **Stripe.xcframework.zip**. 1. Faites glisser **StripePaymentsUI.xcframework** vers la section **Embedded Binaries (Fichiers binaires incorporés)** des paramètres **General (Général)** de votre projet Xcode. Veillez à sélectionner **Copy items if needed (Copier les éléments si nécessaire)**. 1. Répétez l’étape 2 pour tous les cadres requis listés [ici](https://github.com/stripe/stripe-ios/tree/master/StripePaymentsUI/README.md#manual-linking). 1. À l’avenir, pour mettre à jour vers la version la plus récente de notre SDK, répétez les étapes 1 à 3. > Pour obtenir de plus amples informations sur la version la plus récente du SDK et ses versions antérieures, consultez la page des [versions](https://github.com/stripe/stripe-ios/releases) sur GitHub. Pour recevoir une notification lors de la publication d’une nouvelle version, [surveillez les versions](https://help.github.com/en/articles/watching-and-unwatching-releases-for-a-repository#watching-releases-for-a-repository) à partir du référentiel. Configurez le SDK avec votre [clé publiable](https://dashboard.stripe.com/test/apikeys) Stripe au démarrage de votre application. Cela lui permet d’envoyer des requêtes à l’API Stripe. #### Swift ```swift import UIKitimportStripePaymentsUI @main class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {StripeAPI.defaultPublishableKey = "<>" // do any other necessary launch configuration return true } } ``` > Utilisez vos [clés de test](https://docs.stripe.com/keys.md#obtain-api-keys) lors de vos activités de test et de développement et vos clés du [mode production](https://docs.stripe.com/keys.md#test-live-modes) pour la publication de votre application. ## Créer ou récupérer un objet Customer [Côté serveur] Pour réutiliser un compte de prélèvement automatique BECS pour de futurs paiements, associez-le à un objet représentant votre client. > #### Utiliser l’API Accounts v2 pour représenter les clients > > L’API Accounts v2 est généralement disponible pour les utilisateurs de Connect et en aperçu public pour les autres utilisateurs de Stripe. Si vous avez accès à l’aperçu Accounts v2, vous devez [spécifier une version d’aperçu](https://docs.stripe.com/api-v2-overview.md#sdk-and-api-versioning) dans votre code. > > Pour demander l’accès à l’aperçu Accounts v2, > > Dans la plupart des cas d’usage, nous vous recommandons de [modéliser vos clients en tant qu’objets Account configurés par le client](https://docs.stripe.com/accounts-v2/use-accounts-as-customers.md), plutôt que d’utiliser des objets [Customer](https://docs.stripe.com/api/customers.md). Créez un [Account](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer) ou un [Customer](https://docs.stripe.com/api/customers/create.md) configuré par le client lorsque votre client crée un compte auprès de votre entreprise, ou lors de l’enregistrement d’un moyen de paiement. Associez l’ID de l’objet à votre propre représentation interne d’un client. Créez un nouveau client ou récupérez un client existant pour l’associer à ce paiement. #### Accounts v2 ```curl curl -X POST https://api.stripe.com/v2/core/accounts \ -H "Authorization: Bearer <>" \ -H "Stripe-Version: 2026-04-22.preview" \ --json '{ "contact_email": "jenny.rosen@example.com", "display_name": "Jenny Rosen", "configuration": { "customer": {} }, "include": [ "configuration.customer" ] }' ``` #### Customers v1 ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ -d "name=Jenny Rosen" \ --data-urlencode "email=jenny.rosen@example.com" ``` ## Recueillir les informations du moyen de paiement et la confirmation du mandat [Côté client] Vous pouvez collecter en toute sécurité les informations de paiement par prélèvement BECS avec [STPAUBECSFormView](https://stripe.dev/stripe-ios/stripe-payments-ui/Classes/STPAUBECSDebitFormView.html), un composant d’interface utilisateur prêt à l’emploi fourni par le SDK. En plus d’afficher les [Conditions d’utilisation des prélèvements automatiques BECS](https://stripe.com/au-becs/legal), `STPAUBECSFormView` fournit une interface utilisateur permettant aux clients de saisir leur nom, leur adresse e-mail, leur numéro BSB et leur numéro de compte. Créez une instance de `STPAUBECSFormView​` au nom de votre entreprise et configurez un délégué que le SDK notifiera une fois la saisie des informations requises pour créer une instance de `STPPaymentMethodParams` effectuée par le client. Vous pouvez également personnaliser `STPAUBECSFormView​` aux couleurs de votre application en renseignant les valeurs des propriétés publiques du `STPAUBECSFormView​'s`. #### Swift ```swift import UIKit import StripePaymentsUI class CheckoutViewController: UIViewController { private var becsFormView = STPAUBECSDebitFormView(companyName: "Example Company Inc.") private let saveButton = UIButton() private var setupIntentClientSecret: String? override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .secondarySystemBackground saveButton.layer.cornerRadius = 5 saveButton.contentEdgeInsets = UIEdgeInsets(top: 4, left: 8, bottom: 4, right: 8) saveButton.backgroundColor = .systemGray3 saveButton.titleLabel?.font = UIFont.systemFont(ofSize: 18) saveButton.setTitle("Save", for: .normal) saveButton.addTarget(self, action: #selector(save), for: .touchUpInside) saveButton.isEnabled = false saveButton.translatesAutoresizingMaskIntoConstraints = false view.addSubview(saveButton) becsFormView.becsDebitFormDelegate = self becsFormView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(becsFormView) NSLayoutConstraint.activate([ becsFormView.leadingAnchor.constraint(equalTo: view.leadingAnchor), view.trailingAnchor.constraint(equalTo: becsFormView.trailingAnchor), becsFormView.topAnchor.constraint(equalToSystemSpacingBelow: view.safeAreaLayoutGuide.topAnchor, multiplier: 2), saveButton.centerXAnchor.constraint(equalTo: view.centerXAnchor), saveButton.topAnchor.constraint(equalToSystemSpacingBelow: becsFormView.bottomAnchor, multiplier: 2), ]) } @objc func save() { // ... } } extension CheckoutViewController: STPAUBECSDebitFormViewDelegate { func auBECSDebitForm(_ form: STPAUBECSDebitFormView, didChangeToStateComplete complete: Bool) { saveButton.isEnabled = complete saveButton.backgroundColor = complete ? .systemBlue : .systemGray3 } } ``` ## Créer un SetupIntent [Côté serveur] Un [SetupIntent](https://docs.stripe.com/api/setup_intents.md) 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](https://docs.stripe.com/api/setup_intents.md) sur votre serveur. Ajoutez `au_becs_debit` au tableau [payment_method_types](https://docs.stripe.com/api/setup_intents/create.md#create_setup_intent-payment_method_types) et indiquez l’identifiant de l’objet [Account](https://docs.stripe.com/api/v2/core/accounts/object.md#v2_account_object-id) ou [Customer](https://docs.stripe.com/api/customers/object.md#customer_object-id) configuré par le client : #### Accounts v2 #### curl ```bash curl https://api.stripe.com/v1/setup_intents \ -u <>: \ -d "payment_method_types[]"="au_becs_debit" \ -d "customer_account"="{{CUSTOMER_ACCOUNT_ID}}" ``` #### Customers v1 #### curl ```bash curl https://api.stripe.com/v1/setup_intents \ -u <>: \ -d "payment_method_types[]"="au_becs_debit" \ -d "customer"="{{CUSTOMER_ID}}" ``` Après avoir créé un `SetupIntent` sur votre serveur, vous pouvez associer l’ID du `SetupIntent` au client de la session actuelle dans le modèle de données de votre application. Vous pourrez ainsi récupérer les informations après avoir collecté un moyen de paiement avec succès. L’objet `SetupIntent` renvoyé contient une propriété `client_secret`. Transmettez la clé secrète du client à l’application côté client pour continuer le processus de configuration. ## Envoyer les informations du moyen de paiement à Stripe [Côté client] Une fois que l’utilisateur a saisi ses données de paiement, confirmez le `SetupIntent` pour déclencher l’enregistrement des informations de prélèvement. Tout d’abord, composez un objet STPSetupIntentConfirmParams avec : 1. La propriété `paymentMethodParams` de [STPAUBECSFormView](https://stripe.dev/stripe-ios/stripe-payments-ui/Classes/STPAUBECSDebitFormView.html) 1. La clé secrète du client `SetupIntent` issue de votre serveur Au lieu de transmettre au client l’objet `SetupIntent` dans son intégralité, utilisez la [clé secrète du client](https://docs.stripe.com/api/setup_intents/object.md#setup_intent_object-client_secret) de l’[étape 4](https://docs.stripe.com/payments/au-becs-debit/set-up-payment.md#ios-create-setup-intent). Cette clé est différente de vos clés API qui servent à authentifier les requêtes à l’API Stripe. La clé secrète du client doit néanmoins être manipulée avec précaution, car elle permet de finaliser la configuration. Ne la consignez pas dans les journaux, ne l’intégrez pas dans des URL et ne l’exposez à personne d’autre que le client. Lancez ensuite le paiement en appelant la méthode [STPPaymentHandler confirmSetupIntent](https://stripe.dev/stripe-ios/stripe-payments/Classes/STPPaymentHandler.html#/c:objc\(cs\)STPPaymentHandler\(im\)confirmSetupIntent:withAuthenticationContext:completion:). Étant donné que le paramètre [customer](https://docs.stripe.com/api/setup_intents/create.md#create_setup_intent-customer) a été défini, le *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs) sera associé à l’objet *Customer* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) renseigné une fois la configuration réalisée. Vous pourrez ainsi utiliser le PaymentMethod enregistré afin d’encaisser les paiements ultérieurs, sans avoir à réclamer au client les informations de son moyen de paiement. #### Swift ```swift import UIKit import StripePaymentsUI class CheckoutViewController: UIViewController { // ... @objc func save() { guard let setupIntentClientSecret = setupIntentClientSecret, let paymentMethodParams = becsFormView.paymentMethodParams else { return; } let setupIntentParams = STPSetupIntentConfirmParams(clientSecret: setupIntentClientSecret) setupIntentParams.paymentMethodParams = paymentMethodParams STPPaymentHandler.shared().confirmSetupIntent(withParams: setupIntentParams, authenticationContext: self) { (handlerStatus, setupIntent, error) in switch (handlerStatus) { case .failed: // Setup failed break case .canceled: // Setup canceled break case .succeeded: // Setup succeeded break @unknown default: fatalError() break } } } } extension CheckoutViewController: STPAuthenticationContext { func authenticationPresentingViewController() -> UIViewController { return self } } ``` Une fois le `SetupIntent` confirmé, partagez l’[URL du mandat](https://docs.stripe.com/api/mandates/object.md#mandate_object-payment_method_details-au_becs_debit-url) de l’[objet Mandate](https://docs.stripe.com/api/mandates.md) avec votre client. Nous vous recommandons également de communiquer au client les informations suivantes lors de la confirmation de la création de son mandat : - Un message de confirmation explicite indiquant qu’un mandat de prélèvement automatique a été mis en place - La [dénomination sociale](https://docs.stripe.com/payments/au-becs-debit/accept-a-payment.md) qui figurera sur le relevé bancaire du client lorsque son compte sera débité - Le montant et le calendrier des paiements (le cas échéant) - Un lien vers l’URL du mandat généré pour les demandes de prélèvement automatique Vous pouvez accéder à l’ID de l’objet `Mandate​` dans le champ `mandate` de [l’objet SetupIntent](https://docs.stripe.com/api/setup_intents/object.md#setup_intent_object-mandate) (inclus avec l’événement `setup_intent.succeeded` envoyé après confirmation), ou vous pouvez [le récupérer via l’API](https://docs.stripe.com/api/setup_intents/retrieve.md). ## Tester l'intégration You can test your form using the test BSB number `000000` and one of the test account numbers below with your [STPPaymentHandler confirmSetupIntent](https://stripe.dev/stripe-ios/stripe-payments/Classes/STPPaymentHandler.html#/c:objc\(cs\)STPPaymentHandler\(im\)confirmSetupIntent:withAuthenticationContext:completion:) method call. | Numéro BSB | Numéro de compte | Token | Description | | ---------- | ---------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `000000` | `000123456` | `pm_auBecsDebit_success` | Le PaymentIntent créé avec le PaymentMethod résultant passe de `processing` à `succeeded`. L’état du mandat reste `active`. | | `000000` | `900123456` | `pm_auBecsDebit_successDelayed` | 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`. | | `000000` | `111111113` | `pm_auBecsDebit_accountClosed` | Le PaymentIntent créé avec le PaymentMethod résultant passe de `processing` à `requires_payment_method` avec un code d’échec `account_closed`. L’état du mandat devient `inactive` à ce stade. | | `000000` | `111111116` | `pm_auBecsDebit_noAccount` | Le PaymentIntent créé avec le PaymentMethod résultant passe de `processing` à `requires_payment_method` avec un code d’échec `no_account`. L’état du mandat devient `inactive` à ce stade. | | `000000` | `222222227` | `pm_auBecsDebit_referToCustomer` | Le PaymentIntent créé avec le PaymentMethod résultant passe de `processing` à `requires_payment_method` avec un code d’échec `refer_to_customer`. L’état du mandat reste `active`. | | `000000` | `922222227` | `pm_auBecsDebit_referToCustomerDelayed` | Le PaymentIntent créé avec le PaymentMethod résultant passe de `processing` à `requires_payment_method` avec un code d’échec `refer_to_customer` (avec un délai de trois minutes). L’état du mandat reste `active`. | | `000000` | `333333335` | `pm_auBecsDebit_debitNotAuthorized` | Le PaymentIntent créé avec le PaymentMethod résultant passe de `processing` à `requires_payment_method` avec un code d’échec `debit_not_authorized`. L’état du mandat devient `inactive` à ce stade. | | `000000` | `666666660` | `pm_auBecsDebit_dispute` | Le PaymentIntent créé avec le PaymentMethod résultant passe de `processing` à `succeeded`, mais un litige est immédiatement créé. | | `000000` | `343434343` | `pm_auBecsDebit_exceedsWeeklyLimit` | Le PaymentIntent qui a été créé avec le PaymentMethod résultant échoue avec une erreur `charge_exceeds_source_limit`, car le montant du paiement a entraîné le dépassement de la limite de volume de paiement hebdomadaire du compte. | | `000000` | `121212121` | `pm_auBecsDebit_exceedsTransactionLimit` | Le PaymentIntent qui a été créé avec le PaymentMethod résultant échoue avec une erreur `charge_exceeds_transaction_limit`, car le montant du paiement dépasse la limite du volume de transactions du compte. | # Android > This is a Android for when payment-ui is mobile and platform is android. View the full page at https://docs.stripe.com/payments/au-becs-debit/set-up-payment?payment-ui=mobile&platform=android. Utilisez [BecsDebitWidget](https://stripe.dev/stripe-android/payments-core/com.stripe.android.view/-becs-debit-widget/index.html), l’interface utilisateur préconfigurée de Stripe pour la collecte des informations de paiement BECS, pour créer un formulaire de paiement qui vous permettra de recueillir de manière sécurisée les coordonnées bancaires de vos clients en éliminant les manipulations de données client sensibles. Vous pouvez utiliser l’API [Setup Intents](https://docs.stripe.com/payments/setup-intents.md) pour collecter les informations du moyen de paiement par prélèvement automatique BECS en amont et déterminer le montant final et la date de paiement ultérieurement. Ceci est utile aux fins suivantes : - Enregistrer des moyens de paiement dans un portefeuille pour faciliter les futurs achats - Encaisser des surtaxes après la fourniture d’un service - [Démarrer une période d’essai gratuit dans le cadre d’un abonnement](https://docs.stripe.com/billing/subscriptions/trials.md) ## Configurer Stripe [Côté serveur] [Côté client] Tout d’abord, il vous faut un compte Stripe. [Inscrivez-vous](https://dashboard.stripe.com/register). ### Côté serveur Pour cette intégration, votre serveur doit être doté d’endpoints qui communiquent avec l’API Stripe. Utilisez les bibliothèques officielles pour accéder à l’API Stripe depuis votre serveur : #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ### Côté client Le [SDK Stripe Android](https://github.com/stripe/stripe-android) est disponible en open source et [fait l’objet d’une documentation complète](https://stripe.dev/stripe-android/). Pour installer le SDK, ajoutez `stripe-android` au bloc `dependencies` de votre fichier [app/build.gradle](https://developer.android.com/studio/build/dependencies) : #### Kotlin ```kotlin plugins { id("com.android.application") } android { ... } dependencies { // ... // Stripe Android SDK implementation("com.stripe:stripe-android:23.9.0") // Include the financial connections SDK to support US bank account as a payment method implementation("com.stripe:financial-connections:23.9.0") } ``` > Pour obtenir de plus amples informations sur la version la plus récente du SDK et ses versions antérieures, consultez la page des [versions](https://github.com/stripe/stripe-android/releases) sur GitHub. Pour savoir quand une nouvelle version est disponible, [surveillez les versions du référentiel](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#configuring-your-watch-settings-for-an-individual-repository). Configurez le SDK avec votre [clé publique](https://dashboard.stripe.com/apikeys) Stripe de façon à ce qu’il puisse envoyer des requêtes à l’API Stripe, par exemple à la sous-classe `Application` : #### Kotlin ```kotlin import com.stripe.android.PaymentConfiguration class MyApp : Application() { override fun onCreate() { super.onCreate() PaymentConfiguration.init( applicationContext, "<>" ) } } ``` > Utilisez vos [clés de test](https://docs.stripe.com/keys.md#obtain-api-keys) lors de vos activités de test et de développement et vos clés du [mode production](https://docs.stripe.com/keys.md#test-live-modes) pour la publication de votre application. Les échantillons de code de Stripe utilisent également [OkHttp](https://github.com/square/okhttp) et [GSON](https://github.com/google/gson) pour envoyer des requêtes HTTP à un serveur. ## Créer ou récupérer un objet Customer [Côté serveur] Pour réutiliser un compte de prélèvement automatique BECS pour de futurs paiements, associez-le à un objet représentant votre client. > #### Utiliser l’API Accounts v2 pour représenter les clients > > L’API Accounts v2 est généralement disponible pour les utilisateurs de Connect et en aperçu public pour les autres utilisateurs de Stripe. Si vous avez accès à l’aperçu Accounts v2, vous devez [spécifier une version d’aperçu](https://docs.stripe.com/api-v2-overview.md#sdk-and-api-versioning) dans votre code. > > Pour demander l’accès à l’aperçu Accounts v2, > > Dans la plupart des cas d’usage, nous vous recommandons de [modéliser vos clients en tant qu’objets Account configurés par le client](https://docs.stripe.com/accounts-v2/use-accounts-as-customers.md), plutôt que d’utiliser des objets [Customer](https://docs.stripe.com/api/customers.md). Créez un [Account](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer) ou un [Customer](https://docs.stripe.com/api/customers/create.md) configuré par le client lorsque votre client crée un compte auprès de votre entreprise, ou lors de l’enregistrement d’un moyen de paiement. Associez l’ID de l’objet à votre propre représentation interne d’un client. Créez un nouveau client ou récupérez un client existant pour l’associer à ce paiement. #### Accounts v2 ```curl curl -X POST https://api.stripe.com/v2/core/accounts \ -H "Authorization: Bearer <>" \ -H "Stripe-Version: 2026-04-22.preview" \ --json '{ "contact_email": "jenny.rosen@example.com", "display_name": "Jenny Rosen", "configuration": { "customer": {} }, "include": [ "configuration.customer" ] }' ``` #### Customers v1 ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ -d "name=Jenny Rosen" \ --data-urlencode "email=jenny.rosen@example.com" ``` ## Recueillir les informations du moyen de paiement et la confirmation du mandat [Côté client] [BecsDebitWidget](https://stripe.dev/stripe-android/payments-core/com.stripe.android.view/-becs-debit-widget/index.html) vous permet de collecter de manière sécurisée les informations de paiement par prélèvement automatique BECS de vos clients. Ce composant intégré fourni par le SDK affiche une interface utilisateur sur laquelle vos clients peuvent renseigner leur nom, leur adresse électronique, leur numéro BSB et leur numéro de compte. Il porte par ailleurs à leur connaissance les conditions du [Contrat d’utilisation du service de demande de prélèvement automatique](https://stripe.com/au-becs/legal). ### Ajouter le BecsDebitWidget à votre mise en page Ajoutez `BecsDebitWidget` à votre mise en page et configurez l’attribut `app:companyName` avec le nom de votre entreprise. ```xml