Contenu


Activer Klarna sur mon compte

Vous devez vous rapprocher de votre responsable de compte ou d'un commercial pour la création de ce moyen de paiement.
Monext Online réalise toute la configuration.


Une fois votre le nom de l’alias du numéro de contrat créé alors le moyen de paiement est disponible.
Vous devez réaliser des transactions 'pilote' pour valider le bon fonctionnement en production.


Le code (card_code) du moyen de paiement est : KLARNA_MNXT

L'écran de configuration :



Proposer le paiement Klarna à vos acheteurs

Les principes d'utilisation 

Une fois le moyen de paiement activé, il est utilisable au travers des fonctions Monext Online en indiquant le contrat du moyen de paiement Contrat_Number. 
Le mode d'intégration est disponible avec l'API WebPayment : services doWebPayment et getWebPaymentDetails

Les web services en mode Web

  • Interfaces de paiement :  API WebPayment.

  • Paiement à la commande : en utilisant le service  doWebPayment  avec payment.mode à CPT et code Action à 101.

  • Mode de paiement :  sélectionner votre mode de paiement : comptant avec le code Mode = CPT.
  • Demande d'annulation d'une autorisation non encaissée : utilisez la fonction doReset permet au marchand de demander l’annulation totale ou partielle de la commande.
  • Demande de remboursement d'une transaction remisée : utilisez la fonction doRefund pour rembourser la commande.
  • Réponse de paiement  : consulter la réponse du service getWebPaymentDetails pour obtenir les informations du moyen de paiement et de l'acheteur.

Libellé sur le ticket de paiement

Vous pouvez choisir d'alimenter un libellé sur le ticket de paiement avec le champ payment.softDescriptor  du service doWebPayment.

S'il est vide alors le nom d'enseigne du moyen de paiement dans le centre administration sera sélectionné.

Et si ce dernier est vide alors le nom d'enseigne du compte commerçant dans le centre administration sera sélectionné.



Les champs obligatoires

Les champs obligatoires doivent être renseignés lors de la demande de paiement, dans le cas contraire la demande sera refusée. 

Les balises ci-dessous sont obligatoires dans la trame SOAP Payline lors de la demande de paiement.


Services SOAP

Services RESTObligatoire

Description

payment.amountpayment.amount(coche)
payment.currency
(coche)

Code de la devise du paiement.
Liste des paires devises/pays supportées.

buyer.titlebuyer.title
Titre de l'acheteur.
buyer.lastNamebuyer.lastName(coche)Nom de l’acheteur.
buyer.firstNamebuyer.firstName(coche)Prénom de l’acheteur.
buyer.birthDatebuyer.birthDate
Date de naissance de l'acheteur.
buyer.legalDocumentbuyer.legalDocument
Numéro d'identification du document officiel.
buyer.shippingbuyer.billingAddress
Adresse de livraison
  buyer.shippingAddress.title


  buyer.shippingAdress.lastName


  buyer.shippingAdress.phone


  buyer.shippingAdress.email


  buyer.shippingAdress.street1


  buyer.shippingAddress.street2


  buyer.shippingAdress.cityName


  buyer.shippingAdress.zipCode


  buyer.shippingAdress.country
(coche)Pays de la livraison (ISO 3166-1).
  buyer.shippingAdress.phone


buyer.billingdelivery.address
Adresse de facturation.
  buyer.billingAddress.title


  buyer.billingAddress.firstName


  buyer.billingAddress.lastName


  buyer.billingAddress.phone


  buyer.billingAddress.email


  buyer.billingAdress.street1


  buyer.billingAddress.street2


  buyer.billingAdress.cityName


  buyer.billingAdress.zipCode


  buyer.billingAdress.country

Pays de la facturation (ISO 3166-1).
languageCode

Code de la langue (ISO 639-1).
order.reforder.reference
Référence de la commande donnée par le commerçant.
order.taxesorder.taxes
Montant taxes TTC. Taux de TVA appliqué à l'article. 
Pour information : une TVA > 100% est interdite.
order.countryorder.country(coche)Pays de la commande.
order.deliveryChargedelivery.charge(étoile bleue)

Frais de transport.

order.discountAmountorder.discount(étoile bleue)

Somme des discount tag=total_discount_amount de additionalData.

order.detailsitems(coche)Détail d'une commande.


La liste des balises ci-dessous présente le détail des articles d'une commande KLARNA y compris les frais de transport et les frais de manutention :

Services SOAP

Services RESTObligatoire

Description

orderDetail.commentitems.comment(coche)Description d'un article.
orderDetail.priceitems.price(coche)Prix unitaire TTC avec TVA comprise dans le prix de l'article.
orderDetail.quantityitems.quanbtity(coche)Quantité de l'article.

