Créer une page de paiement personnalisée incluant Link
Intégrer Link à l'aide du Payment Element ou du Link Authentication Element.
Ce guide vous explique comment accepter des paiements avec Link en combinant l’API Payment Intents avec le composant Payment Element ou Link Authentication Element.
Il existe trois manières d’obtenir l’adresse e-mail d’un client pour l’authentification ou l’inscription Link :
- Transmettre une adresse e-mail : vous pouvez transmettre une adresse e-mail au composant Payment Element à l’aide de defaultValues. Cette méthode est recommandée si vous recueillez déjà l’adresse e-mail ou le numéro de téléphone du client dans le tunnel de paiement.
- Collecter une adresse e-mail : vous pouvez collecter une adresse e-mail directement dans le composant Payment Element. Cette méthode est recommandée si vous ne recueillez d’adresse e-mail à aucune étape du tunnel de paiement.
- Link Authentication Element : vous pouvez utiliser le composant Link Authentication Element pour créer un champ de saisie d’adresse e-mail unique pour la collecte de l’adresse e-mail et pour l’authentification Link. Cette méthode est recommandée si vous utilisez le composant Address Element.

Collecter l’adresse e-mail du client pour l’authentification ou l’inscription Link
Configurer StripeCôté serveur
Tout d’abord, créez un compte Stripe ou connectez-vous.
Utilisez nos bibliothèques officielles pour accéder à l’API Stripe depuis votre application :
Créer un PaymentIntentCôté serveur
Pour représenter votre intention d’encaisser le paiement d’un client, Stripe utilise un objet PaymentIntent qui suit vos tentatives de débit et les changements d’état du paiement tout au long du processus.
Si vous collectez des informations de carte en vue d’une utilisation ultérieure avec Setup Intents, listez les moyens de paiement manuellement au lieu d’utiliser des moyens de paiement dynamiques. Pour utiliser Link sans moyens de paiement dynamiques, mettez à jour votre intégration pour transmettre link
à payment_
.
Lorsque vous créez un PaymentIntent, proposez dynamiquement à vos clients les moyens de paiement les plus pertinents, y compris Link, en utilisant des moyens de paiement dynamiques. Pour utiliser des moyens de paiement dynamiques, n’incluez pas le paramètre payment_
. Vous pouvez également activer l’option automatic_
.
Remarque
Lorsque votre intégration ne définit pas le paramètre payment_
, certains moyens de paiement sont activés automatiquement, notamment les cartes et les portefeuilles.
Pour ajouter Link à votre intégration Elements en utilisant des moyens de paiement dynamiques :
- Dans votre Dashboard, dans les paramètres des moyens de paiement, activez Link.
- Si vous disposez d’une intégration existante qui répertorie manuellement les moyens de paiement, supprimez le paramètre payment_method_types de votre intégration.
Récupérer la clé secrète du client
Le PaymentIntent contient une clé secrète à utiliser côté client pour finaliser le processus de paiement en toute sécurité. Vous pouvez adopter différentes approches pour transmettre cette clé secrète côté client.
Collecter les e-mails des clients
Link authentifie un client à l’aide de son adresse e-mail. En fonction de votre tunnel de paiement, vous disposez des options suivantes : transmettre une adresse e-mail au composant Payment Element, la collecter directement dans le composant Payment Element ou utiliser le composant Link Authentication Element. Stripe vous recommande, si possible, de transmettre l’adresse e-mail du client au composant Payment Element.
Configurer votre formulaire de paiementCôté client
Vous pouvez désormais personnaliser votre formulaire de paiement grâce aux composants d’interface utilisateur préconfigurés d’Elements. Pour que votre intégration fonctionne, l’adresse de votre page de paiement doit commencer par https://
et non par http://
. Vous pouvez tester votre intégration sans utiliser le protocole HTTPS. Activez HTTPS lorsque vous êtes prêt à accepter des paiements en mode production.
FacultatifPréremplir les données client supplémentairesCôté client
Le cas échéant, le remplissage automatique des informations client simplifie le processus de paiement et réduit la saisie manuelle des données.
FacultatifPersonnaliser l'apparenceCôté client
Après avoir ajouté ces Elements à votre page, vous pouvez personnaliser leur apparence pour qu’ils s’intègrent harmonieusement au reste du design :

