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.
Utilisez AuBECSDebitForm
, 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 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
Configurer StripeCôté serveurCôté client
Côté serveur
Pour cette intégration, votre serveur doit être doté d’endpoints qui communiquent avec l’API Stripe. Utilisez nos bibliothèques officielles pour accéder à l’API Stripe depuis votre serveur :
Côté client
Le SDK React Native est disponible en open source et fait l’objet d’une documentation complète. En interne, il utilise des SDK Android et iOS natifs. Pour installer le SDK React Native de Stripe, exécutez l’une des commandes suivantes dans le répertoire de votre projet (selon le gestionnaire de paquets que vous utilisez) :
Ensuite, installez les autres dépendances nécessaires :
- Pour iOS, accédez au répertoire ** ios** et exécutez
pod install
pour vous assurer d’installer également les dépendances natives requises. - Pour Android, il n’y a plus de dépendances à installer.
Initialisation de Stripe
Pour initialiser Stripe dans votre application React Native, wrappez votre écran de paiement avec le composant StripeProvider
ou utilisez la méthode d’initialisation initStripe
. Seule la clé publiable de l’API dans publishableKey
est nécessaire. L’exemple suivant montre comment initialiser Stripe à l’aide du composant StripeProvider
.
import { StripeProvider } from '@stripe/stripe-react-native'; function App() { const [publishableKey, setPublishableKey] = useState(''); const fetchPublishableKey = async () => { const key = await fetchKey(); // fetch key from your server here setPublishableKey(key); }; useEffect(() => { fetchPublishableKey(); }, []); return ( <StripeProvider publishableKey={publishableKey} merchantIdentifier="merchant.identifier" // required for Apple Pay urlScheme="your-url-scheme" // required for 3D Secure and bank redirects > // Your app code here </StripeProvider> ); }
Créer ou récupérer un CustomerCôté serveur
Pour que la réutilisation d’un compte de prélèvement automatique BECS soit possible pour de futurs paiements, celui-ci doit être associé à un objet Customer.
Créez 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 du moyen de paiement stockées.
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.
Recueillir les informations du moyen de paiement et la confirmation du mandatCôté client
Vous pouvez recueillir de manière sécurisée les informations de paiement par prélèvement automatique BECS en Australie avec AuBECSDebitForm
, un composant intégré d’interface utilisateur fourni par le SDK. AuBECSDebitForm
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, en plus d’afficher les conditions de prélèvement automatique BECS en Australie.
Ajoutez à l’écran un composant AuBECSDebitForm
avec le nom de votre entreprise comme propriété. Vous pouvez également personnaliser ce composant aux couleurs de votre application au moyen de la propriété formStyle
. Collectez les informations du formulaire avec la propriété onComplete
.
function BECSSetupFuturePaymentScreen() { const [formDetails, setFormDetails] = useState< AuBECSDebitFormComponent.FormDetails >(); return ( <View> <AuBECSDebitForm onComplete={(value) => setFormDetails(value)} companyName="Example Company Inc." formStyle={{ textColor: '#000000', fontSize: 22, placeholderColor: '#999999', }} /> <Button title="Save" variant="primary" onPress={handlePayPress} /> </View> ); }
Créer un SetupIntentCôté serveurCôté client
Cô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 avec payment_method_types défini sur au_
et spécifiez l’id :
Après la création d’un SetupIntent
sur votre serveur, vous pouvez associer l’ID du SetupIntent
au client de la session active dans le modèle de données de votre application. Vous pourrez ainsi récupérer l’information après avoir collecté un moyen de paiement.
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.
Côté client
Côté client, demandez un SetupIntent auprès de votre serveur et sauvegardez la clé secrète du client.
const fetchSetupIntentClientSecret = async (customerEmail: string) => { const response = await fetch(`${API_URL}/create-setup-intent`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ email: customerEmail, payment_method_types: ['au_becs_debit'], }), }); const {clientSecret, error} = await response.json(); return {clientSecret, error}; };
Envoyer les informations du moyen de paiement à StripeCôté client
Récupérez la clé secrète du client dans le SetupIntent que vous avez créé, puis appelez confirmSetupIntent
. Une vue Web s’affiche pour permettre au client de mener à bien la configuration sur le site Web ou l’application de sa banque.
function BECSSetupFuturePaymentScreen() { const { confirmSetupIntent } = useConfirmSetupIntent(); const [formDetails, setFormDetails] = useState< AuBECSDebitFormComponent.FormDetails >(); const handlePayPress = async () => { const { error, setupIntent } = await confirmSetupIntent(clientSecret, { paymentMethodType: 'AuBecsDebit', paymentMethodData: { formDetails, } }); if (error) { Alert.alert(`Error code: ${error.code}`, error.message); console.log('Setup intent confirmation error', error.message); } else if (setupIntent) { Alert.alert( `Success: Setup intent created. Intent status: ${setupIntent.status}` ); } }; return ( <View> <AuBECSDebitForm onComplete={(value) => setFormDetails(value)} companyName="Example Company Inc." formStyle={{ textColor: '#000000', fontSize: 22, placeholderColor: '#999999', }} /> <Button title="Save" variant="primary" onPress={handlePayPress} /> </View> ); }
Tester l'intégration
Testez votre formulaire en utilisant le numéro BSB de test 000-000
et l’un des numéros de compte de test ci-dessous lors de votre appel confirmSetupIntent
.
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. |