Accéder directement au contenu
Créez un compte
ou
connecter-vous
Logo de la documentation Stripe
/
Demander à l'assistant IA
Créez un compte
Connectez-vous
Démarrer
Paiements
Revenus
Plateformes et places de marché
Gestion de fonds
Ressources pour les développeurs
Aperçu
À propos des paiements Stripe
Mettre votre intégration à niveau
Analyses des paiements
Paiements en ligne
PrésentationTrouver votre cas d'usageUtiliser Managed Payments
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
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
Interfaces de paiement
Payment Links
Checkout
Elements pour le web
Paiements dans l'application
Scénarios de paiement
Gérer plusieurs devises
Tunnels de paiement personnalisés
Acquisition flexible
Orchestration
Paiements par TPE
Terminal
Au-delà des paiements
Constituez votre entreprise
Cryptomonnaies
Commerce agentique
Financial Connections
Climate
Comprendre la fraude
Radar pour la protection contre la fraude
Gestion des litiges
Vérifier l'identité
AccueilPaiementsAdd payment methodsWalletsPayPal

Accepter un paiement PayPal

Comment accepter les paiements PayPal, un portefeuille électronique populaire auprès des entreprises européennes.

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 un PaymentIntent
Côté serveur

Stripe utilise un objet de paiement, appelé PaymentIntent, pour suivre et gérer tous les états du paiement jusqu’à sa finalisation. Créez un PaymentIntent sur votre serveur, en spécifiant le montant à collecter et la devise. Si vous avez déjà créé une intégration à l’aide de l’API Payment Intents, ajoutez paypal à la liste des types de moyens de paiement de votre PaymentIntent.

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

Le PaymentIntent renvoyé contient la clé secrète du client, qui est utilisée pour finaliser le paiement de manière sécurisée au lieu de transmettre la totalité de l’objet PaymentIntent. Renvoyez la clé secrète au client pour pouvoir l’utiliser ultérieurement.

Inclure une description personnalisée

Par défaut, les détails de la commande sur la page d’activité d’achat des utilisateurs PayPal affichent le montant de la commande. Vous pouvez modifier cette configuration en saisissant une description personnalisée dans la propriété description.

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 description="A sample description" \ -d "payment_method_types[]"=paypal

Personnaliser la langue préférée

Par défaut, la page d’autorisation PayPal est localisée en fonction de variables telles que le pays du marchand. Vous pouvez définir la langue préférée de votre client à l’aide de la propriété preferred_locale. La valeur doit être un code de langue à deux caractères en minuscules, suivi d’un trait d’union (-), suivi d’un code de pays à deux caractères en majuscules. Par exemple, la valeur pour un utilisateur de langue française en Belgique serait fr-BE.

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 "payment_method_options[paypal][preferred_locale]"=fr-BE

Vous pouvez définir la page d’autorisation PayPal en fonction des paramètres locaux préférés de votre client grâce à la propriété preferred_locale. Consultez le tableau suivant pour connaître les paramètres locaux pris en charge :

ValeurRégionPays
cs-CZTchèqueRépublique tchèque
da-DKDanoisDanemark
de-ATAllemandAutriche
de-DEAllemandAllemagne
de-LUAllemandLuxembourg
el-GRGrecGrèce
en-GBAnglaisRoyaume-Uni
fr-FRAnglaisÉtats-Unis d’Amérique
es-ESEspagnolEspagne
fi-FIFinnoisFinlande
fr-BEFrançaisBelgique
fr-FRFrançaisFrance
fr-LUFrançaisLuxembourg
hu-HUHongroisHongrie
it-ITItalienItalie
nl-BENéerlandaisBelgique
nl-NLNéerlandaisPays-Bas
pl-PLPolonaisPologne
pt-PTPortugaisPortugal
sk-SKSlovaqueSlovaquie
sv-SESuédoisSuède

Libellés de relevé bancaire avec PayPal

