Accepter un paiement
Acceptez les paiements en ligne en toute sécurité.
Créez un formulaire de paiement ou utilisez une page de paiement préconfigurée pour commencer à accepter les paiements en ligne.

Intégrez l’interface utilisateur de paiement préconfigurée de Stripe au processus de paiement de votre application Android grâce à la classe PaymentSheet.
Configurer StripeCôté serveurCôté client
Tout d’abord, il vous faut un compte Stripe. Inscrivez-vous.
Côté serveur
Cette intégration exige des endpoints sur votre serveur 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 Stripe Android est disponible en open source et fait l’objet d’une documentation complète.
Pour installer le SDK, ajoutez stripe-android
au bloc dependencies
de votre fichier app/build.gradle :
Remarque
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 sur GitHub. Pour savoir quand une nouvelle version est disponible, surveillez les versions du référentiel.
Activer les moyens de paiement
Affichez vos paramètres des moyens de paiement et activez les moyens de paiement que vous souhaitez prendre en charge. Vous devez activer au moins un moyen de paiement pour créer un PaymentIntent.
Par défaut, Stripe active les cartes bancaires et les autres moyens de paiement courants qui peuvent vous permettre d’atteindre davantage de clients. Nous vous recommandons toutefois d’activer d’autres moyens de paiement pertinents pour votre entreprise et vos clients. Consultez la page Prise en charge des moyens de paiement pour en savoir plus sur la prise en charge des produits et des moyens de paiement, et notre page des tarifs pour prendre connaissance des frais que nous appliquons.
Ajouter un endpointCôté serveur
Remarque
Pour afficher PaymentSheet avant de créer un PaymentIntent, consultez notre article Collecter les détails du paiement avant de créer un Intent.
Cette intégration utilise trois objets de l’API Stripe :
PaymentIntent : pour représenter votre intention d’encaisser le paiement d’un client, Stripe utilise un objet PaymentIntent qui suit vos tentatives de débit et les changements d’état du paiement tout au long du processus.
(Facultatif) Customer : pour configurer un moyen de paiement en vue de paiements futurs, vous devez l’associer à un objet Customer. Créez un objet Customer lorsque votre client ouvre un compte chez vous. Si votre client effectue un paiement en tant qu’invité, vous pouvez créer un objet Customer avant le paiement, puis l’associer ultérieurement à votre représentation interne du compte client.
(Facultatif) Customer Ephemeral Key : l’objet Customer contient des informations sensibles qu’il n’est pas possible de récupérer directement depuis une application. Une clé éphémère permet d’accorder au SDK un accès temporaire à l’objet Customer.
Remarque
Si vous n’enregistrez jamais les cartes bancaires des clients et que vous n’autorisez pas vos clients réguliers à réutiliser les cartes enregistrées, vous pouvez exclure les objets Customer et Customer Ephemeral Key de votre intégration.
Pour des raisons de sécurité, votre application ne peut pas créer ces objets. À la place, ajoutez sur votre serveur un endpoint qui :
- Récupère l’objet Customer ou en crée un nouveau.
- Crée une clé éphémère pour le client.
- Crée un PaymentIntent comportant les paramètres amount, currency, customer. Vous pouvez également inclure le paramètre
automatic_
(facultatif). Stripe l’active par défaut dans la dernière version de l’API.payment_ methods - Renvoie la clé secrète du client du Payment Intent, le
secret
de la clé éphémère, l’id du client et votre clé publiable à votre application.
Les moyens de paiement présentés à votre client lors du processus de paiement sont également inclus dans le PaymentIntent. Vous pouvez laisser Stripe extraire (depuis les paramètres de votre Dashboard) les moyens de paiement à présenter, ou les répertorier manuellement. Quelle que soit l’option que vous choisissez, sachez que la devise transmise dans le PaymentIntent filtre les moyens de paiement présentés au client. Par exemple, si vous transmettez eur
dans le PaymentIntent et que vous avez activé OXXO dans votre Dashboard, votre client ne verra pas ce moyen de paiement étant donné qu’OXXO ne prend pas en charge les paiements en eur
.
À moins que votre intégration ne nécessite du code pour la présentation des moyens de paiement, Stripe vous recommande l’option automatisée. En effet, Stripe évalue la devise, les restrictions en matière de moyens de paiement ainsi que d’autres paramètres pour dresser la liste des moyens de paiement pris en charge. Ceux qui augmentent le taux de conversion et qui sont les plus pertinents pour la devise et le lieu de résidence du client sont priorisés.
Collecter les données de paiementCôté client
Avant d’afficher le composant Element Payment pour mobile, vous devez, sur votre écran de paiement :
- Présenter les produits commandés et le montant total des achats
- Recueillez toutes les informations de livraison requises à l’aide du composant Address Element
- Inclure un bouton de règlement pour afficher l’interface utilisateur de Stripe
Si vous définissez allowsDelayedPaymentMethods
sur true, les moyens de paiement à notification différée, comme les comptes bancaires étasuniens, seront acceptés. Pour ces moyens de paiement, l’état final du paiement n’est pas connu une fois le processus du PaymentSheet
achevé, et le paiement peut plus tard aboutir comme échouer. Si vous prenez en charge ces types de moyens de paiement, informez votre client que sa commande est confirmée et ne la traitez (en lui expédiant son produit, par exemple) qu’une fois le paiement reçu.
Gérer les événements post-paiementCôté serveur
Stripe envoie un événement payment_intent.succeeded à l’issue du paiement. Utilisez l’outil de webhook du Dashboard ou suivez le guide consacré aux webhooks pour recevoir ces événements et exécuter des actions, comme envoyer une confirmation de commande par e-mail à votre client, enregistrer la vente dans une base de données ou lancer un flux de livraison.
Plutôt que d’attendre un rappel de votre client, écoutez ces événements. Côté client, il arrive en effet que l’utilisateur ferme la fenêtre de son navigateur ou quitte l’application avant l’exécution du rappel. Certains clients malintentionnés peuvent d’autre part tenter de manipuler la réponse. En configurant votre intégration de manière à ce qu’elle écoute les événements asynchrones, vous pourrez accepter plusieurs types de moyens de paiement avec une seule et même intégration.
En plus de l’événement payment_
, nous vous recommandons de gérer ces autres événements lorsque vous encaissez des paiements à l’aide de l’Element Payment :
Événement | Description | Action |
---|---|---|
payment_intent.succeeded | Envoyé lorsqu’un client effectue un paiement avec succès. | Envoyez au client une confirmation de commande et traitez sa commande. |
payment_intent.processing | Envoyé lorsqu’un client initie un paiement, mais qu’il ne l’a pas encore finalisé. Dans la plupart des cas, cet événement est envoyé lorsque le client initie un prélèvement bancaire. Il est suivi par un événement payment_ ou payment_ . | Envoyez au client une confirmation de commande qui indique que son paiement est en attente. Pour des marchandises dématérialisées, vous pourrez traiter la commande sans attendre que le paiement soit effectué. |
payment_intent.payment_failed | Envoyé lorsqu’un client effectue une tentative de paiement qui se solde par un échec. | Si un paiement passe de l’état processing à payment_ , proposez au client de retenter le paiement. |
Tester l'intégration
Consultez la section consacrée aux tests pour obtenir des informations supplémentaires sur la manière de tester votre intégration.
FacultatifActiver Link
Activez Link dans vos paramètres des moyens de paiement pour permettre à vos clients d’enregistrer et de réutiliser en toute sécurité leurs informations de paiement à l’aide du bouton de paiement express en un clic de Link.
Transmettre l’adresse e-mail de votre client au composant Mobile Payment Element
Link authentifie un client à l’aide de son adresse e-mail. Stripe recommande de préremplir autant d’informations que possible afin de simplifier le processus de paiement.
Pour préremplir le nom, l’adresse e-mail et le numéro de téléphone du client, fournissez la propriété defaultBillingDetails
avec vos informations client lors de l’initialisation de PaymentSheet.
.
FacultatifActiver Google Pay
Configurer votre intégration
Pour utiliser Google Pay, commencez par activer l’API Google Pay en ajoutant les informations suivantes au libellé <application>
de votre AndroidManifest.xml :
<application> ... <meta-data android:name="com.google.android.gms.wallet.api.enabled" android:value="true" /> </application>
Pour en savoir plus, consultez cette page indiquant comment configurer l’API Google Pay pour Android.
Ajouter Google Pay
Pour ajouter Google Pay à votre intégration, transmettez un PaymentSheet.GooglePayConfiguration avec votre environnement Google Pay (en mode production ou en mode test), ainsi que le code pays de votre entreprise lors de l’initialisation de PaymentSheet.Configuration.
Tester Google Pay
Google vous permet d’effectuer des paiements tests par le biais de sa suite de cartes de test. La suite de test prend en charge l’utilisation des cartes de test Stripe.
Vous pouvez tester Google Pay à l’aide d’un appareil Android physique. Assurez-vous d’avoir un appareil dans un pays où Google Pay est pris en charge et connectez-vous à un compte Google sur votre appareil de test avec une vraie carte enregistrée dans Google Wallet.
FacultatifActiver la numérisation de carte
Pour activer la prise en charge de la numérisation de carte, ajoutez stripecardscan
au bloc dependencies
de votre fichier app/build.gradle :
FacultatifActiver les paiements ACH
Intégrez Financial Connections en tant que dépendance pour votre application afin d’activer les paiements par prélèvements ACH.
Le SDK Stripe Android est disponible en open source et fait l’objet d’une documentation complète.
Pour installer le SDK, ajoutez financial-connections
au bloc dependencies
de votre fichier app/build.gradle :
Remarque
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 sur GitHub. Pour savoir quand une nouvelle version est disponible, surveillez les versions du référentiel.
FacultatifPersonnaliser la fiche
Pour personnaliser le formulaire de paiement, vous devez obligatoirement utiliser l’objet PaymentSheet.Configuration.
Appearance
Personnalisez les couleurs, les polices et même plus afin de vous adapter à l’apparence de votre application en utilisant l’API Appearance.
Mise en page des moyens de paiement
Configurez la mise en page des moyens de paiement dans la feuille à l’aide de paymentMethodLayout. Vous pouvez les afficher horizontalement, verticalement ou laisser Stripe optimiser la mise en page automatiquement.