Personnalisez l’apparence de vos Elements
Envoyer le paiement à StripeCôté client
Utilisez stripe.confirmPayment pour mener à bien le paiement à l’aide des informations collectées auprès de votre client grâce aux différents formulaires Elements. Fournissez une return_url à cette fonction pour indiquer à Stripe vers quelle page rediriger l’utilisateur une fois le paiement effectué.
Votre utilisateur peut être d’abord redirigé vers un site intermédiaire, comme la page d’autorisation de sa banque, avant d’être redirigé vers votre page return_
.
Par défaut, les paiements bancaires et les paiements par carte redirigent immédiatement le client vers la return_
une fois le paiement abouti. Si vous ne voulez pas le rediriger vers la return_
, vous pouvez modifier le comportement par défaut en utilisant if_required.
La return_
correspond à une page de votre site Web qui indique l’état du paiement du PaymentIntent
au moment d’afficher la page de redirection. Lorsque Stripe redirige le client vers cette return_
, vous pouvez utiliser les paramètres de requête d’URL suivants afin de vérifier l’état du paiement. Vous pouvez également ajouter vos propres paramètres de requête lorsque vous fournissez votre return_
. Ils seront conservés tout au long du processus de redirection.
Paramètre | Description |
---|---|
payment_ | Identifiant unique du PaymentIntent |
payment_ | La clé secrète du client de l’objet PaymentIntent . |
FacultatifAutorisation et capture distinctesCôté serveur
Link prend en charge l’autorisation et la capture distinctes. Vous devez capturer un paiement Link autorisé dans les sept jours suivant l’autorisation. Dans le cas contraire, l’autorisation est annulée automatiquement et vous ne pouvez pas capturer ce paiement.
Indiquer à Stripe d’autoriser uniquement
Pour indiquer que vous voulez séparer l’autorisation de la capture, définissez la valeur de l’option capture_method sur manual
lorsque vous créez le PaymentIntent. Ce paramètre indique à Stripe d’autoriser uniquement le montant sur le moyen de paiement du client.
Capturer les fonds
Une fois l’autorisation réussie, l’état du PaymentIntent passe à requires_
. 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.
Facultatif Annuler l’autorisation
Si vous devez annuler une autorisation, vous pouvez annuler le PaymentIntent correspondant.
Gérer les événements post-paiementCôté serveur
Stripe envoie un événement payment_intent.succeeded à l’issue du paiement. Utilisez un webhook pour recevoir ces événements et exécuter des actions en conséquence, telles que l’envoi d’une confirmation de commande par e-mail à votre client, l’enregistrement de la vente dans une base de données ou encore le lancement d’un flux de livraison.
Configurez votre intégration de manière à écouter ces événements plutôt que d’attendre un rappel de votre client. Lorsque vous attendez, il arrive en effet que l’utilisateur ferme la fenêtre de son navigateur ou quitte l’application avant même l’exécution du rappel. En configurant votre intégration de manière à ce qu’elle écoute les événements asynchrones, vous pourrez accepter plusieurs types de moyens de paiement avec une seule intégration.
En plus de l’événement payment_
, vous pouvez également gérer deux autres événements lorsque vous encaissez des paiements à l’aide du composant Element Payment :
Événement | Description | Action |
---|---|---|
payment_intent.succeeded | Envoyé depuis Stripe lorsqu’un client a effectué un paiement avec succès. | Envoyez au client une confirmation de commande et traitez sa commande. |
payment_intent.payment_failed | Envoyé depuis Stripe lorsqu’un client a fait une tentative de paiement qui s’est soldée par un échec. | Si un paiement passe de l’état processing à payment_ , proposez au client de retenter le paiement. |
Tester l'intégration
Mise en garde
Ne stockez pas de données utilisateur réelles dans des comptes Link du bac à sable. Traitez-les comme des données publiques, car ces comptes de test sont associés à votre clé publiable.
À l’heure actuelle, Link fonctionne uniquement pour les cartes de crédit, les cartes de débit et les achats admissibles effectués via un compte bancaire américain. Link nécessite un enregistrement de domaine.
Vous pouvez créer des comptes dans un environnement de test pour Link à l’aide d’une adresse e-mail valide. Le tableau suivant répertorie les codes à usage unique acceptés par Stripe pour l’authentification des comptes en mode test :
Valeur | Résultat |
---|---|
Tout autre ensemble de 6 chiffres non listé ci-dessous | Opération réussie |
000001 | Erreur, code non valide |
000002 | Erreur, code expiré |
000003 | Erreur, nombre maximal de tentatives dépassé |
Pour tester des moyens de paiement spécifiques, consultez les exemples de tests du composant Payment Element.
Sources de financement multiples
Dans la mesure où Stripe prend en charge des sources de financement supplémentaires, vous n’avez pas besoin de mettre à jour votre intégration. Stripe les prend en charge automatiquement avec les mêmes délais de virement de fonds et les mêmes garanties que pour les paiements par carte ou par compte bancaire.
Authentification de carte bancaire et 3D Secure
Link prend en charge l’authentification 3D Secure 2 (3DS2) pour les paiements par carte bancaire. 3DS2 impose aux clients une étape de vérification supplémentaire auprès de l’émetteur de la carte au moment du paiement. Les paiements ayant été authentifiés avec 3D Secure sont couverts par un transfert de responsabilité.
Pour déclencher les flux de demande d’authentification 3DS2 avec Link dans un environnement de test, utilisez la carte de test suivante avec n’importe quel CVC, code postal et date d’expiration future : .
Dans un environnement de test, une page d’authentification factice s’affiche pour le processus d’authentification. Sur cette page, vous pouvez autoriser ou annuler le paiement. L’autorisation du paiement simule une authentification réussie et vous redirige vers l’URL de retour spécifiée. Un clic sur le bouton Échec simule une tentative d’authentification infructueuse.
Pour obtenir plus d’informations, veuillez consulter la page dédiée à l’authentification 3D Secure.
Remarque
Lorsque vous testez les flux 3DS, seules les cartes de test pour 3DS2 déclencheront une authentification sur Link.
FacultatifAfficher les données enregistrées par le clientCôté serveurCôté client
En plus d’afficher les adresses et moyens de paiement dont vous disposez au sujet d’un client, vous pouvez afficher ses données enregistrées par Link.
Si un client a enregistré plusieurs moyens de paiement, Stripe affiche les trois dernières cartes enregistrées pour l’objet Customer ainsi que tous les moyens de paiement que le client a enregistrés avec Link.

