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 places de marché
Gestion de fonds
Ressources pour les développeurs
API et SDKAide
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
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
      Affirm
      Afterpay/Clearpay
      Alma
      Billie
      Capchase Pay
      Klarna
        Accepter un paiement
        Configurer des paiements futurs
        Optimiser la conversion
        Se conformer aux règles de Klarna
        Répondre aux litiges
      Kriya
      Mondu
      Paiement sur facture
      Scalapay
      SeQura
      Sunbit
      Zip
    Paiements en temps réel
    Coupons
    Portefeuilles
    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
Scénarios de paiement
Gérer plusieurs devises
Tunnels de paiement personnalisés
Acquisition flexible
Orchestration
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é
États-Unis
Français (France)
AccueilPaiementsAdd payment methodsBuy now, pay laterKlarna

Accepter les paiements Klarna

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

Pour créer une intégration avancée qui gère des tunnels de paiement complexes et accepte les paiements Klarna, vous pouvez utiliser des Stripe Elements, tels que le Payment Element et l’Express Checkout Element. Le Payment Element accepte plus de 40 moyens de paiement, valide les saisies et gère les erreurs. L’Express Checkout Element fournit des boutons de paiement en un clic pour Klarna et d’autres moyens de paiement.

Suivez le guide de démarrage rapide pour apprendre à intégrer un formulaire de paiement Stripe personnalisé dans votre site Web.

Ce guide explique les étapes recommandées pour gérer les paiements Klarna dans une intégration qui utilise Elements et l’API Payment Intents.

Remarque

Avant de commencer l’intégration, assurez-vous que votre compte est éligible à Klarna en consultant vos paramètres de moyens de paiement.

Lister manuellement les moyens de paiement

Nous vous recommandons d’utiliser les moyens de paiement dynamiques, où Stripe gère la logique d’affichage dynamique des moyens de paiement éligibles les plus pertinents pour chaque client afin de maximiser la conversion. Si vous choisissez de lister manuellement les moyens de paiement, spécifiez klarna dans la liste payment_method_types lorsque vous créez un PaymentIntent.

Créer un PaymentIntent

Pour maximiser les taux d’acceptation et réduire les litiges, transmettez les paramètres suivants lors de la création d’un PaymentIntent for les paiements Klarna :

  • expédition : assurez-vous que ces champs sont définis et non vides : name, address.line1, city, country et postal_code.
  • amount_details.line_items
  • payment_method_data.billing_details : assurez-vous que ces champs sont définis et non vides : name, address.line1, city, country et postal_code.
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 "payment_method_types[0]"=klarna \ -d amount=1099 \ -d currency=eur \ -d "amount_details[line_items][0][product_name]"="Your product name" \ -d "amount_details[line_items][0][unit_cost]"=1099 \ -d "amount_details[line_items][0][quantity]"=1 \ -d "shipping[address][city]"=Brothers \ -d "shipping[address][country]"=US \ -d "shipping[address][line1]"="27 Fredrick Ave" \ -d "shipping[address][postal_code]"=97712 \ -d "shipping[address][state]"=OR \ -d "payment_method_data[billing_details][address][city]"=Brothers \ -d "payment_method_data[billing_details][address][country]"=US \ -d "payment_method_data[billing_details][address][line1]"="27 Fredrick Ave" \ -d "payment_method_data[billing_details][address][postal_code]"=97712 \ -d "payment_method_data[billing_details][address][state]"=OR \ --data-urlencode "payment_method_data[billing_details][email]"="jenny.rosen@example.com" \ -d "payment_method_data[billing_details][name]"="Jenny Rosen"

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.

Récupérez la clé secrète du client à partir d’un endpoint sur votre serveur, à l’aide de la fonction fetch du navigateur. Cette approche est recommandée si votre côté client est une application d’une seule page, en particulier si elle repose sur un framework front-end moderne tel que React. Créez l’endpoint de serveur qui gère 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

Récupérez ensuite la clé secrète du client à l’aide JavaScript côté client :

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

Soumettre le paiement à Stripe

À cette étape, vous effectuerez les paiements Klarna côté client avec Stripe.js.