Recueillir les adresses des utilisateurs
Recueillez les adresses de livraison ou de facturation de vos clients locaux et internationaux à l’aide du composant Address Element.
Nom d’affichage de l’entreprise
Spécifiez un nom d’entreprise à afficher pour le client en définissant merchantDisplayName. Par défaut, il s’agit du nom de votre application.
Mode sombre
Par défaut, PaymentSheet
s’adapte automatiquement aux paramètres d’affichage du système de l’utilisateur (mode clair ou mode sombre). Vous pouvez modifier ce comportement en sélectionnant le mode clair ou le mode sombre sur votre application :
Informations de facturation par défaut
Si vous souhaitez définir des valeurs par défaut pour les informations de facturation collectées dans le formulaire de paiement, configurez la propriété defaultBillingDetails
. Le PaymentSheet
préremplit les champs avec les valeurs que vous fournissez.
Configurer la collecte des données de facturation
Utiliser BillingDetailsCollectionConfiguration
pour spécifier la manière dont vous souhaitez collecter les informations de facturation dans la PaymentSheet.
Vous pouvez collecter le nom, l’adresse e-mail, le numéro de téléphone et l’adresse de votre client.
Si vous souhaitez associer les informations de facturation par défaut à l’objet PaymentMethod même lorsque ces champs ne sont pas collectés dans l’interface utilisateur, définissez billingDetailsCollectionConfiguration.
sur true
.
Remarque
Consultez votre conseiller juridique au sujet des lois qui s’appliquent à la collecte d’informations. Ne collectez les numéros de téléphone que si vous en avez besoin pour la transaction.
FacultatifGérer la déconnexion de l'utilisateur
PaymentSheet
enregistre certaines informations localement pour se souvenir si un utilisateur a utilisé Link au sein d’une application. Pour effacer l’état interne de PaymentSheet
, appelez la méthode PaymentSheet.
lorsque votre utilisateur se déconnecte.
FacultatifMener à bien le paiement dans votre interface utilisateur
Vous pouvez présenter le formulaire de paiement pour collecter uniquement les informations du moyen de paiement et finaliser l’opération dans l’interface utilisateur de votre application. Cette méthode est utile si vous avez intégré un bouton d’achat personnalisé ou si vous avez besoin d’étapes supplémentaires après la collecte des informations de paiement.

