Accéder directement au contenu
Créez un compte ou connecter-vous
Logo de la documentation Stripe
/
Demander à l'assistant IA
Créez un compteConnectez-vous
Démarrer
Paiements
Revenus
Plateformes et marketplaces
Gestion de fonds
Ressources pour les développeurs
API et SDKAide
AperçuAccepter un paiementMettre votre intégration à niveau
Paiements en ligne
PrésentationTrouver votre cas d'usage
Utiliser Payment Links
Utiliser une page de paiement préconfiguré
Créer une intégration personnalisée avec Elements
Développer une intégration dans l'application
Utiliser Managed PaymentsPaiements récurrents
Paiements par TPE
Terminal
Moyens de paiement
Ajouter des moyens de paiement
    Présentation
    Options d'intégration des moyens de paiement
    Gérer les moyens de paiement par défaut dans le Dashboard
    Types de moyens de paiement
    Cartes bancaires
    Payer avec le solde Stripe
    Paiements en stablecoins
    Prélèvements bancaires
    Virements avec redirection bancaire
    Virements bancaires
    Virements (Sources)
    Achetez maintenant, payez plus tard
    Paiements en temps réel
    Coupons
    Portefeuilles
      Alipay
      Amazon Pay
      Apple Pay
      Cash App Pay
      Google Pay
      GrabPay
      Link
      MB WAY
      MobilePay
      PayPal
        Bouton PayPal
        Activer les paiements PayPal
        Accepter un paiement
        Configurer des paiements futurs
        Choisir une préférence de règlement
        Paiements contestés
        Rapprochement des virements
        Importer des moyens de paiement PayPal enregistrés
      PayPay
      Revolut Pay
      Satispay
      Secure Remote Commerce
      Vipps
      WeChat Pay
    Activer des moyens de paiement locaux par pays
    Moyens de paiement personnalisés
Gérer les moyens de paiement
Paiement accéléré avec Link
Payment operations
Analyses
Soldes et délai de règlement
Compliance and security
Devises
Refus de paiement
Litiges
Fraud prevention
Radar pour la protection contre la fraude
Virements
ReçusRefunds and cancellations
Advanced integrations
Tunnels de paiement personnalisés
Acquisition flexible
Multiprocessor orchestration
Au-delà des paiements
Constituez votre entreprise
Cryptomonnaies
Commerce agentique
Financial Connections
Climate
Vérifier l'identité
États-Unis
Français (France)
AccueilPaiementsAdd payment methodsWalletsPayPal

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 :

  1. Accédez à vos paramètres des moyens de paiement.

  2. 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 Stripe
Cô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 :

Command Line
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# Available as a gem sudo gem install stripe
Gemfile
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

Créer ou récupérer un objet Customer avant la configuration
Cô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.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -X POST https://api.stripe.com/v1/customers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"

Créer un SetupIntent
Cô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.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/setup_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d customer=
"{{CUSTOMER_ID}}"
\ -d "payment_method_types[]"=paypal \ -d "payment_method_data[type]"=paypal

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 client
Cô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.

checkout.html
<head> <title>Checkout</title> <script src="https://js.stripe.com/clover/stripe.js"></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_url à 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.

client.js
// 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’ID du payeur du moyen de paiement et l’ID du contrat de facturation sur le mandat ainsi généré, sous la propriété payment_method_details. Vous trouverez également l’adresse e-mail et l’ID de payeur de l’acheteur dans la propriété paypal de PaymentMethod.

ChampValeur
payer_emailL’adresse e-mail du payeur sur son compte PayPal.
payer_idL’identifiant unique du compte PayPal du payeur.
billing_agreement_idL’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 webhooks
Cô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_payment_method. 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.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -G https://api.stripe.com/v1/payment_methods \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d customer={{CUSTOMER_ID}} \ -d type=paypal

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.
Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=eur \ -d customer={{CUSTOMER_ID}} \ -d "payment_method_types[]"=paypal \ -d payment_method={{PAYMENT_METHOD_ID}} \ -d off_session=true \ -d confirm=true

Débiter des paiements pendant une session avec un moyen de paiement PayPal enregistré
Côté client

Au moment de débiter votre client pendant une session, utilisez les ID des objets Customer et PaymentMethod pour créer un PaymentIntent.

Pour trouver un instrument paypal à débiter, listez les PaymentMethods associés à votre objet Customer.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -G https://api.stripe.com/v1/payment_methods \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d customer={{CUSTOMER_ID}} \ -d type=paypal

Après avoir obtenu les ID du Customer et du PaymentMethod, créez un PaymentIntent en spécifiant le montant et la devise du paiement :

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=eur \ -d customer={{CUSTOMER_ID}} \ -d "payment_method_types[]"=paypal \ -d payment_method={{PAYMENT_METHOD_ID}}

À l’aide du SDK Stripe.js, appelez la fonction confirmPayPalPayment pour exécuter le PaymentIntent créé :

client.js
// Confirms the on-session payment const {error} = await stripe.confirmPayPalPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}', {payment_method: '{{PAYMENT_METHOD_ID}}'} // Note: return_url is not required here because the PayPal payment method was // previously set up using either a SetupIntent or a PaymentIntent with setup_future_usage ); if (error) { // Inform the customer that there was an error. }

Remarque : le paramètre return_url est requis sous condition pour confirmPayPalPayment :

  • Ce n’est pas obligatoire lors de l’utilisation d’un moyen de paiement PayPal précédemment configuré avec un SetupIntent ou un PaymentIntent qui inclut setup_future_usage.
  • C’est obligatoire dans tous les autres cas, y compris lors de la création d’un nouveau moyen de paiement PayPal en session.