orderDetail.additionalData

  avec la clé "total_discount_amount"(étoile bleue)

items.miscellanneous.total_discount_amout(étoile bleue)

Taux de réduction.

Par exemple 20,00 €  : <obj:additionalData>total_discount_amount=2000</obj:additionalData>

orderDetails.additionalData

  avec la clé "imageURL"

items.miscellanneous.imageURL
URL de l'image de l'article.

orderDetail.additionnalData

  avec la clé "GTIN"

items.miscellanneous.GTIN
Numéro d'article : The product's Global Trade Item Number (GTIN).

orderDetail.additionnalData

  avec la clé "MPN"

items.miscellanneous.MPN
Numéro du fabricant : The product's Manufacturer Part Number (MPN).

orderDetail.additionnalData

  avec la clé "productUrl"

items.miscellanneous.productUrl
URL du produit : URL to the product that can be later used in communications between Klarna and the customer.

orderDetail.additionnalData

  avec la clé "KlarnaMerchantData1"(étoile bleue)

items.miscellanneous.KlarnaMerchantData1(étoile bleue)

API SOAP : KlarnaMerchantData1=Data1;KlarnaMerchantData2=Data2;

API REST :  "miscellaneous":{"KlarnaMerchantData1":"Data1"}

orderDetail.taxRateitems.taxRate
Taux de la taxe.
orderDetail.refitems.reference
Référence.
orderDetails.branditems.brand
Marque.
orderDetails.categoryitems.category
Catégorie.

(étoile bleue)  Release 24.9


Calcul des avoirs et des frais de livraison

Actuellement Monext vous propose de rajouter les frais de livraison dans un article. La prochaine version vous permettra de le rajouter dans une balise.

Les avoirs ne sont pas possibles dans cette version. 


Calculs des montants

Si les règles ci dessous ne sont pas respectées, le moyen de paiement ne sera pas affiché sur le formulaire de paiement.

  1. Le montant de la transaction doit être égale au montant de la commande  : payment.amount

  2. Le montant de chaque article est indiqué TTC, n'inclut pas les avoirs et sans frais de livraison : order.details.details.price

  3. Le montant des taxes est la somme des taxes des articles :  order.taxes

    Pour chaque article le total_tax_amount_article = (article_amount/( 100+(tax_rate_acticle/100) )*(tax_rate_acticle/100))  avec arrondi

  4. Le montant de la commande order.amount doivent être égale à la somme du détails de la commande : 

    1. du prix unitaire TTC de chaque article x nombre d'article.
    2. du montant des frais de livraison.
    3. du montant des avoirs utilisés.

  5. Le montant des frais de transport order.deliveryCharge

    Si les frais de transport sont envoyés sur un orderDetails alors order.taxes inclut les taxes des frais de livraison.
    Si les frais de transport sont envoyés via le champ deliveryCharge, alors order.taxes n'inclut pas les taxes des frais.


Le montant des avoirs doit être égale au montant des discounts de chaque article : order.discountAmount => pas envoyé 


Le montant total des avoirs doit être réparti dans les différents articles. 
Le montant total des avoirs n'est pas obligatoire, mais les avoirs sont obligatoires par articles s'ils existent.


SOAP :  possible d'envoyer un article négatif.

REST :  ?


(avertissement)  Les devises et les pays déclarés dans la commande, l'adresse de livraison, l'adresse de facturation et d'adresse de l'acheteur doivent correspondre au même pays, ainsi que la langue déclarée dans la balise languageCode.

Pour plus d’information concernant les formats et champs attendus coté Klarna, veuillez consulter la page suivante: docs.klarna.com/customer-data-requirements


 Exemple de panier 

  • 1 article à 90 € avec une taxe 10 % et une réduction de 15 €
  • 2 article à 6 € chacun avec une taxe de 15% et avec une réduction de 10 €


API SOAPAPI RESTVersion  24.8Version 24.9
Payment.amount
2000020000
Order.taxesorder.taxes21772177
Order.amountorder.amount2000018500
Order.discountdiscount.amount
2500
Order.deliveryChargedelivery.charge
1500
Article 1


Order.Details.priceorder.items.price90009000
Order.Details.quantityorder.items.quantity11
Order.Details.taxRateorder.items.taxeRate10001000
Order.Details.additionalData avec "total_discount_amount"

order.items.total_discount_amount

1500

1500
total amount

 

7500

7500

total_tax_amount

 

682

682

Article 2