Configurer Stripe.js

Lorsqu’un client clique pour payer avec Klarna, 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 tunnels de paiement. Elle gère automatiquement les opérations complexes telles que la redirection décrite ci-dessous, et vous permettra de facilement étendre votre intégration à d’autres moyens de paiement à l’avenir. Incluez le script Stripe.js sur 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.

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 d’envoyer l’objet PaymentIntent complet au client, utilisez sa clé secrète client. (Ceci est différent de vos clés d’API qui authentifient les requêtes de l’API Stripe.)

Veillez à manipuler la clé secrète client avec précaution, car elle peut servir à finaliser le paiement. Ne la consignez pas, ne l’intégrez pas dans des URL et ne l’exposez à personne d’autre que le client.

Utilisez stripe.confirmKlarnaPayment pour gérer la redirection hors de votre page et finaliser le paiement. Ajoutez une return_url à cette fonction pour indiquer où Stripe doit rediriger l’utilisateur une fois qu’il a finalisé le paiement sur le site Web ou l’application mobile de Klarna.

Sur la page de paiement de Klarna, le client choisit parmi les options de paiement disponibles sur son marché. Consultez le tableau sur la page de présentation pour connaître la disponibilité par marché. Vous ne pouvez pas limiter ou présélectionner les options de paiement sur la page de paiement de Klarna ; le fait de laisser ce choix au consommateur maximise ses chances de réaliser une transaction avec vous.

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

Lorsque votre client effectue un paiement, Stripe le redirige vers l’URL return_url et inclut les paramètres de requête d’URL suivants. La page de redirection peut utiliser ces paramètres pour récupérer l’état du PaymentIntent et ainsi afficher l’état du paiement pour le client.

Lorsque vous spécifiez une URL return_url, vous pouvez également ajouter vos propres paramètres de requête à utiliser sur la page de redirection.

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

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

Vous trouverez des détails sur l’option de paiement Klarna sélectionnée par le client sur l’objet charge, dans la propriété payment_method_details. Il existe quatre valeurs possibles : pay_later, pay_with_financing, pay_now et pay_in_installments. Consultez notre page de présentation de Klarna pour plus d’informations sur ces options.

Vous pouvez également trouver les paramètres régionaux utilisés pour localiser la page de paiement de Klarna sous la propriété payment_method_details.