Le libellé qui apparaît sur le relevé bancaire de l’acheteur est défini par PayPal et est par défaut PAYPAL *YOUR_BUSINESS_NAME. Si vous définissez le champ statement_descriptor lors de la création du PaymentIntent, sa valeur est ajoutée à celle définie par PayPal, dans la limite de 22 caractères.

Par exemple, si le nom de votre entreprise dans PayPal est BUSINESS et que vous configurez statement_descriptor sur order_id_1234, la mention PAYPAL *BUSINESS order apparaîtra sur le relevé de compte bancaire de vos clients.

Soumettre le paiement à Stripe
Côté client

Lorsqu’un client clique pour payer avec PayPal, utilisez Stripe.js pour soumettre le paiement à Stripe. Stripe.js est la bibliothèque JavaScript de base pour créer les tunnels de paiement : elle gère automatiquement les opérations complexes telles que la redirection décrite ci-dessous, et facilite l’extension de votre intégration à d’autres moyens de paiement. Incluez le script Stripe.js sur votre page de paiement en l’ajoutant à la section head 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.

client.js
// 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 créer un paiement côté client, transmettez la clé secrète du client de l’objet PaymentIntent créé à l’étape 2. La clé secrète du client est distincte des clés API authentifiant vos requêtes à l’API Stripe. Elle doit être utilisée avec prudence, car elle peut servir à réaliser le paiement. Ne l’enregistrez pas, ne l’intégrez pas dans des URL et ne la dévoilez à personne d’autre que votre client.

Confirmer le paiement PayPal

Appelez stripe.confirmPayPalPayment pour rediriger votre client vers PayPal pour finaliser le paiement. Ajoutez une URL return_url pour indiquer la page vers laquelle Stripe doit rediriger votre client une fois le paiement effectué. Vous pouvez également ajouter le paramètre return_url pour les nouveaux moyens de paiement PayPal, mais ce n’est pas obligatoire lorsque vous utilisez un moyen de paiement PayPal préalablement configuré avec un SetupIntent ou un PaymentIntent qui inclut setup_future_usage.

client.js
// Redirects away from the client const {error} = await stripe.confirmPayPalPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}', { return_url: 'https://example.com/checkout/complete', } ); if (error) { // Inform the customer that there was an error. }

Si vous versez vos fonds PayPal à l’aide de PayPal, le montant de l’opération sur solde associée au paiement sera égal à zéro quel que soit le montant du paiement, car l’opération représente l’argent transféré vers et depuis votre solde Stripe. En revanche, pour PayPal, les fonds sont versés sur votre solde PayPal et aucun montant n’est versé sur votre solde Stripe. Dans ce cas, l’opération sur solde inclut également les frais qui lui sont associés. En savoir plus sur la préférence de versement.

Effectuer la redirection

Les paramètres de requête d’URL suivants sont fournis lorsque Stripe redirige le client vers l’URL return_url.

ParamètreDescription
payment_intentL’identifiant unique du PaymentIntent.
payment_intent_client_secretLa clé secrète du client de l’objet PaymentIntent.

Vous pouvez également ajouter vos propres paramètres de requête lorsque vous fournissez l’url de retour return_url. Ceux-ci resteront activés pendant toute la durée du processus de redirection. Le paramètre return_url doit correspondre à une page de votre site Web sur laquelle l’état du paiement est fourni. Vous devez vérifier l’état du PaymentIntent lors de l’affichage de la page de retour. Vous pouvez le faire en utilisant la fonction retrievePaymentIntent de Stripe.js et en transmettant payment_intent_client_secret.

