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 à votre processus de paiement en ligne. Pour les paiements en personne avec Stripe Terminal, consultez la page Autres modes de paiement.
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 StripeCô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 :
Créer un PaymentIntentCô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
.
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.
Collecter et envoyer les informations du moyen de paiementCô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.
<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 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_
et country
. De la même manière, les champs line1
, city
, state
, postal_
et country
des informations de facturation doivent être renseignés avec des données valides.
Confirmer le PaymentIntent
Utilisez stripe.
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.
// 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_
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_
, vous pouvez également ajouter vos propres paramètres de requête à utiliser sur la page de retour.
Paramètre | Description |
---|---|
payment_ | L’identifiant unique du PaymentIntent . |
payment_ | La 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_ |
Lorsque le client est redirigé vers votre site, vous pouvez utiliser le payment_
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_
à 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_
à requires_
.
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'
.
É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_
.
À l’exception d’un paiement refusé, pour un PaymentIntent d’Affirm dont l’état est requires_
, 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_
.
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’erreur | Action recommandée |
---|---|
payment_ | Un é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_ | Affirm a refusé le paiement du client. Ensuite, le client doit contacter Affirm pour obtenir plus d’informations. |
payment_ | Le client n’a jamais effectué le paiement sur la page de paiement d’Affirm et la session de paiement a expiré. Stripe fait automatiquement expirer les Payment Intents qui n’ont pas été autorisés 12 heures après la création du paiement initial. |
payment_ | Affirm 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_ | Saisissez un montant compris dans les limites de transactions par défaut d’Affirm. |
amount_ | Saisissez 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ésultat | Ce que cela signifie |
---|---|
generic_ | Motif 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_ | Soit 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. |