Order.Details.priceorder.items.price600600
Order.Details.quantityorder.items.quantity22
Order.Details.taxRateorder.items.taxeRate15001500
Order.Details.additionalData avec "total_discount_amount"order.items.total_discount_amount10001000
total amount
1100011000
total_tax_amount
14351435

 


Exemples



<impl:doWebPaymentRequest xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:impl="http://impl.ws.payline.experian.com" xmlns:obj="http://obj.ws.payline.experian.com">

    <impl:version>34</impl:version>

    <impl:payment>
      <obj:amount>18500</obj:amount>
      <obj:currency>978</obj:currency>
      <obj:action>101</obj:action>
      <obj:mode>CPT</obj:mode>
      <obj:contractNumber>0206023</obj:contractNumber>   
    </impl:payment>

    <impl:returnURL>https://monext.fr</impl:returnURL>
    <impl:cancelURL>https://google.com</impl:cancelURL>

    <impl:order>
      <obj:ref>demo123</obj:ref>
      <obj:origin>10</obj:origin>
      <obj:country>FR</obj:country>
      <obj:taxes>1901</obj:taxes>
      <obj:amount>18500</obj:amount>
      <obj:currency>978</obj:currency>
      <obj:discountAmount>3000</obj:discountAmount>
      <obj:deliveryCharge>1500</obj:deliveryCharge>
      <obj:date>28/08/2024 17:27</obj:date>

      <obj:details>   

        <obj:details>
          <obj:ref>1</obj:ref>
          <obj:price>10000</obj:price>
          <obj:quantity>1</obj:quantity>
          <obj:comment>comment</obj:comment>
          <obj:additionalData>total_discount_amount=2000;imageURL=https://monImage.fr;KlarnaMerchantData1=Data1;KlarnaMerchantData2=Data2;GTIN=4912345678904;MPN=AD6654412-334.22;productUrl=https://monImage.fr</obj:additionalData>
          <obj:quantity_unit>pcs</obj:quantity_unit>
          <obj:brand>shoe-brand</obj:brand>
          <obj:category>Shoes > Running</obj:category>
          <obj:taxRate>1000</obj:taxRate>        
          <obj:physical>123</obj:physical>
        </obj:details>     

        <obj:details>
          <obj:ref>2</obj:ref>
          <obj:price>5000</obj:price>
          <obj:quantity>2</obj:quantity>
          <obj:comment>comment</obj:comment>
          <obj:brand>shoe-brand</obj:brand>
          <obj:category>Shoes > Running</obj:category>
          <obj:quantity_unit>pcs</obj:quantity_unit>
          <obj:additionalData>total_discount_amount=1000;imageURL=https://monImage.fr;KlarnaMerchantData1=Data1;KlarnaMerchantData2=Data2;GTIN=4912345678904;MPN=AD6654412-334.22;productUrl=https://monImage.fr</obj:additionalData>
          <obj:taxRate>1500</obj:taxRate>
          <obj:physical>123</obj:physical>
        </obj:details>          

      </obj:details>   
  </impl:order>

  <impl:notificationURL>http://www.concupourvendre.com/notif/notif.php</impl:notificationURL>
  <impl:selectedContractList>
      <obj:selectedContract>0206023</obj:selectedContract>
      <obj:selectedContract>CB_1205</obj:selectedContract>
  </impl:selectedContractList>
  <impl:secondSelectedContractList>
      <obj:selectedContract>0206023</obj:selectedContract>
      <obj:selectedContract>CB_1205</obj:selectedContract>
  </impl:secondSelectedContractList>
  <impl:privateDataList>
      <obj:privateData>
        <obj:key/>
        <obj:value/>
      </obj:privateData>
  </impl:privateDataList>
  <impl:languageCode>fr</impl:languageCode>
  <impl:buyer>
   
      <obj:birthDate>1978-12-31</obj:birthDate>
      <obj:title>3</obj:title>
      <obj:legalDocument>26083006995</obj:legalDocument>
      <obj:lastName>B</obj:lastName>
      <obj:firstName>Charles</obj:firstName>
      <obj:email>john.doe@fake.id</obj:email>
      <obj:phone>0987654321</obj:phone>
         
      <obj:shippingAdress>
         <obj:firstName>John</obj:firstName>
         <obj:lastName>L</obj:lastName>
         <obj:name>L</obj:name>
         <obj:street1>Rue principale</obj:street1>
         <obj:street2>Grand batiment</obj:street2>
         <obj:cityName>Phoceenne</obj:cityName>
         <obj:zipCode>13450</obj:zipCode>
         <obj:country>FR</obj:country>
         <obj:state>BDuR</obj:state>
         <obj:county>IO</obj:county>
         <obj:title>3</obj:title>
       </obj:shippingAdress>
         
       <obj:billingAddress>
         <obj:title>5</obj:title>
         <obj:firstName>Jeremy</obj:firstName>
         <obj:lastName>M</obj:lastName>
         <obj:name>M</obj:name>
         <obj:street1>Rue truc</obj:street1>
         <obj:street2>Bat B</obj:street2>
         <obj:cityName>Trucville</obj:cityName>
         <obj:zipCode>12345</obj:zipCode>
         <obj:country>FR</obj:country>
         <obj:county>PACA</obj:county>
       </obj:billingAddress>

       <obj:ip>10.10.10.123</obj:ip>
       <obj:customerId>987654321</obj:customerId>
       <obj:fingerprintID>123</obj:fingerprintID>    
  </impl:buyer>
  <impl:securityMode>SSL</impl:securityMode> 