(async () => { const url = new URL(window.location); const clientSecret = url.searchParams.get('payment_intent_client_secret'); const {paymentIntent, error} = await stripe.retrievePaymentIntent(clientSecret); if (error) { // Handle error } else if (paymentIntent && paymentIntent.status === 'succeeded') { // Handle successful payment } })();

Vous trouverez le nom, l’adresse e-mail, l’ID du payeur et l’ID de la transaction du payeur dans la propriété payment_method_details.

ChampValeur
payer_emailL’adresse e-mail du payeur sur son compte PayPal.
payer_nameLe nom du payeur sur son compte PayPal.
payer_idL’identifiant unique du compte PayPal du payeur.
transaction_idUn ID de transaction unique généré par PayPal.
{ "charges": { "data": [ { "payment_method_details": { "paypal": { "payer_id": "H54KFE9XXVVYJ", "payer_email": "jenny@example.com", "payer_name": "Jenny Rosen", "transaction_id": "89W40396MK104212M" }, "type": "paypal" }, "id": "src_16xhynE8WzK49JbAs9M21jaR", "object": "source", "amount": 1099, "client_secret": "src_client_secret_UfwvW2WHpZ0s3QEn9g5x7waU", "created": 1445277809, "currency": "eur", "flow": "redirect",

FacultatifGérer les événements post-paiement

Stripe envoie un événement payment_intent.succeeded à l’issue du paiement. Utilisez le Dashboard, un webhook personnalisé ou une solution partenaire pour recevoir ces événements et exécuter des actions, comme envoyer une confirmation de commande par e-mail à votre client, enregistrer la vente dans une base de données ou lancer un workflow de livraison.

Plutôt que d’attendre un rappel de votre client, écoutez ces événements. En effet, côté client, l’acheteur pourrait fermer la fenêtre de son navigateur ou quitter l’application avant l’exécution du rappel. Des personnes malveillantes peuvent en profiter pour manipuler la réponse. Si vous configurez votre intégration de manière à écouter les événements asynchrones, cela vous permettra également d’accepter de nouveaux moyens de paiement plus facilement à l’avenir. Apprenez-en davantage sur les différences entre les différents moyens de paiement pris en charge.

Recevoir des événements et exécuter des actions métier

Plusieurs options s’offrent à vous pour recevoir et exécuter des actions métier.

Manuellement

Utilisez le Dashboard pour consulter tous vos paiements Stripe, envoyer des reçus par e-mail, gérer les virements et relancer les paiements ayant échoué.

  • Afficher vos paiements tests dans le Dashboard

Code personnalisé

Créez un gestionnaire de webhooks pour écouter des événements et créer des tunnels de paiement asynchrones personnalisés. Testez et déboguez votre intégration de webhooks en local, grâce à la CLI Stripe.

  • Créer un webhook personnalisé

Applications préconfigurées

Intégrez une application partenaire pour gérer les événements métier courants, comme l’automatisation, le marketing ou les ventes.

FacultatifGérer la redirection PayPal manuellement

Stripe.js vous aide à ajouter d’autres moyens de paiement à votre intégration. Cependant, vous pouvez rediriger vos clients manuellement vers votre serveur.

  1. Créez et confirmez un PaymentIntent de type paypal. En spécifiant payment_method_data, vous créez un PaymentMethod qui est utilisé immédiatement avec ce PaymentIntent.

Vous devez également fournir dans le champ return_url l’URL vers laquelle le client est redirigé une fois qu’il a finalisé son paiement. Vous pouvez fournir vos propres paramètres de requête dans cette URL. Ces paramètres seront inclus dans l’URL finale à l’issue du flux de redirection.

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 "payment_method_data[type]"=paypal \ --data-urlencode return_url="https://example.com/checkout/complete" \ -d confirm=true
  1. Vérifiez que le PaymentIntent a l’état requires_action et que le type de next_action est redirect_to_url.
Response
{ "status": "requires_action", "next_action": { "type": "redirect_to_url", "redirect_to_url": { "url": "https://hooks.stripe.com/...", "return_url": "https://example.com/checkout/complete" } }, "id": "pi_1G1sgdKi6xqXeNtkldRRE6HT", "object": "payment_intent", ... }
  1. Redirigez le client vers l’URL fournie dans la propriété next_action.redirect_to_url.url. Cet exemple de code fourni ici n’a qu’une valeur illustrative : la méthode de redirection peut différer sur votre framework Web.
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
if payment_intent.status == 'requires_action' && payment_intent.next_action.type == 'redirect_to_url' url = payment_intent.next_action.redirect_to_url.url redirect(url) end

Le client est redirigé vers l’URL return_url une fois qu’il a effectué le paiement. Les paramètres de la requête d’URL payment_intent et payment_intent_client_secret sont inclus avec tous vos propres paramètres. Stripe recommande de configurer un endpoint de webhook pour configurer l’état d’un paiement par voie programmatique.

FacultatifAutoriser un paiement et le saisir ultérieurement

PayPal prend en charge l’autorisation et la capture distinctes. Si vous avez opté pour la réception des fonds sur votre compte Stripe, vos autorisations sont valables pendant 10 jours. Stripe réautorise automatiquement le paiement pour prolonger la période d’autorisation de 10 jours supplémentaires, ce qui correspond à un total de 20 jours. Si la réautorisation ne fonctionne pas, Stripe fait expirer le paiement au bout de 10 jours. Écoutez le webhook charge.expired pour connaître la date de fin de la période d’autorisation.

Si vous avez choisi de recevoir les fonds sur PayPal, vos autorisations restent valides durant 3 jours. Stripe tente de prolonger la période d’autorisation de 3 jours supplémentaires. Pour bénéficier d’une période d’autorisation garantie étendue pouvant aller jusqu’à 10 jours, appelée honor period dans PayPal, contactez le service de support de PayPal.

Indiquez à Stripe d’autoriser seulement

Pour indiquer que vous souhaitez une autorisation et une capture séparées, définissez capture_method sur manual lors de la création du PaymentIntent. Ce paramètre indique à Stripe de n’autoriser que le montant figurant sur le compte PayPal du client.

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 capture_method=manual \ -d "payment_method_types[]"=paypal \ -d "payment_method_data[type]"=paypal \ -d confirm=true \ --data-urlencode return_url="http://example.com"

Une fois l’autorisation accordée, Stripe envoie un événement payment_intent.amount_capturable_updated. Pour en savoir plus, consultez notre guide des événements.

Capturer les fonds

Une fois l’autorisation réussie, l’état du PaymentIntent passe à requires_capture. Pour capturer les fonds autorisés, faites une requête de capture PaymentIntent. Le montant total autorisé est capturé par défaut ; vous ne pouvez pas capturer un montant supérieur à cette valeur, mais vous pouvez capturer un montant inférieur.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents/{{PAYMENT_INTENT_ID}}/capture \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount_to_capture=750

Facultatif Annuler l’autorisation

Si vous devez annuler une autorisation, vous pouvez annuler le PaymentIntent correspondant.

FacultatifActiver les moyens de paiement asynchrones sur PayPal

Par défaut, Stripe autorise uniquement les moyens de paiement synchrones sur PayPal. Vous recevez ainsi une notification immédiate vous informant de la réussite ou de l’échec de chaque paiement. Si vous autorisez les moyens de paiement asynchrones, vous pouvez recevoir des notifications différées pour certains paiements. Vous devrez alors utiliser des endpoints de webhook pour recevoir des notifications concernant la réussite ou l’échec de certains paiements.

Pour activer les paiements asynchrones sur PayPal, contactez le service Support de Stripe.

FacultatifCodes d'erreur

Il s’agit des codes d’erreur les plus courants lors d’une intégration avec PayPal. Si une requête à l’API PayPal a renvoyé l’erreur, elle inclut un code d’émission PayPal et l’ID de débogage associé à la requête. Vous pouvez utiliser cet ID de débogage lorsque vous contactez le service de support de PayPal pour obtenir de l’aide sur votre problème.

Code d’erreurDétails
country_code_invalidLe code de pays indiqué dans l’adresse de livraison n’est pas valide.
incorrect_addressL’adresse de livraison indiquée n’est pas valide. Cette erreur peut aussi être déclenchée si le pays spécifié nécessite également une ville ou un code postal. Pour plus d’informations, veuillez vérifier le message d’erreur et contacter le service de support PayPal en lui fournissant le Debug ID et le code PayPal issue.
payment_method_not_availableLe moyen de paiement paypal n’est pas disponible pour l’instant. Cette erreur peut être due à une expiration du délai d’attente ou à un problème de serveur lors de la connexion à l’API PayPal.
payment_method_provider_declineLa transaction est refusée par PayPal. Cela est généralement dû aux paramètres de protection contre la fraude du marchand, à une violation de la conformité, ou à l’impossibilité pour le payeur de payer avec l’instrument de financement choisi. Pour plus d’informations, examinez le message d’erreur et contactez le service de support de PayPal en lui fournissant le Debug ID et le code PayPal issue.
payment_method_provider_timeoutLa requête a expiré pour Paypal. Dans la plupart des cas, il s’agit d’une erreur temporaire et vous pouvez relancer la requête après quelques instants.
payment_method_unactivatedLe moyen de paiement paypal n’est pas activé pour votre compte Stripe.
payment_method_unexpected_stateLa requête a échoué pour PayPal. Cela peut se produire si le compte d’entreprise du client a été verrouillé, limité, ou fermé par PayPal, ou si le compte Paypal du payeur est limité. Pour plus d’informations, examinez le message d’erreur et contactez le service de support de PayPal en lui fournissant le Debug ID et le code PayPal issue.

FacultatifTester l'intégration PayPal

Pour simuler un paiement réussi sur votre intégration PayPal, utilisez vos clés API de test et accédez à la page de redirection. Cette page vous donne la possibilité d’Autoriser ou de Faire échouer l’authentification de l’utilisateur selon plusieurs scénarios test. Lorsque vous sélectionnez Autoriser le paiement test, le PaymentIntent passe de l’état requires_action à 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 Faire échouer le paiement test. Votre PaymentIntent bascule alors de l’état requires_action à requires_payment_method.

Pour simuler les scénarios d’intégration et d’échec les plus communs pour les paiements PayPal, transmettez des valeurs email correspondant aux modèles de la section Scénarios test lorsque vous créez le PaymentIntent dans les informations de facturation. Par exemple, lors de la confirmation du PaymentIntent côté serveur, voilà à quoi ressemble une requête qui simule une transaction refusée par PayPal :

Command Line
cURL
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 "payment_method_data[type]"=paypal \ --data-urlencode "payment_method_data[billing_details][email]"="transaction_refused@example.com"

Scénarios de test

E-mail typeScénarioExplication
.*payee_account_restricted@.*Compte marchand soumis à des restrictionsSi votre compte marchand est limité par PayPal, la capture ou l’autorisation du paiement échoue avec l’erreur payment_method_unexpected_state. Pour faire échouer l’autorisation, veuillez indiquer une adresse e-mail correspondant à ce modèle au moment de l’autorisation.
.*transaction_refused@.*Transaction refuséeSi la transaction est refusée par PayPal, la capture du paiement échoue avec l’erreur payment_method_provider_decline.
.*instrument_declined@.*Instrument de paiement refuséSi l’instrument présenté est refusé par le prestataire de services de paiement ou la banque, ou bien qu’il ne peut pas être utilisé pour ce paiement, la capture du paiement échoue avec l’erreur payment_method_provider_decline.
.*authorization_expired@.*Capturer manuellement un paiement autoriséSi l’autorisation a déjà expiré, la capture du paiement autorisé échoue avec l’erreur capture_charge_authorization_expired.
Cette page vous a-t-elle été utile ?
OuiNon
  • Besoin d'aide ? Contactez le service Support.
  • Rejoignez notre programme d'accès anticipé.
  • Consultez notre log des modifications.
  • Des questions ? Contactez l'équipe commerciale.
  • LLM ? Lire llms.txt.
  • Propulsé par Markdoc