Accéder directement au contenu
Créez un compte ou connectez-vous
Le logo de la documentation Stripe
/
Demander à l’IA
Créer un compteConnectez-vous
Commencer
Paiements
Revenus
Plateformes et places de marché
Gestion des fonds
Ressources de développement
API et trousse SDKAide
Aperçu
À propos des paiements Stripe
Mettre votre intégration à niveau
Analyses des paiements
Paiements en ligne
AperçuTrouver 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
Paiements en personne
Terminal
Moyens de paiement
Ajout de moyens de paiement
    Aperçu
    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
    Payer avec le solde Stripe
    Paiements en cryptomonnaie stable
    Prélèvements bancaires
    Redirection vers l'institution financière
    Virements bancaires
    Virements (Sources)
    Achetez maintenant, payez plus tard
      Affirm
        Accepter un paiement
        Messages du site
      Afterpay/Clearpay
      Alma
      Billie
      Capchase Pay
      Klarna
      Kriya
      Mondu
      Paiement sur facture
      Scalapay
      SeQura
      Sunbit
      Zip
    Paiements en temps réel
    Coupons
    Portefeuilles numériques
    Activer des moyens de paiement locaux par pays
    Moyens de paiement personnalisés
Gérer les moyens de paiement
Payer plus rapidement avec Link
Scénarios de paiement
Gérez plusieurs devises
Flux de paiement personnalisés
Acquisition flexible
Orchestration
Au-delà des paiements
Constituer son entreprise
Cryptomonnaie
Commerce agentique
Financial Connections
Climate
Comprendre la fraude
Radar pour la protection contre la fraude
Gérer les litiges
Vérifier l'identité
États-Unis
Français (Canada)
AccueilPaiementsAdd payment methodsBuy now, pay laterAffirm

Accepter un paiement Affirm

Comment accepter les paiements Affirm, un moyen de paiement qui permet aux clients d'acheter tout de suite et de payer plus tard.

Remarques

Ce guide vous aide à intégrer Affirm dans votre flux de paiement en ligne. Pour les paiements en personne avec Stripe Terminal, visitez Additional payment methods.

Les utilisateurs de Stripe peuvent utiliser l’API Payment Intents, un chemin d’intégration unique pour la création de paiements à l’aide de tout moyen pris en charge, pour accepter les paiements avec Affirm des clients dans les pays suivants :

  • Canada
  • États-Unis

Voici les différentes étapes nécessaires pour accepter des paiements Affirm sur votre site Web :

  • Création d’un objet de suivi du paiement
  • Collecte des informations du moyen de paiement
  • Envoi du paiement à Stripe à des fins de traitement
  • Gestion de la redirection Affirm et des événements de webhook pertinents

Configurer Stripe
Côté serveur

Tout d’abord, créez un compte Stripe ou connectez-vous à votre compte.

Utilisez nos bibliothèques officielles pour accéder à l’API de 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

Un PaymentIntent est un objet qui représente votre intention d’encaisser le paiement d’un client et qui suit le cycle de vie du processus de paiement étape par étape.

Créez tout d’abord un PaymentIntent sur votre serveur, puis indiquez le montant à encaisser et la devise. Si votre intégration inclut déjà l’API Payment Intents, ajoutez Affirm à la liste des types de moyens de paiement pour 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=6000 \ -d currency=usd \ -d "payment_method_types[]"=affirm

Vous pouvez également utilise le Payment Element et gérer les moyens de paiement à partir du Dashboard. Stripe gère le retour des moyens de paiement admissibles en fonction de facteurs tels que le montant de la transaction, la devise et le flux de paiement. Pour en savoir plus, consultez la rubrique Accepter un paiement.

Récupérer la clé secrète du client

L’objet PaymentIntent comprend une clé secrète du client utilisée côté client pour effectuer le processus de paiement en toute sécurité. Vous pouvez utiliser différentes approches pour transmettre cette clé au côté client.