Annulation d'un moyen de paiement initiée par l'utilisateur
Côté serveur

Les clients peuvent annuler leur abonnement (contrat de facturation) via leur compte PayPal. Dans ce cas, Stripe émet un webhook mandat.updated. Tous les PaymentIntents ultérieurs utilisant ce moyen de paiement enregistré échoueront tant qu’il n’existera pas de moyen de paiement associé à un mandat actif. Si un paiement échoue, l’état de l’objet abonnement 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.

FacultatifConfigurer des paiements PayPal futurs et les capturer
Côté serveur

Lorsque vous créez un PaymentIntent, vous pouvez également débiter votre client tout en configurant le moyen de paiement PayPal en vue d’une utilisation ultérieure.

Définissez setup_future_usage sur off_session pour indiquer que vous souhaitez configurer le moyen de paiement en vue d’une utilisation ultérieure.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=eur \ -d "payment_method_types[]"=paypal \ -d setup_future_usage=off_session

FacultatifGérer la redirection PayPal manuellement
Côté serveur

Nous vous recommandons de recourir à Stripe.js pour gérer les redirections et autorisations de facturation PayPal côté client avec confirmPayPalSetup. Le recours à Stripe.js vous permet d’ajouter facilement de nouveaux moyens de paiement à votre intégration par la suite. Toutefois, vous pouvez aussi rediriger manuellement vos clients sur votre serveur en procédant comme suit :

Vous pouvez confirmer l’objet SetupIntent à sa création en configurant confirm: true et en fournissant des données sur le mandat dans le paramètre mandate_data. Vous devez fournir une URL return_url à la confirmation du SetupIntent afin d’indiquer à Stripe vers quelle page rediriger l’utilisateur une fois le paiement effectué sur le site Web ou l’application mobile de PayPal.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/setup_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d customer=
"{{CUSTOMER_ID}}"
\ -d "payment_method_types[]"=paypal \ -d "payment_method_data[type]"=paypal \ -d usage=off_session \ -d "mandate_data[customer_acceptance][type]"=online \ -d "mandate_data[customer_acceptance][online][ip_address]"={{IP_ADDRESS}} \ -d "mandate_data[customer_acceptance][online][user_agent]"={{USER_AGENT}} \ -d confirm=true \ --data-urlencode return_url="https://example.com/setup/complete"

Vérifiez que l’état du SetuptIntent est bien requires_action et que le type de next_action est redirect_to_url.

{ "id": "seti_1IQ9hjJJahOk1vSNevPWnhEN", "object": "setup_intent", "status": "requires_action", "next_action": { "type": "redirect_to_url", "redirect_to_url": { "url": "https://hooks.stripe.com/...", "return_url": "https://example.com/setup/complete" } }, "application": null,

Redirigez le client vers l’URL fournie dans la propriété next_action.redirect_to_url.url. L’exemple de code fourni ici n’a qu’une valeur illustrative : la méthode de redirection peut différer sur votre framework web.

server.rb
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
if setup_intent.status == 'requires_action' && setup_intent.next_action.type == 'redirect_to_url' url = setup_intent.next_action.redirect_to_url.url redirect(url) end

À l’issue du processus d’autorisation, le client est redirigé vers return_url configurée à l’étape 1. Les paramètres de requête setup_intent et setup_intent_client_secret de l’URL sont inclus et vous pouvez transmettre vos propres paramètres de requête, comme indiqué plus haut.

FacultatifGérer manuellement l'intégration des bibliothèques de risques pour les paiements en session
Côté serveur

Nous vous recommandons d’utiliser Stripe.js pour gérer les paiements en session avec un moyen de paiement PayPal enregistré, car il est doté d’une intégration Fraudnet. Cependant, vous pouvez aussi confirmer les PaymentIntents de PayPal manuellement sur votre serveur en suivant ces étapes :

Intégrez les bibliothèques de risques de PayPal (Fraudnet pour le Web et Magnes pour mobile) pour autoriser PayPal à collecter les données relatives aux risques lorsque l’acheteur est connecté sur la session de paiement. Cela réduit les risques de fraude et peut augmenter le taux de conversion des paiements pendant une session. Vous avez besoin de l’ID des métadonnées du client (également appelé ID de corrélation des risques) utilisé pour initialiser la bibliothèque lors de l’appel à l’API à Stripe.

Une fois la bibliothèque chargée, vous pouvez créer un PaymentIntent avec l’ID des métadonnées du client, le montant et la devise du paiement :

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=eur \ -d customer={{CUSTOMER_ID}} \ -d "payment_method_types[]"=paypal \ -d "payment_method_options[paypal][risk_correlation_id]"={{RISK_CORRELATION_ID}} \ -d confirm=true \ -d payment_method={{PAYMENT_METHOD_ID}}

Vous recevrez un code de message paypal_risk_correlation_id_missing en cas d’échec de transmission du paramètre risk_correlation_id au moment où vous confirmez un paiement pendant une session.

FacultatifSupprimer un compte PayPal enregistré
Côté serveur

Vous pouvez utiliser l’API Detach pour supprimer le compte PayPal enregistré d’un client de ses moyens de paiement. Quand vous dissociez un moyen de paiement PayPal, cela révoque le mandat correspondant et génère un appel à l’API PayPal afin d’annuler le contrat de facturation PayPal associé.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -X POST https://api.stripe.com/v1/payment_methods/{{PAYMENT_METHOD_ID}}/detach \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
Cette page vous a-t-elle été utile ?
OuiNon
  • Besoin d'aide ? Contactez le service Support.
  • Consultez notre log des modifications.
  • Des questions ? Contactez l'équipe commerciale.
  • LLM ? Lire llms.txt.
  • Propulsé par Markdoc