</impl:doWebPaymentRequest>

{
  "paymentMethod": {
    "paymentMethodIDs": [
      "Klarna"
    ]
  },
  "order": {
    "currency": "EUR",
    "origin"  : "E_COM",
    "country" : "FR",
    "reference": "Demo",
    "amount"  : 20000,
    "taxes"   :2117,

   "items": [
      {
        "miscellaneous": {
        "total_discount_amount": "1500",
        "imageURL":"https://monImage.fr",
        "KlarnaMerchantData1": "Data11",
        "GTIN":"4912345678904",
        "MPN" :"AD6654412-334.22",
        "productUrl":"https://monImage.fr"        
       },    
        "reference": "ref-1",
        "price": 9000,
        "quantity": 1,
        "comment": "bouteille d'eau",
        "brand": "badoit",
        "taxRate": 1000,
        "category": "17"
      },
      {
        "miscellaneous": {
        "total_discount_amount": "1000",
        "imageURL":"https://monImage.fr",
        "KlarnaMerchantData1": "Data21",
        "GTIN":"4912345678904",
        "MPN" :"AD6654412-334.22",
        "productUrl":"https://monImage.fr"        
      },   
        "reference": "ref-2",
        "price"   : 6000,
        "quantity": 2,
        "comment" : "bassin",
        "brand"   : "Bassin Pro",
        "taxRate" : 1500,
        "category": "11"
      }
    ]
  },
   
  "payment": {
    "paymentType": "ONE_OFF",
    "capture"    : "AUTOMATIC",
    "recurring"  : {
      "frequency": "DAILY"
    }
  },
  "buyer": {
    "legalDocument": {
      "number": "26083006995"
    },
    "legalStatus": "PRIVATE",
    "billingAddress": {
      "country": "FR",
      "title": "MR",
      "firstName": "Bill",
      "lastName": "Matt",
      "street": "Rue A",
      "complement": "Bat B",
      "city": "Aix",
      "zip": "12345",
      "county": "PACA"
    },
    "title": "MRS",
    "firstName": "Buy",
    "lastName": "Matt",
    "email": "john.doe@fake.id",
    "mobile": "0987654321",
    "birthDate": "1978-12-31"
  },
  "delivery": {
    "address": {
      "country": "FR",
      "title": "MRS",
      "firstName": "Steph",
      "lastName": "L",
      "street": "Rue B",
      "complement": "",
      "city": "Aix",
      "zip": "13450",
      "county": "PACA",
      "state": ""
    },
    "charge": 1500
  },
  "threeDS": {
    "challengeInd": "NO_PREFERENCE"
  },
         
  "oneClickOption": "WITHOUT_CVV",
  "pointOfSaleReference": "12344443546554754",
  "returnURL": "https://monext.fr"
}




Mettre en place l'On-Site-Messaging Klarna

Afin d’informer les consommateurs de la présence de Klarna en amont du checkout, Klarna met à disposition des placements d’On-Site-Messaging via une librairie javaScript.

La présence de ce type de placement sur la page produit ou sur la page panier a un impact direct sur la conversion et le panier moyen observé.

Exemple de placement:

Veuillez consulter la page suivante pour plus de détails en cliquant sur ici.


Réaliser des tests

Sur l'environnement d'homologation (Test), vous êtes connecté à un simulateur vous proposant directement sur l'interface avec deux options :

  • Paiement accepté avec un code retour = ACCEPTED - 0000
    • toutes les cartes sont acceptées.
  • Paiement abandonné avec un code retour = CANCELLED - 02008

Lors du paiement une page du simulateur vous propose deux boutons sur l'environnement d'homologation (TEST) : un succès (MAKE A PAYMENT) et un abandon (ABORT).


Les codes de retour




Pages associées