Récupérez la clé secrète du client à partir d’un point de terminaison sur votre serveur, en utilisant la fonction fetch du navigateur. Cette approche est préférable si votre côté client est une application d’une page, en particulier si celle-ci a été créée avec un cadre d’application frontal récent comme React. Créez le point de terminaison du serveur pour récupérer la clé secrète du client :

main.rb
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
get '/secret' do intent = # ... Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end

Ensuite, récupérez la clé secrète du client avec JavaScript côté client:

(async () => { const response = await fetch('/secret'); const {client_secret: clientSecret} = await response.json(); // Render the form using the clientSecret })();

Collecter et envoyer les informations du moyen de paiement
Côté client

Lorsqu’un client clique pour payer avec Affirm, nous vous recommandons d’utiliser Stripe.js pour soumettre le paiement à Stripe. Stripe.js est notre bibliothèque JavaScript de base pour créer les flux de paiement : elle gère automatiquement les opérations complexes d’intégration et vous permettra de facilement étendre votre intégration à d’autres moyens de paiement par la suite.

Intégrez le script Stripe.js à votre page de paiement en l’ajoutant entre les balises 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.

script.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 var stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
);

Plutôt que de transmettre la totalité de l’objet PaymentIntent au client, utilisez sa clé secrète provenant de l’étape précédente. Il ne s’agit pas de vos clés API qui authentifient les requêtes de l’API de Stripe.

Utilisez la clé secrète du client avec prudence, car elle peut servir à finaliser 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.

Améliorer les taux de paiements réussis en renseignant des informations supplémentaires

Bien que les informations de livraison et de facturation ne soient pas obligatoires, nous vous conseillons de les transmettre afin d’améliorer vos taux de conversion.

Dans ce guide d’intégration, il vous est conseillé de transmettre les informations de livraison et de facturation côté client après que l’utilisateur a sélectionné son moyen de paiement.

Si vous transmettez ces champs, l’adresse de livraison doit comporter des données valides dans les champs line1, city, state, postal_code et country. De la même manière, les champs line1, city, state, postal_code et country des informations de facturation doivent être renseignés avec des données valides.

Confirmer le PaymentIntent

Utilisez stripe.confirmAffirmPayment pour gérer la redirection à partir de votre page et permettre l’exécution du paiement. Vous devez aussi transmettre une return_url à cette fonction pour indiquer à Stripe vers quelle page rediriger l’utilisateur une fois le paiement effectué sur le site Web ou l’application mobile Affirm.

Sur la page de paiement d’Affirm, le client choisit les options de paiement disponibles. Pour plus d’informations, consultez la vue d’ensemble. Vous ne pouvez pas limiter les options de paiement ni en présélectionner sur la page de paiement d’Affirm ; ce choix d’options laissé au client maximise vos chances de conclure des transactions.

script.js
// Redirects away from the client stripe.confirmAffirmPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}', { payment_method: { // Billing information is optional but recommended to pass in. billing_details: { email: 'jenny@rosen.com', name: 'Jenny Rosen', address: { line1: '1234 Main Street', city: 'San Francisco', state: 'CA', country: 'US', postal_code: '94111', }, }, }, // Shipping information is optional but recommended to pass in. shipping: { name: 'Jenny Rosen', address: { line1: '1234 Main Street', city: 'San Francisco', state: 'CA', country: 'US', postal_code: '94111', }, }, // Return URL where the customer should be redirected after the authorization. return_url: 'https://example.com/checkout/complete', } ).then(function(result) { if (result.error) { // Inform the customer that there was an error. console.log(result.error.message); } });

Lorsque votre client envoie un paiement, Stripe le redirige vers return_url et inclut les paramètres de requête d’URL suivants. La page de retour peut les utiliser pour obtenir l’état du PaymentIntent afin qu’il puisse afficher l’état du paiement au client.

Lorsque vous précisez l’objet return_url, vous pouvez également ajouter vos propres paramètres de requête à utiliser sur la page de retour.

ParamètreDescription
payment_intentL’identifiant unique du PaymentIntent.
payment_intent_client_secretLa clé secrète du client de l’objet PaymentIntent. Pour les intégrations d’abonnements, cette client_secret est également exposée sur l’objet Invoice via confirmation_secret

Lorsque le client est redirigé vers votre site, vous pouvez utiliser le payment_intent_client_secret pour demander le PaymentIntent et afficher l’état de la transaction à votre client.

Tester une intégration Affirm

Testez votre intégration Affirm en affichant la page de redirection à l’aide de vos clés API de test. Vous pouvez tester la réussite de paiement en l’authentifiant sur la page de redirection. Le PaymentIntent passe alors 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 le X dans le coin supérieur gauche. Votre PaymentIntent passera alors de l’état requires_action à requires_payment_method.

Lors de la redirection vers le bac à sable Affirm, Affirm peut demander les quatre derniers chiffres de votre numéro de sécurité sociale. Affirm suggère d’utiliser '0000' ou '5678'.

FacultatifSéparer l'autorisation et la capture

Affirm prend en charge l’autorisation et la capture distinctes. S’il y a un délai entre le paiement et la livraison des marchandises à votre client, autorisez le paiement d’abord et capturez-le plus tard. Au moment de la capture, Affirm initie les dates d’échéance des remboursements ultérieurs du client. Vous devez capturer un paiement Affirm autorisé dans les 30 jours suivant l’autorisation. Dans le cas contraire, l’autorisation est automatiquement annulée et vous ne pouvez plus capturer ce paiement. Stripe annulera également le PaymentIntent et enverra un événement payment_intent.canceled si cela se produit.

Remarques

Pour des montants de commande très importants, Affirm peut exiger un versement de la part du client lors de l’autorisation. Si vous annulez le paiement ou si l’autorisation expire, Affirm remboursera le versement en question.

Si vous ne pouvez pas capturer le paiement, nous vous recommandons d’annuler le PaymentIntent plutôt que d’attendre la fin du délai de 30 jours. L’annulation proactive du PaymentIntent déclenche le remboursement immédiat du premier versement échelonné à votre client, ce qui permet d’éviter toute confusion éventuelle concernant les paiements sur son relevé.

  • Indiquer à Stripe d’autoriser seulement
  • 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’uniquement autoriser le montant sur le compte Affirm du client.

    Command Line
    curl https://api.stripe.com/v1/payment_intents \ -u
    sk_test_BQokikJOvBiI2HlWgH4olfQ2
    :
    \ -d "amount"=6000 \ -d "confirm"="true" \ -d "currency"="usd" \ -d "payment_method_types[]"="affirm" \ -d "capture_method"="manual" \ // Shipping address is optional but recommended to pass in. -d "shipping[name]"="Jenny Rosen" \ -d "shipping[address][line1]"="1234 Main Street" \ -d "shipping[address][city]"="San Francisco" \ -d "shipping[address][state]"="CA" \ -d "shipping[address][country]"="US" \ -d "shipping[address][postal_code]"=94111 \ -d "payment_method_data[type]"="affirm" \ -d "return_url"="https://www.example.com/checkout/done"

  • Capturer les fonds
  • Une fois l’autorisation réussie, l’état du PaymentIntent passe à requires_capture. Pour capturer les fonds autorisés, faites une demande de capture du PaymentIntent. Le montant total autorisé est capturé par défaut. Vous ne pouvez pas capturer plus ou moins que le total.

    Command Line
    https://api.stripe.com/v1/payment_intents/{{PAYMENT_INTENT_ID}}/capture \ -u
    sk_test_BQokikJOvBiI2HlWgH4olfQ2
    :
    \

    Facultatif Annuler l’autorisation

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

    FacultatifGérer la redirection Affirm manuellement

    Nous vous recommandons d’utiliser Stripe.js pour gérer les redirections et les paiements Affirm côté client avec confirmAffirmPayment. Le recours à Stripe.js vous permettra de facilement ajouter 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 :

    1. Créez et confirmez un PaymentIntent de type affirm. En précisant le paramètre payment_method_data, nous créons un PaymentMethod et l’utilisons immédiatement avec ce PaymentIntent.

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

      Command Line
      curl https://api.stripe.com/v1/payment_intents \ -u
      sk_test_BQokikJOvBiI2HlWgH4olfQ2
      :
      \ -d "amount"=6000 \ -d "confirm"="true" \ -d "currency"="usd" \ -d "payment_method_types[]"="affirm" \ // Shipping address is optional but recommended to pass in. -d "shipping[name]"="Jenny Rosen" \ -d "shipping[address][line1]"="1234 Main Street" \ -d "shipping[address][city]"="San Francisco" \ -d "shipping[address][state]"="CA" \ -d "shipping[address][country]"="US" \ -d "shipping[address][postal_code]"=94111 \ // Billing details are optional but recommended to pass in. -d "payment_method_data[billing_details][name]"="Jenny Rosen" \ -d "payment_method_data[billing_details][email]"="jenny@example.com" \ -d "payment_method_data[billing_details][address][line1]"="1234 Main Street" \ -d "payment_method_data[billing_details][address][city]"="San Francisco" \ -d "payment_method_data[billing_details][address][state]"="CA" \ -d "payment_method_data[billing_details][address][country]"="US" \ -d "payment_method_data[billing_details][address][postal_code]"=94111 \ -d "payment_method_data[type]"="affirm" \ -d "return_url"="https://example.com/checkout/complete"

      Le PaymentIntent créé se trouve à l’état requires_action et le type de next_action est redirect_to_url.

      { "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_xxx", "object": "payment_intent", "amount": 6000, "client_secret": "pi_xxx_secret_xxx", "confirm": "true", "confirmation_method": "automatic", "created": 1579259303, "currency": "usd", "livemode": true, "charges": { "data": [], "object": "list", "has_more": false, "url": "/v1/charges?payment_intent=pi_xxx" }, "payment_method_types": [ "affirm" ] }
    2. Redirigez le client vers l’URL fournie dans la propriété next_action.redirect_to_url.url. L’exemple de code présenté n’est qu’à titre illustratif : la méthode de redirection peut différer dans votre cadre Web.

      Lorsque le client a terminé le processus de paiement, il est redirigé vers l’URL return_url configurée à l’étape 1. Les paramètres de requête d’URL payment_intent et payment_intent_client_secret sont inclus. Si l’URL return_url incluait déjà des paramètres de requête, ils seront également conservés.

      Nous vous recommandons d’utiliser des webhooks afin de confirmer l’état du paiement.

    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 courriel à votre client, enregistrer la vente dans une base de données ou lancer un flux de livraison.

    Écoutez ces événements plutôt que d’attendre un rappel de votre client. Du côté client, il est possible que l’utilisateur ferme la fenêtre de son navigateur ou quitte l’application avant l’exécution du rappel, et des clients malveillants pourraient manipuler la réponse. Si vous configurez votre intégration de manière à ce qu’elle écoute les événements asynchrones, cela vous permettra également d’accepter davantage de modes de paiement à l’avenir. Découvrez les différences entre tous les modes de paiement pris en charge.

    • Gérer les événements manuellement dans le Dashboard

      Utilisez le Dashboard pour Visualisez les testes de paiement dans le Dashboard, envoyez des reçus par courriel, gérez les virements ou relancez les paiements qui ont échoué.

    • Construire un point de terminaison Web personnalisé

      Créez un gestionnaire de points de terminaison Web pour écouter des événements et créer des flux de paiement asynchrones personnalisés. Testez et déboguez votre intégration de points de terminaison Web en local, grâce à l’interface de ligne de commande Stripe.

    • Intégrer une application pré-construite

      Traitez les événements interentreprises courants, tels que l’automatisation ou le marketing et les ventes, en intégrant une application partenaire.

    FacultatifAfficher des informations relatives aux moyens de paiement sur votre site Web

    Le Payment Method Messaging Element est un composant d’interface utilisateur intégrable qui permet à vos clients de savoir quelles options de paiement fractionné leur seront proposées, directement à partir de vos pages de produit, de panier ou de paiement.

    Pour ajouter le composant Payment Method Messaging Element à votre site Web, veuillez consulter la page consacrée à l’affichage des modes de paiement.

    Prince of Persia book
    The Making of Prince of Persia: Journals 1985-1993
    Jordan Mechner
    99,00 $ US

    Échecs de paiement

    Affirm prend en compte de nombreux facteurs pour accepter ou refuser une transaction (par exemple, la durée d’utilisation d’Affirm par le client, le montant restant que le client doit rembourser et la valeur de la commande actuelle).

    Présentez toujours des options de paiement supplémentaires telles que card dans votre flux de paiement, car les paiements Affirm ont un taux de refus supérieur aux autres moyens de paiement. Dans ces cas, le PaymentMethod est détaché et l’état de l’objet PaymentIntent passe automatiquement à requires_payment_method.

    À l’exception d’un paiement refusé, pour un PaymentIntent d’Affirm dont l’état est requires_action, il est attendu des clients qu’ils effectuent le paiement dans un délai de 12 heures une fois qu’ils ont été redirigés vers le site d’Affirm. Si aucune action n’est effectuée après un délai de 12 heures, le PaymentMethod est détaché et l’état de l’objet PaymentIntent passe automatiquement à requires_payment_method.

    Dans ce cas, informez votre client pour réessayer avec une option de paiement différente présentée dans votre tunnel de paiement.

    Codes d’erreur

    Voici les codes d’erreur courants et les actions recommandées correspondantes :

    Code d’erreurAction recommandée
    payment_intent_payment_attempt_failedUn échec générique qui indique l’échec du paiement Affirm. Des informations supplémentaires peuvent être disponibles dans le motif du résultat du paiement.
    payment_method_provider_declineAffirm a refusé le paiement du client. Ensuite, le client doit contacter Affirm pour obtenir plus d’informations.
    payment_intent_payment_attempt_expiredLe client n’a jamais effectué le paiement sur la page de paiement d’Affirm, et la session de paiement a expiré. Stripe fait expirer automatiquement les PaymentIntents qui ne sont pas autorisés avec succès 12 heures après la création initiale du paiement.
    payment_method_not_availableAffirm a rencontré une erreur liée au service et n’est pas en mesure de répondre à la requête. Réessayez plus tard.
    amount_too_smallSaisissez un montant compris dans les limites de transactions par défaut d’Affirm.
    amount_too_largeSaisissez un montant compris dans les limites de transactions par défaut d’Affirm.

    Pour certaines erreurs, des informations supplémentaires peuvent être incluses dans le motif du résultat de paiement :

    Motif du résultatCe que cela signifie
    generic_declineMotif du résultat par défaut d’une erreur de paiement. Cela indique généralement que le partenaire a refusé le paiement (par exemple, en raison de fonds insuffisants), que l’institution financière émettrice de la carte a refusé le paiement, que la transaction comportait un achat à haut risque ou pour un motif similaire. Dans ce cas, Stripe ne reçoit pas toujours un motif de refus.
    affirm_checkout_canceledSoit le client a explicitement annulé le paiement Affirm, soit Affirm a rejeté son admissibilité au prêt. Stripe ne peut pas faire la différence entre ces deux types d’événements.
    Cette page vous a-t-elle été utile?
    OuiNon
    • Besoin d'aide? Contactez le service d'assistance.
    • Consultez notre journal des modifications.
    • Des questions? Contactez l'équipe commerciale.
    • GML? Lire llms.txt.
    • Optimisé par Markdoc