Remarque
Un exemple d’intégration est disponible sur notre GitHub.
- Tout d’abord, initialisez PaymentSheet.FlowController au lieu de
PaymentSheet
en utilisant l’une des méthodes Builder.
- Appelez ensuite
configureWithPaymentIntent
avec les clés d’objet Stripe récupérées depuis votre back-end et mettez à jour votre interface utilisateur dans le rappel en utilisant getPaymentOption(). Cette propriété contient une image et une étiquette représentant le moyen de paiement actuellement sélectionné par le client.
- Appelez ensuite presentPaymentOptions pour collecter les informations de paiement. Lorsque le client a terminé, le formulaire se ferme et appelle le paymentOptionCallback transmis plus tôt dans
create
. Implémentez cette méthode pour mettre à jour votre interface utilisateur avec la propriétépaymentOption
renvoyée.
- Enfin, appelez confirm pour mener à bien le paiement. Lorsque le client a terminé, le formulaire se ferme et appelle le paymentResultCallback transmis plus tôt dans
create
.
Si vous définissez allowsDelayedPaymentMethods
sur true, les moyens de paiement à notification différée, comme les comptes bancaires étasuniens, seront acceptés. Pour ces moyens de paiement, l’état final du paiement n’est pas connu une fois le processus du PaymentSheet
achevé, et le paiement peut plus tard aboutir comme échouer. Si vous prenez en charge ces types de moyens de paiement, informez votre client que sa commande est confirmée et ne la traitez (en lui expédiant son produit, par exemple) qu’une fois le paiement reçu.
FacultatifActiver la collecte du CVC après confirmation
Les instructions suivantes pour récupérer le CVC d’une carte enregistrée pendant la confirmation du PaymentIntent supposent que votre intégration comprend les éléments suivants :
- Création de PaymentIntents avant de collecter les informations de paiement
Mettre à jour les paramètres de création de l’Intent
Pour récupérer le CVC lors de la confirmation du paiement, ajoutez require_
lors de la création du PaymentIntent.