{ "charges": { "data": [ { "payment_method_details": { "klarna": { "payment_method_category": "pay_in_installments", "preferred_locale": "en-US" }, "type": "klarna" }, "id": "src_16xhynE8WzK49JbAs9M21jaR", "object": "source", "amount": 1099, "client_secret": "src_client_secret_UfwvW2WHpZ0s3QEn9g5x7waU",

Tester votre intégration

Nous avons réuni ci-dessous des données de test pour les pays pris en charge. Dans un environnement de test, Klarna s’appuie sur l’adresse e-mail fournie pour approuver ou refuser une transaction.

ApprouvéRefusé
Date de naissance10/07/197003-05-1994
PrénomTestJohn
NomPerson-ausnow
RueWharf StSilverwater Rd
Numéro de rue41-5
Code postal48772128
VillePort DouglasSilverwater
RégionQLDNSW
Téléphone+61473752244+61473763254
Adresse e-mailcustomer@email.aucustomer+denied@email.au

Pour les tests en production, vous pouvez utiliser un montant de 3500 dans votre devise locale pour tester toutes les options de paiement proposées par Klarna. Par exemple, pour tester le paiement en 3 fois en Italie, vous pouvez utiliser une transaction de 35,00 EUR.

Authentification à deux facteurs

Tout numéro à six chiffres forme un code d’authentification à deux facteurs valide. Utilisez 999999pour que l’authentification échoue.

Mode de remboursement

Dans le flux Klarna, vous pouvez utiliser les valeurs de test suivantes pour essayer divers types de remboursements :

TypeValeur
Prélèvement automatiqueDE11520513735120710131
Virement bancaireBanque de démonstration
Carte bancaire
  • Numéro : 4111 1111 1111 1111
  • CVV : 123
  • Date d’expiration : toute date future valide
Carte de débit
  • Numéro : 4012 8888 8888 1881
  • CVV : 123
  • Date d’expiration : toute date future valide

Échecs de paiement

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

Lorsque le client sélectionne un moyen de paiement différé, Klarna effectue une évaluation des risques avant d’accepter la transaction. Klarna peut refuser la transaction en raison d’un résultat insatisfaisant de l’évaluation des risques, du montant de la transaction en question ou du niveau de dette du client. C’est pourquoi nous vous recommandons d’intégrer des options de paiement supplémentaires telles que card dans votre tunnel de paiement. Dans ces cas, le PaymentMethod est dissocié et l’état de l’objet PaymentIntent passe automatiquement à requires_payment_method.

Les clients sont tenus d’effectuer le paiement dans les 48 heures suivant leur redirection vers le site Klarna. Si aucune action n’est effectuée au bout de 48 heures, le PaymentMethod est dissocié et l’état de l’objet PaymentIntent passe automatiquement de requires_action à 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.

Limites de débit Klarna

Les requêtes API adressées à Klarna sont soumises à des limites d’appels supplémentaires qui vont au-delà des limites d’appels à l’échelle de l’API Stripe. Ces limites peuvent varier en fonction de la forme des requêtes API que vous effectuez. En général, si vous faites plus de 50 requêtes par seconde, vous constaterez peut-être une limite d’appels sous la forme de réponses avec le code d’état HTTP 400 ou 402. Veuillez nous contacter(https://support.stripe.com) pour obtenir de plus amples détails si vous craignez que votre utilisation n’atteigne ces niveaux, car Klarna pourrait augmenter ces limites au cas par cas.

Messages d’erreur

Les paiements Klarna qui échouent renvoient normalement l’un des codes d’échec suivants. Ces codes apparaissent dans l’objet API last_payment_error.

Mise en garde

Dans les versions de l’API antérieures à 2023-08-16, chaque erreur Klarna était signalée comme suit : payment_intent_authentication_failure. Assurez-vous que votre version de l’API est à jour pour consulter les erreurs répertoriées ci-dessous.

Code d’échecExplication
payment_method_customer_declineLe client a annulé le paiement sur la page de Klarna
payment_method_provider_declineKlarna a refusé le paiement du client
payment_intent_payment_attempt_expiredLe client n’a jamais mené à bien le paiement sur la page de Klarna et la session de paiement a expiré
payment_method_not_availableUne erreur inattendue est survenue lors de l’utilisation de Klarna

Personnalisations facultatives

Vous pouvez éventuellement implémenter plusieurs personnalisations différentes pour les tunnels de paiement Klarna (telles que la séparation de l’autorisation et de la capture des fonds) et les interactions avec les clients (telles que la gestion des redirections).

Séparer l’autorisation et la capture

Klarna 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 d’abord le paiement et capturez-le plus tard. Au moment de la capture, Klarna envoie un relevé au client et initie les dates d’échéance de tous les paiements ultérieurs qu’il devra effectuer. Un paiement Klarna autorisé doit être capturé dans les 28 jours suivant l’autorisation. Dans le cas contraire, l’autorisation est automatiquement annulée et vous ne pouvez plus capturer le paiement.

  1. 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’autoriser uniquement le montant sur le compte Klarna 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 "payment_method_types[]"=klarna \ -d amount=1099 \ -d currency=eur \ -d capture_method=manual
  2. Capturer les fonds

    Une fois l’autorisation réussie, l’état du PaymentIntent passe à requires_capture. Pour capturer les fonds autorisés, effectuez une requête de capture sur le PaymentIntent. Le montant total autorisé est capturé par défaut ; vous ne pouvez pas capturer plus que ce montant, mais vous pouvez en capturer moins.

    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
  3. Facultatif Annuler l’autorisation

    Klarna comptabilise tous les paiements autorisés par rapport au pouvoir d’achat total du client au sein de Klarna. Assurez-vous d’annuler activement tout paiement autorisé que vous ne pouvez pas honorer (par exemple, les marchandises ne peuvent pas être expédiées) dès que cela devient évident.

    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}}
    /cancel
    \ -u "
    sk_test_BQokikJOvBiI2HlWgH4olfQ2
    :"
    \ -d cancellation_reason=abandoned

Gérer manuellement la redirection Klarna

Nous vous recommandons d’utiliser Stripe.js pour gérer les redirections et les paiements Klarna côté client avec confirmKlarnaPayment. L’utilisation de Stripe.js permet d’ajouter d’autres moyens de paiement à votre intégration. Cependant, vous pouvez aussi rediriger vos clients manuellement sur votre serveur en procédant comme suit :

  1. Créez et confirmez un PaymentIntent de type klarna. Vous devez fournir l’URL de redirection postpaiement pour votre client dans le champ return_url. Dans cette URL, vous pouvez fournir vos propres paramètres de requête, qui seront inclus dans l’URL finale 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 "payment_method_types[]"=klarna \ -d amount=1099 \ -d currency=eur \ -d confirm=true \ --data-urlencode return_url="https://example.com/checkout/complete" \ -d "payment_method_data[type]"=klarna
  2. Le PaymentIntent créé a 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_1G1sgdKi6xqXeNtkldRRE6HT", "object": "payment_intent", "amount": 1099,
  3. 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.

    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

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

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

Gé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.

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

    Utilisez le Dashboard pour afficher vos paiements de test dans le Dashboard, envoyer des reçus par e-mail, gérer les virements ou réessayer les paiements échoués.

  • Créer un webhook personnalisé

    Créez un gestionnaire de webhook personnalisé pour écouter les événements et créer des tunnels de paiement asynchrones personnalisés. Testez et déboguez votre intégration de webhook localement avec la CLI Stripe.

  • Intégrer une application prédéfinie

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

Personnaliser la page de paiement Klarna

  • Préremplir le formulaire Klarna

    Lorsque le client choisit de payer avec Klarna en utilisant une option de paiement différé (payer plus tard, versements échelonnés ou financement), Klarna collecte suffisamment d’informations pour l’évaluation des risques et l’approbation. Le type d’informations dépend du pays du client. Pour la plupart des pays d’Europe, il s’agit des coordonnées de facturation complètes et de la date de naissance. Vous pouvez transmettre ces informations via l’API, et le formulaire sera prérempli lorsque votre client arrivera sur la page.

    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 "payment_method_types[]"=klarna \ -d amount=1099 \ -d currency=eur \ -d confirm=true \ --data-urlencode return_url="https://example.com/checkout/complete" \ -d "payment_method_data[type]"=klarna \ --data-urlencode "payment_method_data[billing_details][email]"="customer@example.com" \ -d "payment_method_data[billing_details][name]"="Jenny Rosen" \ --data-urlencode "payment_method_data[billing_details][phone]"="+4915142321555" \ -d "payment_method_data[billing_details][address][line1]"="Alexanderplatz 1" \ -d "payment_method_data[billing_details][address][city]"=Berlin \ -d "payment_method_data[billing_details][address][postal_code]"=10551 \ -d "payment_method_data[billing_details][address][country]"=DE \ -d "payment_method_data[klarna][dob][day]"=10 \ -d "payment_method_data[klarna][dob][month]"=10 \ -d "payment_method_data[klarna][dob][year]"=1990
    Capture d'écran de la page de paiement Klarna préremplie avec les informations de facturation issues de l'API et personnalisée de sorte à s'afficher en anglais

    Page de paiement Klarna préremplie avec les informations de facturation issues de l’API et personnalisée de sorte à s’afficher en anglais pour un client basé en Allemagne

Ajouter des postes au PaymentIntent

Postes de facture unifiés avec Klarna

Pour optimiser les taux d’approbation lors de l’intégration à Klarna, incluez des données line_items pour représenter le contenu du panier d’un acheteur. Pour bénéficier d’un accès anticipé, consultez la page Postes de paiement.

Afficher des messages sur les moyens de paiement sur votre site Web

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

Pour ajouter le composant Payment Method Messaging Element à votre site Web, veuillez consulter le guide dédié.

Prince of Persia book
The Making of Prince of Persia: Journals 1985-1993
Jordan Mechner
99,00 $US
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