Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Commentaire: Calculs des montants



Contenu

Sommaire
maxLevel2
stylenone

Plus d'informations

Présentation du moyen de paiement


Extrait
hiddentrue

https://developerhub.ppro.com/simple-api/docs/klarna

Jira
serverSystem JIRA
serverId50744091-840f-3ee1-b868-bceedb28d8a1
keyPAYLPRO-1711



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.

Inclusion d'extrait
Contactez le support Monext Online
Contactez le support Monext Online
nopaneltrue


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.

excerpt


Services SOAP

hidden

Balises

Obligatoire

Description

Services REST
true

Matrice des champs Author, Create_Session, Capture et Refund

MATCHING ?

specin.taxamount

specin.paymentmethodcategory : est ce que l on peut limiter le produit ?

transientin.billingaddress

transientin.emd

transientin.hpptitle

transientin.logourl

transientin.orderitems

transientin.customer

transientin.purchasetype

transientin.shippingaddress

transientin.backgroundimages

SPECOUT.SCHEMEORDERID

SPECOUT.PROVIDERERRORCODE
SPECOUT.PROVIDERERRORMESSAGE
SPECOUT.BILLINGCATEGORY
SPECOUT.AUTHORIZEDPAYMENTMETHOD

Obligatoire

Description

payment.amount
payment.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
Nom de la rue de la livraison



  buyer.shippingAddress.street2


  buyer.shippingAdress.cityName
Nom de la ville de livraison



  buyer.shippingAdress.zipCode
Code postal de la livraison



  buyer.shippingAdress.country
(coche)Pays de la livraison (ISO 3166-1).
  buyer.shippingAdress.phone
Téléphone de l'acheteur



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


  buyer.billingAddress.firstName


  buyer.billingAddress.lastName


  buyer.billingAddress.phone


  buyer.billingAddress.email


  buyer.billingAdress.street1
Nom de la rue de facturation



  buyer.billingAddress.street2


  buyer.billingAdress.cityName
Nom de la ville de facturation



  buyer.billingAdress.zipCode
Code postal de la facturation



  buyer.billingAdress.country

Pays de la
facturation 
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.

État
subtletrue
colourBlue
titleRelease 24.9

order.discountAmountorder.discount(étoile bleue)

Somme des discount tag=total_discount_amount de additionalData.

État
subtletrue
colourBlue
titleRelease 24.9

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é "

discountRate

total_discount_amount"(étoile bleue)

items.miscellanneous.total_discount_amout(étoile bleue)

Taux de réduction.

par

Par exemple 20,00 €  :

 

<obj:

additionalData>discountRate=0.0;flags=32<

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 comme un article. La prochaine version vous permettra de le rajouter dans une balise.



Calculs des montants
État
subtletrue
colourBlue
titleRelease 24.9

Si les règles ci dessous ne sont pas respectées(avertissement)  Les montants de commande, de la transaction et de la somme des Articles doivent être identiques. Si cette contrainte n'est pas respectée, 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 des avoirs doit être égale au montant des discounts de chaque article : order.discountAmount

    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.

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

  4. 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

  5. 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.

  6. 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.



(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 suivantedocs.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

 


Extrait

Exemples
État
subtletrue
colourBlue
titleRelease 24.9


Tab Content Wrapper
Tab Element
titleAPI SOAP
tabIconbvicon-down-open



Bloc de code
themeConfluence
linenumberstrue
<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://
/docs.klarna.com/klarna-payments/in-depth-knowledge/customer-data-requirements/
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>

Tab Element
titleAPI REST
tabIconbvicon-down-open
Bloc de code
themeConfluence
linenumberstrue
{
  "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"
}




Extrait
hiddentrue

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

Inclusion d'extrait
Les codes retour
Les codes retour
nopaneltrue




Pages associées

Contenu par étiquette
showLabelsfalse
max10
spacescom.atlassian.confluence.content.render.xhtml.model.resource.identifiers.SpaceResourceIdentifier@9a3
showSpacefalse
sorttitle
typepage
cqllabel = "integration" and label = "fr" and label = "widget" and type = "page" and space = "DT"
labelsbancontact belgique choixdelamarque