Configurer des paiements PayPal futurs
Découvrez comment enregistrer des informations PayPal pour débiter vos clients ultérieurement.
Configurez des paiements PayPal futurs afin d’enregistrer les informations de paiement des clients pour les abonnements, les paiements différés et simplifier les futurs achats. Découvrez comment activer et utiliser les paiements récurrents avec PayPal par le biais de Stripe.
Activer les paiements récurrents
Stripe active automatiquement les paiements récurrents pour la plupart des utilisateurs lorsqu’ils activent les paiements PayPal dans le Dashboard Stripe. Cependant, en raison des politiques de PayPal et des restrictions régionales, certains utilisateurs peuvent avoir besoin d’activer manuellement les paiements récurrents. C’est le cas notamment pour les utilisateurs qui ont configuré leur compte avant l’introduction de l’activation automatique. Pour activer manuellement les paiements récurrents :
Accédez à vos paramètres des moyens de paiement.
Cliquez sur PayPal > Activer dans la section Paiements récurrents.
Une fois que vous activez les paiements récurrents, l’accès apparaît comme en attente dans le Dashboard. L’accès est généralement disponible sous cinq jours ouvrables.
Une fois l’accès accordé, les paiements récurrents sont disponibles dans vos paramètres PayPal. Dans les environnements de test, les paiements récurrents sont activés par défaut.
Vous pouvez utiliser l’API Setup Intents pour collecter à l’avance les données d’un moyen de paiement PayPal, en vue d’un paiement dont la date et le montant seront déterminés ultérieurement. Utilisez-la pour :
- 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
Tout d’abord, il vous faut un compte Stripe. Inscrivez-vous.
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 :
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.
Configurez le SDK avec votre clé publique Stripe de façon à ce qu’il puisse envoyer des requêtes à l’API Stripe, par exemple à la sous-classe Application
:
Remarque
Utilisez vos clés de test lors de vos activités de test et de développement et vos clés du mode production pour la publication de votre application.
Les échantillons de code de Stripe utilisent également OkHttp et GSON pour envoyer des requêtes HTTP à un serveur.
Créer ou récupérer un CustomerCôté serveur
Pour réutiliser un moyen de paiement PayPal en vue de paiements futurs, vous devez l’associer à un objet Customer.
Créez un objet Customer lorsque votre client crée un compte auprès votre entreprise. En associant l’ID de l’objet Customer à votre propre représentation interne de ce client, vous pourrez par la suite récupérer et utiliser les informations du moyen de paiement enregistré. Si votre client n’a pas créé de compte, vous pouvez tout de même lui créer un objet Customer, puis l’associer à votre représentation interne de ce compte du client par la suite.
Créer un SetupIntentCôté serveur
Un SetupIntent est un objet qui représente votre intention de configurer le moyen de paiement de votre client en vue de paiements futurs et qui suit les étapes de cette configuration.
Créez un SetupIntent sur votre serveur en définissant l’attribut payment_method_types sur paypal
et en indiquant l’id de l’objet Customer.
Le SetupIntent contient une clé client_secret, une clé unique que vous devez transmettre à Stripe côté client afin de rediriger votre client vers PayPal pour que celui-ci autorise le mandat.
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éé et appelez la méthode confirm de PaymentLauncher. Une page Web s’affiche dans laquelle le client peut finaliser la configuration avec PayPal. Une fois l’opération terminée, le PaymentResultCallback
fourni est appelé avec le résultat du paiement.
Surveiller les webhooksCôté serveur
Pour confirmer la bonne autorisation d’un contrat de facturation par votre client, il est préférable d’utiliser une méthode telle que les webhooks plutôt que d’attendre que votre client se rende sur la page d’état du paiement. Lorsqu’un client autorise le contrat de facturation, le SetupIntent émet un événement webhook setup_intent.succeeded. Si un client n’autorise pas correctement le contrat de facturation, le SetupIntent émet l’événement webhook setup_intent.setup_failed et revient à l’état requires_
. Si un client révoque le contrat de facturation depuis son compte PayPal, cela génère un événement mandate.updated.
Débiter des paiements hors session avec un moyen de paiement PayPal enregistréCôté serveur
Au moment de débiter votre client hors session, utilisez les ID des objets Customer et PaymentMethod pour créer un PaymentIntent.
Pour trouver un instrument paypal
à débiter, affichez la liste des objets PaymentMethod associés à votre client.
Après avoir obtenu les ID de Customer et de PaymentMethod, créez un PaymentIntent indiquant le montant et la devise du paiement. Définissez quelques autres paramètres afin d’effectuer le paiement hors session :
- Assignez la valeur
true
à off_session afin d’indiquer que le client n’est pas dans votre tunnel de paiement lors de cette tentative de paiement. Si une authentification est requise, le PaymentIntent générera une erreur. - Assignez la valeur
true
à la propriété confirm du PaymentIntent, ce qui aura pour effet de générer immédiatement une confirmation lors de la création du PaymentIntent. - Renseignez l’ID du PaymentMethod dans payment_method et l’ID du client dans customer.
Annulation d'un moyen de paiement initiée par l'utilisateurCôté serveur
Les clients peuvent annuler leur abonnement (contrat de facturation) via leur compte PayPal. Dans ce cas, Stripe émet un webhook mandate.updated. Tous les Payment Intents ultérieurs utilisant ce moyen de paiement échoueront tant qu’il n’existera pas de moyen de paiement associé à un mandat actif. Si un paiement échoue, l’état de l’objet Subscription passe à l’état configuré dans vos paramètres d’encaissement automatique. Informez votre client de l’échec du paiement et débitez-le à l’aide d’un autre moyen de paiement.