Configurer des paiements PayPal futurs
Découvrez comment enregistrer des informations PayPal pour débiter vos clients ultérieurement.
Set up future PayPal payments to save customer payment details for subscriptions, delayed charges, and streamlined future purchases. Learn how to enable and use recurring payments with PayPal through Stripe.
Enable recurring payments 
Stripe automatically enables recurring payments for most users when they activate PayPal payments in the Stripe Dashboard. However, due to PayPal’s policies and regional restrictions, some users might need to enable recurring payments manually. This includes users that set up their accounts before we introduced automatic enablement. To manually enable recurring payments:
Go to your Payment methods settings.
Click PayPal > Enable in the Recurring payments section.
After you enable recurring payments, it appears as pending in the Dashboard. It usually takes up to five business days to get access.
When you’re granted access, recurring payments are available in your PayPal settings. In testing environments, recurring payments are enabled by default.
Utilisez Stripe Checkout pour recueillir à l’avance des informations de paiement PayPal et déterminez ultérieurement la date et le montant du paiement. Utilisez cette méthode 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é serveur
Pour commencer, vous devez créer un compte Stripe. Inscrivez-vous maintenant.
Utilisez nos bibliothèques officielles pour accéder à l’API Stripe depuis votre application :
Créer ou récupérer un objet Customer avant la configurationCôté serveur
Pour que la réutilisation d’un moyen de paiement PayPal soit possible pour de futurs paiements, celui-ci doit être associé à un objet Customer.
Vous devez créer un objet Customer lorsque votre client crée un compte auprès de 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 stockées concernant son moyen de paiement. Si votre client n’a pas créé de compte, il vous est toujours possible de lui créer un objet Customer sans attendre, que vous associerez ultérieurement à votre représentation interne de ce compte client.
Créer une session CheckoutCôté clientCôté serveur
Pour que vous puissiez accepter les paiements PayPal, votre client doit préalablement vous autoriser à utiliser son compte PayPal pour ses paiements futurs via Stripe Checkout.
Ajoutez sur votre site Web un bouton de paiement qui appelle un endpoint côté serveur afin de créer une session Checkout.
<html> <head> <title>Checkout</title> </head> <body> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>
Créez une session Checkout en mode setup
pour recueillir les informations requises. Après avoir créé la session Checkout, redirigez votre client vers l’URL renvoyée dans la réponse.
Quand votre client fournit les informations de son moyen de paiement, il est redirigé vers l’URL success_
, une page de votre site Web qui l’informe que son moyen de paiement a bien été enregistré. Mettez l’ID de session à disposition sur votre page de confirmation de paiement en incluant la variable de modèle {CHECKOUT_
dans l’URL success_
, comme illustré ci-dessus.
Si lors d’une session Checkout, votre client clique sur votre logo sans fournir les données de son moyen de paiement, Checkout le redirige vers votre site Web sur la page cancel_
. Cette page est généralement celle que le client a consultée sur votre site avant d’être redirigé vers Stripe Checkout.
Mise en garde
Ne vous fiez pas uniquement à la redirection vers le success_
pour détecter l’initiation du paiement, sachant que :
- Des utilisateurs malveillants pourraient accéder directement au
success_
sans payer et obtenir l’accès à vos biens ou à vos services.url - Il peut arriver que le client n’aboutisse pas au
success_
à l’issue de son paiement. Il peut par exemple lui arriver de fermer l’onglet de son navigateur avant que la redirection n’intervienne.url
Récupérer le moyen de paiementCôté serveur
Une fois que le client a soumis ses informations de paiement, récupérez l’objet PaymentMethod. Un PaymentMethod stocke les informations PayPal account du client pour ses paiements ultérieurs. Vous pouvez récupérer cet objet de manière synchrone en utilisant la success_
ou de manière asynchrone au moyen de webhooks.
La décision de récupérer l’objet PaymentMethod de manière synchrone ou asynchrone dépend de votre tolérance aux abandons de paiement. En effet, il peut arriver que le client n’aboutisse pas au success_
à l’issue de son paiement (il peut par exemple lui arriver de fermer l’onglet de son navigateur avant que la redirection n’intervienne). L’utilisation de webhooks vous permet d’éviter que votre intégration ne subisse ce type d’abandon.
Gérer les événements post-configurationCô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.
Tester l'intégration
Testez votre intégration PayPal avec vos clés API de test en accédant à la page de redirection. Vous pouvez tester l’aboutissement du paiement en l’authentifiant sur la page de redirection. Le PaymentIntent passera alors de l’état requires_
à succeeded
.
Pour tester un échec d’authentification de l’utilisateur, utilisez vos clés API de test et accédez à la page de redirection. Sur cette page, cliquez sur Échec du paiement test. Votre PaymentIntent bascule alors de l’état requires_
à requires_
.
Utiliser le moyen de paiement pour les paiements ultérieursCô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.