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
Postes de facture unifiés avec Klarna
Pour optimiser les taux d’approbation lors de l’intégration à Klarna, incluez des données line_
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.
Lorsqu’un client utilise Klarna dans votre application, une vue Web lui permettant d’authentifier son paiement s’affiche. Votre client revient ensuite dans votre application et vous pouvez immédiatement confirmer si le paiement a abouti ou échoué.
Remarque
Avant de commencer l’intégration, assurez-vous que votre compte est éligible à Klarna en vous rendant dans vos paramètres des moyens de paiement.
Configurer StripeCôté serveurCôté client
Tout d’abord, il vous faut un compte Stripe. Inscrivez-vous.
Côté serveur
Pour cette intégration, votre serveur doit être doté d’endpoints qui communiquent avec l’API Stripe. Utilisez les bibliothèques officielles pour accéder à l’API Stripe depuis votre serveur :
Côté client
Le SDK Stripe Android est disponible en open source et fait l’objet d’une documentation complète.
Pour installer le SDK, ajoutez stripe-android
au bloc dependencies
de votre fichier app/build.gradle :
Remarque
Pour obtenir de plus amples informations sur la version la plus récente du SDK et ses versions antérieures, consultez la page des versions sur GitHub. Pour savoir quand une nouvelle version est disponible, surveillez les versions du référentiel.
Configurez le SDK avec votre clé publique Stripe de façon à ce qu’il puisse envoyer des requêtes à l’API Stripe, par exemple à la sous-classe Application
:
Remarque
Utilisez vos clés de test lors de vos activités de test et de développement et vos clés du mode production pour la publication de votre application.
Les échantillons de code de Stripe utilisent également OkHttp et GSON pour envoyer des requêtes HTTP à un serveur.
Créer un PaymentIntentCôté serveurCôté client
Un PaymentIntent est un objet qui représente votre intention de collecter un paiement auprès d’un client et qui suit le cycle de vie du processus de paiement à chaque étape.
Côté client
Le PaymentIntent renvoyé contient une clé secrète du client que vous pouvez envoyer au client pour une exécution sécurisée du processus de paiement au lieu de lui transmettre la totalité de l’objet PaymentIntent. Côté client, demandez un PaymentIntent à votre serveur et sauvegardez la clé secrète du client qu’il contient.
Soumettre le paiement à StripeCôté client
Récupérez la clé secrète du client sur le PaymentIntent que vous avez créé à l’étape 2, puis appelez la méthode confirm de PaymentLauncher. Une vue Web s’affiche, dans laquelle votre client peut mener à bien son paiement. Une fois l’opération terminée, onActivityResult est appelé avec le résultat du paiement.
Tester votre intégration Klarna
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.
Authentification à deux facteurs
Tout numéro à six chiffres forme un code d’authentification à deux facteurs valide. Utilisez 999999
pour 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 :
Type | Valeur |
---|---|
Prélèvement automatique | DE11520513735120710131 |
Virement bancaire | Banque de démonstration |
Carte bancaire |
|
Carte de débit |
|
É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_
.
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_
à 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.
Limites de débit Klarna
Les requêtes API adressées à Klarna sont soumises à des limites de débit supplémentaires qui dépassent les limites de débit à l’échelle de l’API de Stripe. Ces limites peuvent varier en fonction de la forme des requêtes API que vous effectuez. En général, si vous effectuez plus de 360 requêtes par minute, vous constaterez peut-être une limitation de débit sous la forme de réponses avec le code d’état HTTP 400
ou 402
. Veuillez nous contacter pour obtenir plus d’informations 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’échec | Explication |
---|---|
payment_method_customer_decline | Le client a annulé le paiement sur la page de Klarna |
payment_method_provider_decline | Klarna a refusé le paiement du client |
payment_intent_payment_attempt_expired | Le client n’a jamais mené à bien le paiement sur la page de Klarna et la session de paiement a expiré |
payment_method_not_available | Une erreur inattendue est survenue lors de l’utilisation de Klarna |