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 :
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.
Soumettre le paiement à StripeCôté client
Récupérez la clé secrète du client auprès du SetupIntent que vous avez créé, puis appelez le STPPaymentHandler confirmSetupIntent. Une vue Web s’affiche pour permettre au client de finaliser le paiement dans PayPal. Une fois l’opération terminée, le bloc de finalisation 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.