Configurer un abonnement avec PayPal
Comment créer un abonnement et débiter votre client avec PayPal.
Mise en garde
Pour commencer à accepter les abonnements PayPal sur Stripe, vous devez activer les paiements récurrents PayPal dans le Dashboard.
Suivez ce guide pour configurer un abonnement avec PayPal comme moyen de paiement.
Créer un produit et un tarifDashboard
Les produits correspondent aux articles ou services que vous vendez. Les tarifs définissent le montant et la fréquence des paiements facturés pour un produit. Le tarif prend en compte la valeur du produit, la devise que vous acceptez et s’il s’agit d’un paiement ponctuel ou récurrent. Si vous n’avez que quelques produits et tarifs, créez-les et gérez-les dans le Dashboard.
Ce guide prend comme exemple un service de banque d’images qui débite ses clients d’un montant de 15 EUR pour un abonnement mensuel. Pour modéliser ceci :
- Rendez-vous à la page Ajouter un produit.
- Saisissez un Nom pour le produit.
- Saisissez 15 pour le tarif.
- Sélectionnez la devise EUR.
- Cliquez sur Enregistrer le produit.
Après avoir créé le produit et le tarif, enregistrez l’ID de tarif de manière à pouvoir l’utiliser dans les étapes ultérieures. La page des tarifs affiche l’ID dont le format est similaire à ce qui suit : price_
.
Créer ou récupérer un objet Customer avant la configurationCôté serveur
Pour réutiliser un moyen de paiement PayPal en vue de paiements ultérieurs, associez-le à un objet Customer.
Créez 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 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.
Rediriger votre clientCôté client
Lorsqu’un client tente de configurer son compte PayPal pour les prochains paiements, nous vous conseillons d’utiliser Stripe.js pour confirmer le SetupIntent. Stripe.js est notre bibliothèque JavaScript de base pour le développement de tunnels de paiement. Elle gère automatiquement les opérations complexes telles que la redirection décrite ci-dessous, et vous permet d’ajouter facilement d’autres moyens de paiement à votre intégration par la suite.
Intégrez le script Stripe.js à votre page de paiement en l’ajoutant en haut de votre fichier HTML.
<head> <title>Checkout</title> <script src="https://js.stripe.com/v3/"></script> </head>
Créez une instance de Stripe.js avec le code JavaScript suivant sur votre page de paiement.
// Set your publishable key. Remember to change this to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe(
, {} );'pk_test_TYooMQauvdEDq54NiTphI7jx'
Pour confirmer la configuration côté client, transmettez la clé secrète du client de l’objet SetupIntent créé à l’étape 3.
La clé secrète du client est distincte de vos clés API, qui authentifient les requêtes à l’API Stripe. Cette clé doit être utilisée avec prudence, car elle peut servir à finaliser le paiement. Elle ne doit être ni enregistrée, ni intégrée dans des URL, ni dévoilée à d’autres personne que votre client.
Confirmer la configuration PayPal
Afin de vous autoriser à utiliser son compte PayPal pour ses prochains paiements, votre client sera redirigé vers la page du contrat de facturation PayPal, où il devra donner son approbation avant d’être redirigé vers votre site Web. Utilisez stripe.confirmPayPalSetup pour gérer la redirection vers PayPal et finaliser la configuration. Ajoutez une URL return_
à cette fonction pour indiquer à Stripe vers quelle page rediriger l’utilisateur une fois que ce dernier approuve le contrat de facturation sur le site Web de PayPal.
// Redirects away from the client const {error} = await stripe.confirmPayPalSetup( '{{SETUP_INTENT_CLIENT_SECRET}}', { return_url: 'https://example.com/setup/complete', mandate_data: { customer_acceptance: { type: 'online', online: { infer_from_client: true } } }, } ); if (error) { // Inform the customer that there was an error. }
Vous trouverez l’adresse e-mail, l’ID de payeur et l’ID de contrat de facturation du propriétaire de l’objet Payment Method sur le mandat ainsi généré, sous la propriété payment_method_details. Vous trouverez également l’adresse e-mail et l’ID du payeur dans la propriété paypal de l’objet PaymentMethod.
Champ | Valeur |
---|---|
verified_ | L’adresse e-mail du payeur sur son compte PayPal. |
payer_ | L’identifiant unique du compte PayPal du payeur. |
billing_ | L’ID de contrat de facturation PayPal (BAID). Il s’agit d’un identifiant généré par PayPal et qui représente le mandat entre l’entreprise et le client. |
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.
Créer l'abonnementCôté serveur
Créez un abonnement avec le tarif et le client :
Dans le cadre d’un abonnement, le client est débité automatiquement dans la mesure où son moyen de paiement par défaut est défini. Lorsqu’un paiement aboutit, son état dans le Dashboard Stripe bascule sur Actif. Le tarif que vous avez créé précédemment détermine les facturations à venir.
Gérer l'état de l'abonnementCôté client
Si le paiement initial aboutit, l’abonnement prend l’état active
et aucune action supplémentaire n’est nécessaire. Si le paiement échoue, l’état passe à l’état de l’abonnement que vous avez configuré dans vos paramètres d’encaissement automatique. Avisez votre client que le paiement a échoué et débitez-le avec un autre moyen de paiement.
Mettre un abonnement à jourCôté serveur
Lorsque vous mettez à jour un abonnement, vous devez préciser off_
. Dans le cas contraire, tout nouveau paiement nécessite de rediriger l’utilisateur vers PayPal pour confirmation. Par exemple, si vous souhaitez modifier la quantité d’un article inclus dans l’abonnement, vous pouvez utiliser :
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_
.