Configurer des paiements PayPal futurs
Découvrez comment enregistrer des informations PayPal pour débiter vos clients ultérieurement.
Activer la prise en charge des paiements récurrents à partir du Dashboard Stripe
Vous pouvez demander l’accès aux paiements récurrents directement à partir du Dashboard Stripe. Pour cela, accédez aux paramètres des moyens de paiement, repérez le moyen de paiement PayPal, puis cliquez sur Activer à côté de la section Paiements récurrents. La fonctionnalité passe alors à l’état En attente. L’accès aux paiements PayPal récurrents est généralement accordé sous 5 jours ouvrables. Une fois l’accès accordé, vous verrez les paiements récurrents sur la page de vos paramètres PayPal. En mode test, les paiements récurrents sont activés par défaut.
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.