Pour ce faire, créez une clé éphémère et envoyez-la à votre front-end avec l’ID du client. L’objet customer
contient des données sensibles qu’il n’est pas possible de récupérer directement dans Stripe.js. Une clé éphémère permet d’accorder un accès temporaire aux données de l’objet customer
.
Récupérez le customerOptions
côté client avec le clientSecret
.
(async () => { const response = await fetch('/secret'); const {clientSecret, customerOptions} = await response.json(); })
Transmettez ensuite les valeurs customerOptions.
et customerOptions.
de l’option customerOptions
dans le groupe Elements. Vous devez également transmettre l’indicateur bêta elements_
lors du chargement de l’instance Stripe.
FacultatifEnregistrer des moyens de paiement LinkCôté serveurCôté client
Vous pouvez enregistrer des moyens de paiement Link pour des paiements hors session ou des abonnements ultérieurs, mais pas pour des paiements effectués pendant une session. Pour cela, vous devez associer le moyen de paiement à un client. Lorsque votre client crée un compte auprès de votre entreprise, créez-lui un objet customer
, puis spécifiez ce customer
lors de la création du PaymentIntent.
Lorsqu’un nouveau client effectue sa première transaction auprès de votre entreprise, créez un objet customer
dans Stripe afin d’y stocker ses données pour une utilisation ultérieure.
Dans la dernière version de l’API, la spécification du paramètre automatic_
est facultative, car Stripe active ces fonctionnalités par défaut.
Au moment de débiter à nouveau votre client, utilisez l’objet customer
et l’ID du PaymentMethod généré pour créer un nouveau PaymentIntent. Définissez le paramètre off_session sur true
. Si votre client doit s’authentifier alors qu’il n’utilise pas activement votre site ou votre application, le PaymentIntent enverra une erreur.
Divulguer Stripe à vos clients
Stripe recueille des informations sur les interactions des clients avec Elements afin de vous fournir des services, de prévenir la fraude et d’améliorer ses services. Cela inclut l’utilisation de cookies et d’adresses IP pour identifier les Elements qu’un client a vus au cours d’une même session Checkout. Vous êtes responsable de la divulgation et de l’obtention de tous les droits et consentements nécessaires pour que Stripe puisse utiliser les données à cette fin. Pour en savoir plus, visitez notre Centre de confidentialité.