Utiliser iDEAL pour configurer de futurs paiements par prélèvement SEPA
Découvrez comment enregistrer des coordonnées bancaires lors d'un paiement iDEAL et les réutiliser pour des prélèvements automatiques SEPA ultérieurs.
Mise en garde
Nous vous recommandons de suivre les instructions de notre guide Configurer des paiements futurs. Si vous avez déjà intégré Elements, reportez-vous à notre Guide de migration du Payment Element.
iDEAL est un moyen de paiement à usage unique qui nécessite l’authentification de chaque paiement par le client. Avec cette intégration, Stripe facture 0,01 EUR à votre client via iDEAL pour la collecte de ses informations bancaires. Une fois le paiement authentifié par votre client, Stripe le rembourse et enregistre l’IBAN de votre client dans un moyen de paiement par prélèvement automatique SEPA. Vous pouvez alors utiliser ce PaymentMethod de type prélèvement automatique SEPA pour accepter des paiements ou configurer un abonnement.
Mise en garde
Pour utiliser iDEAL afin de configurer des paiements par prélèvement SEPA, vous devez activer les prélèvements automatiques SEPA dans le Dashboard. Vous devez également respecter les Conditions d’utilisation d’iDEAL et les Conditions d’utilisation du prélèvement SEPA.
Accepter les paiements par prélèvement SEPA avec iDEAL dans votre application consiste à créer un SetupIntent pour suivre le processus, recueillir la confirmation du mandat et rediriger votre client vers iDEAL. Stripe utilise le SetupIntent pour suivre et gérer les états successifs de la configuration jusqu’à ce qu’elle soit terminée.
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.
Remarque
Nous vous recommandons de suivre le guide officiel de TypeScript pour ajouter la prise en charge de TypeScript.
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 { useState, useEffect } from 'react'; 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> ); }
Remarque
Utilisez vos clés de test d’API lors de vos activités de test et de développement, et vos clés du mode production pour la publication de votre application.
Créer un objet CustomerCôté serveur
Créez un objet Customer lorsqu’un client crée un compte auprès de votre entreprise et associez-le à votre représentation interne de son compte. Vous pourrez ainsi récupérer et utiliser ultérieurement les informations enregistrées sur son moyen de paiement.
Créer un SetupIntentCôté serveur
Créez un SetupIntent
avec l’ID du client et réglez le paramètre payment_method_types sur ideal
. Le SetupIntent
suit les étapes du processus de configuration. Dans le cas d’iDEAL, ceci comprend l’obtention d’un mandat de prélèvement automatique SEPA auprès du client et le suivi de sa validité.
Collecter les informations du moyen de paiement et obtenir un accusé de réception du mandatCôté client
Dans votre application, recueillez le nom et le prénom de votre client, son adresse e-mail et le nom de sa banque(par exemple, abn_
).
export default function IdealPaymentScreen() { const [name, setName] = useState(); const [bankName, setBankName] = useState(); const [email, setEmai] = useState(); const handlePayPress = async () => { // ... }; return ( <Screen> <TextInput placeholder="Email" onChange={(value) => setEmail(value.nativeEvent.text)} /> <TextInput placeholder="Name" onChange={(value) => setName(value.nativeEvent.text)} /> <TextInput placeholder="Bank name" onChange={(value) => setBankName(value.nativeEvent.text)} /> </Screen> ); }
Pour traiter des paiements par prélèvement SEPA, vous devez faire accepter le mandat par votre client. Affichez le texte d’autorisation standard suivant afin que votre client puisse signer le mandat de manière tacite.
Remplacez Rocket Rides par le nom de votre entreprise.
La configuration d’un moyen de paiement vaut acceptation du mandat. Le client ayant tacitement signé le mandat lorsqu’il a accepté ces conditions, vous devez communiquer ces dernières dans votre formulaire ou par e-mail.
Envoyer les informations du moyen de paiement à StripeCôté client
Récupérez la clé secrète du client auprès du SetupIntent que vous avez créé, puis appelez leconfirmSetupIntent
. Une vue Web s’affiche pour permettre au client de finaliser la configuration sur le site Web ou l’application de sa banque. Ensuite, la promesse aboutit avec le résultat du SetupIntent.
export default function IdealPaymentScreen() { const [name, setName] = useState(); const [bankName, setBankName] = useState(); const [email, setEmai] = useState(); const handlePayPress = async () => { const billingDetails: PaymentMethodCreateParams.BillingDetails = { name: 'Jenny Rosen', email: 'jenny.rosen@example.com', }; }; const { error, setupIntent } = await confirmSetupIntent(clientSecret, { paymentMethodType: 'Ideal', paymentMethodData: { billingDetails, bankName, } }); if (error) { Alert.alert(`Error code: ${error.code}`, error.message); } else if (setupIntent) { Alert.alert( 'Success', `Setup intent created. Intent status: ${setupIntent.status}` ); } return <Screen>{/* ... */}</Screen>; }
Débiter le PaymentMethod Prélèvement automatique SEPA plus tard
Lorsque vous devez à nouveau débiter votre client, créez un nouveau PaymentIntent. Pour obtenir l’ID du moyen de paiement Prélèvement automatique SEPA, récupérez le SetuptIntent précédent et développez le champ latest_
où vous trouverez l’ID generated_
dans payment_
.
Créez un PaymentIntent en utilisant les identifiants du prélèvement SEPA et du client.
Tester votre intégration
Utiliser vos clés API de test pour confirmer le SetupIntent. Après avoir confirmé, vous êtes redirigé vers une page de test avec des options pour valider ou non la configuration du moyen de paiement.
- Cliquez sur Autorisation du paiement test pour tester le cas où la configuration réussit. Le SetupIntent passe de
requires_
àaction succeeded
. - Cliquez sur Échec du paiement test pour tester le cas où le client ne parvient pas à s’authentifier. Le SetupIntent passe de
requires_
àaction requires_
.payment_ method