Casino 3xCB / 4xCB

S’abonner


Qu'est-ce que Casino 3xCB / 4xCB ?

Ce moyen de paiement est une offre de paiement en 3 ou 4 fois par carte bancaire pour des commandes entre 90€ et 3000€.
L’affichage du moyen de paiement est conditionné à un pré-scoring afin de ne pas être proposé aux commandes et consommateurs non éligibles.
Le consommateur est invité à renseigner ses données cartes (numéro, date de validité et cryptogramme) et éventuellement ses données personnelles (date et département de naissance) sur le formulaire intégré à votre boutique en ligne.
Une fois le paiement validé, il est débité lors de la commande d'1/3 ou d'1/4 du prix d'achat puis sa carte de paiement est débitée mensuellement des échéances restantes.

Le marchand est crédité du montant total de la commande (déduit des frais) 48h après la demande d'encaissement.
Des frais de dossier peuvent être ajoutés par le marchand au montant de la commande. S'ils existent, ils seront répartis sur les N échéances.
Les cartes de paiement acceptées sont les CB, Visa et Mastercard Françaises hors cartes Electron, Maestro, prépayées et cartes-virtuelles.

Payline intègre l'outil de Device Fingerprint utilisé par Banque Casino pour que ce dernier améliore son scoring de lutte contre la fraude.


Plus d'information sur Casino 3xCB et 4xCB : https://www.banque-casino.fr/espace-partenaires/cb4x-solutions-paiement

Les fonctions disponibles

Payline autorise les fonctionnalités suivantes :

    • paiement à la commande ou à l'expédition ;
    • annulations partielles et multiples ;
    • paiement 3DSecure ;
    • le remboursement est disponible à condition que la dernière échéance ne soit pas passée ;
    • le remboursement partiel est disponible si le montant à rembourser est inférieur aux échéances déjà prélevées.

Ce moyen de paiement est disponible en page web et en API direct.

Quel est le parcours utilisateur ?

L'expérience utilisateur d'un paiement se résume à :

paiement casino 4xCB


Les étapes:

  1. Le consommateur clique sur le bouton "payer" et passe à l'étape paiement. 
  2. Payline affiche les moyens de paiement Casino 3xCB et 4xCB s'ils sont éligibles.
  3. Le consommateur choisit son mode de paiement, renseigne ses données de paiement et éventuellement ses informations personnelles (nom de jeune fille, département ou code postal de naissance, date de naissance) si ces dernières n'ont pas été transmises par le site marchand. Les frais concernant l'ouverture de crédit sont affichés.
  4. En fonction du risque, le consommateur est redirigé sur une page d'authentification 3DSecure.
  5. Payline affiche le ticket de paiement (optionnel) avec un rappel de l'échéancier de paiement.
  6. Payline confirme le résultat du paiement au site du commerçant.



Exemple d'une page de paiement

Exemple d'une page de paiement

Exemple d'un ticket de paiement

3XCB

4XCB

Quel est le reporting disponible ?

Les transactions apparaissent dans le backoffice Payline en temps réel et dans les fichiers de reporting suivants :

  • Fichier des transactions :
  • Fichier des paiements avec ou sans l'option réconciliation.
    • Les financements 3x4x ont un type d'opération Settlement/Crédit ;
    • Les dé-financements suite à une modification de commande ont un type Settlement/débit ;
    • Les dé-financements suite à une fraude ont un type d'opération Chargeback.

Comment proposer Casino 3x / 4x à vos clients ?

Le mode d'intégration est disponible avec les pages de paiements API WebPayment v2 et le mode API Widget : services doWebPayment et getWebPaymentDetail.

Le mode d'intégration en API direct avec la fonction 3DS est disponible. 


Les principes d’utilisation

L’éligibilité de la commande est évaluée afin de savoir s’il est pertinent de propose le moyen de paiement 3xCB/4xCB au consommateur.

Au moment du doWebPayment, Payline réalise une demande d'éligibilité de paiement avant de proposer le moyen de paiement 3x ou 4x.
Payline affiche les conditions de crédit : échéancier et CGV. Payline peut remplir les champs la date de naissance, département et nom de jeune fille s'ils sont fournis par le commerçant.
Le moyen de paiement ne s'affiche pas en cas d’impossibilité de réaliser le pré-score et l'échéancier ne s'affiche pas en cas de score absent ou de données manquantes.

Les paiements Casino CB3x/CB4x sont éligibles au traitement par le module anti-fraude Payline, au même titre que les autres transactions. Si une authentification 3DSecure est nécessaire, Payline gère l’affichage de la page ACS. Seul un refus banque (FICP ou acquéreur) peut conduire à un refus du paiement.

Payline mettra également à jour sa fonction « getWebPaymentDetail » pour faire passer l’échéancier au commerçant en retour d’une demande de paiement 3xCB/4xCB Casino.
Le marchand a la possibilité de modifier le montant de la commande après que le paiement ait été accepté. Le montant doit être inférieur ou égal à celui de la commande initiale.

Les web services en mode Web

Les services doWebPayment et getWebPaymentDetails sont disponibles.

L'object Payment sera transmis par le commerçant avec les valeurs Action = 101 et Mode = CPT.

Le service getWebPaymentDetails retourne l'échéancier : champ transaction.partnerAdditionalData avec paymentSchedule. Cette fonction implique l'utilisation d'une balise version avec une valeur >= 16.

Exemple partnerAdditionalData
{
  "paymentSchedule": [
    {
      "amount": "2895",
      "date": "2018-03-02T00:00:00+01:00",
      "rank": "1"
    },
    {
      "amount": "2892",
      "date": "2018-04-01T00:00:00+02:00",
      "rank": "2"
    },
    {
      "amount": "2892",
      "date": "2018-05-01T00:00:00+02:00",
      "rank": "3"
    },
    {
      "amount": "2892",
      "date": "2018-05-31T00:00:00+02:00",
      "rank": "4"
    }
  ]
}


Le service doRefund permet de rembourser la commande.
La fonction doReset de l’API Payline permet au marchand de demander l’annulation totale ou partielle de la commande.

Les web services en mode Direct 

Le mode d'intégration en API direct est disponible en utilisant le webservice isRegistered. Ce service vous permet de récupérer le scoring data nécessaire pour appeler le moyen de paiement Casino.
Vous récupérez
un registrationToken à renvoyer dans la demande de 3D Secure verifyEnrollment puis dans la demande de paiement doAuthorization.

En entrée le commerçant indique le contrat, le montant, commande et les données personnelles.
En retour, il reçoit un l'échéancier de paiement dont les frais de dossier et le registrationToken qui permettra de réaliser le paiement.

Les étapes :

  • Sur le site marchand, le consommateur valide son panier, puis le marchand appelle Payline avec le service isRegistered
  • Payline retourne un code 02500 - Accepter pour valider la demande et renvoie le registrationToken  ainsi qu'une balise data contenant un objet JSON avec l'échéancier paymentSchedules et le montant totalAmount ;
  • Puis il renvoie le jeton registrationToken dans la balise payment en appelant le verifyEnrollment pour réaliser le 3D Secure ;
  • Le consommateur saisie son mot de passe reçu par mobile ;
  • Le marchand réalise la demande de paiement doAuthorization avec registrationToken dans la balise payment et les données 3DS ;
  • Payline réalise la requête et la réponse du l'autorisation et renvoie une notification.

Lorsque un doAuthorization ou un verifyEnrollment est réalisé avec la balise registrationToken demandé qui est absente, vide ou incorrectement valorisée.

L'erreur suivante est remontée par le service : code 02999, short_message ERROR, long_message 'Invalid registration token'.


Exemples de web services

1. Branchement de la demande de scoring : isRegistered

Service isRegistered Request
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:impl="http://impl.ws.payline.experian.com" xmlns:obj="http://obj.ws.payline.experian.com">
   <soapenv:Header/>
   <soapenv:Body>
      <impl:isRegisteredRequest>
         <impl:version>18</impl:version>
         <impl:payment>
            <obj:amount>10000</obj:amount>
            <obj:currency>978</obj:currency>
            <obj:action>100</obj:action>
            <obj:mode>CPT</obj:mode>
            <obj:contractNumber>CASINO_3XCB</obj:contractNumber>
            <!--Optional:-->
            <obj:differedActionDate></obj:differedActionDate>
            <!--Optional:-->
            <obj:method></obj:method>
            <obj:softDescriptor></obj:softDescriptor>
            <!--Optional:-->
            <obj:cardBrand></obj:cardBrand>
            <!--Optional:-->
            <obj:registrationToken></obj:registrationToken>
         </impl:payment>
         <impl:order>
            <obj:ref>cas_test_015</obj:ref>
            <!--Optional:-->
            <obj:origin>10</obj:origin>
            <!--Optional:-->
            <obj:country>FR</obj:country>
            <!--Optional:-->
            <obj:taxes></obj:taxes>
            <obj:amount>10000</obj:amount>
            <obj:currency>978</obj:currency>
            <obj:date>23/11/2017 10:15</obj:date>
            <!--Optional:-->
            <obj:details>
               <!--0 to 100 repetitions:-->
               <obj:details>
                  <!--Optional:-->
                  <obj:ref></obj:ref>
                  <!--Optional:-->
                  <obj:price></obj:price>
                  <!--Optional:-->
                  <obj:quantity></obj:quantity>
                  <!--Optional:-->
                  <obj:comment></obj:comment>
                  <!--Optional:-->
                  <obj:category></obj:category>
                  <!--Optional:-->
                  <obj:brand></obj:brand>
                  <!--Optional:-->
                  <obj:subcategory1></obj:subcategory1>
                  <!--Optional:-->
                  <obj:subcategory2></obj:subcategory2>
                  <!--Optional:-->
                  <obj:additionalData></obj:additionalData>
                  <!--Optional:-->
                  <obj:taxRate></obj:taxRate>
               </obj:details>
            </obj:details>
            <obj:deliveryTime>1</obj:deliveryTime>
            <obj:deliveryMode>1</obj:deliveryMode>
            <obj:deliveryExpectedDate>31/12/2017</obj:deliveryExpectedDate>
            <obj:deliveryExpectedDelay>66</obj:deliveryExpectedDelay>
            <!--Optional:-->
            <obj:deliveryCharge></obj:deliveryCharge>
         </impl:order>
         <impl:privateDataList>
            <obj:privateData>
               <obj:key>OrderSaleChannel</obj:key>
               <obj:value>DESKTOP</obj:value>
            </obj:privateData>
            <obj:privateData>
               <obj:key>CustomerBirthZipCode</obj:key>
               <obj:value>12345</obj:value>
            </obj:privateData>
            <obj:privateData>
               <obj:key>CustomerMaidenName</obj:key>
               <obj:value>Bob</obj:value>
            </obj:privateData>
         </impl:privateDataList>
         <impl:buyer>
            <obj:title>1</obj:title>
            <obj:lastName>Bouvier</obj:lastName>
            <obj:firstName>C</obj:firstName>
            <obj:email>test@gmail.com</obj:email>
            <obj:shippingAdress>
               <!--Optional:-->
               <obj:title>1</obj:title>
               <!--Optional:-->
               <obj:name>Bouvier</obj:name>
               <!--Optional:-->
               <obj:firstName>Charlelie</obj:firstName>
               <!--Optional:-->
               <obj:lastName>B</obj:lastName>
               <!--Optional:-->
               <obj:street1>SArue de marseille</obj:street1>
               <!--Optional:-->
               <obj:street2>SAstreet2</obj:street2>
               <!--Optional:-->
               <obj:cityName>Aix</obj:cityName>
               <!--Optional:-->
               <obj:zipCode>13390</obj:zipCode>
               <!--Optional:-->
               <obj:country>FR</obj:country>
               <!--Optional:-->
               <obj:phone>0600000000</obj:phone>
               <!--Optional:-->
               <obj:state>FRANCE</obj:state>
               <!--Optional:-->
               <obj:county>france</obj:county>
               <!--Optional:-->
               <obj:phoneType>1</obj:phoneType>
            </obj:shippingAdress>
            <obj:billingAddress>
               <obj:title>1</obj:title>
               <obj:name>Michel</obj:name>
               <obj:firstName>Eric</obj:firstName>
               <obj:lastName>M</obj:lastName>
               <obj:street1>rue de marseille</obj:street1>
               <obj:street2>street2</obj:street2>
               <obj:cityName>Marseille</obj:cityName>
               <obj:zipCode>13001</obj:zipCode>
               <obj:country>FR</obj:country>
               <obj:phone>0600000000</obj:phone>
               <obj:state>FRANCE</obj:state>
               <obj:county/>
               <obj:phoneType>6</obj:phoneType>
            </obj:billingAddress>
            <obj:accountCreateDate>10/10/01</obj:accountCreateDate>
            <obj:accountAverageAmount>1000</obj:accountAverageAmount>
            <obj:accountOrderCount>1</obj:accountOrderCount>
            <obj:walletId/>
            <obj:walletDisplayed/>
            <obj:walletSecured/>
            <obj:walletCardInd/>
            <obj:ip/>
            <obj:mobilePhone>0600000000</obj:mobilePhone>
            <obj:customerId>7777902</obj:customerId>
            <obj:legalStatus/>
            <obj:legalDocument/>
            <obj:birthDate>1990-12-20</obj:birthDate>
            <obj:deviceFingerprint/>
         </impl:buyer>
      </impl:isRegisteredRequest>
   </soapenv:Body>
</soapenv:Envelope>
Service isRegistered Response
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <isRegisteredResponse xmlns="http://impl.ws.payline.experian.com">
         <result>
            <code xmlns="http://obj.ws.payline.experian.com">02500</code>
            <shortMessage xmlns="http://obj.ws.payline.experian.com">ACCEPTED</shortMessage>
            <longMessage xmlns="http://obj.ws.payline.experian.com">Operation Successfull</longMessage>
         </result>
         <token>eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ7XCJzdGF0dXNJbmRleFwiOjAsXC
J0b3RhbEFtb3VudFwiOjEwMTU1LFwidG9rZW5TVFNcIjpcImM2ODdjMWMyLTUxZjctNDU0Zi1iN
jFiLWE0OGZlMWM3ZDVjOVwiLFwidG9rZW5TY29yaW5nXCI6XCJhYmY4MDMyNy0zZmNiLTQ1ODct
YjlmMC0xMjBiYWQwYzQ5YzFcIixcInBheW1lbnRTY2hlZHVsZXNcIjpbe1wiYW1vdW50XCI6MzM
4NSxcImRhdGVcIjoxNTExNDc4MDAwMDAwLFwicmFua1wiOjF9LHtcImFtb3VudFwiOjMzODUsXC
JkYXRlXCI6MTUxNDA3MDAwMDAwMCxcInJhbmtcIjoyfSx7XCJhbW91bnRcIjozMzg1LFwiZGF0Z
VwiOjE1MTY2NjIwMDAwMDAsXCJyYW5rXCI6M31dLFwibWVyY2hhbnRDdXN0b21lcklkXCI6XCI3
Nzc3OTAyXCJ9In0.i5EFRmfwK214DrQPvgHwc8SCJ-KfoYNjRSHlZC5lSWtJqmmTTZQdSDkRPXBgkB6YKStU0ancwnLng6HGR_ypkQ</token>
         <data>{"paymentSchedules":[{"amount":3385,"date":1511478000000,"rank":1}, 
 {"amount":3385,"date":1514070000000,"rank":2},
 {"amount":3385,"date":1516662000000,"rank":3}],"totalAmount":10155}</data>
      </isRegisteredResponse>
   </soapenv:Body>
</soapenv:Envelope>

2. Branchement du 3DS : verifyEnrollment

Service verifyEnrollment Request
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
  xmlns:impl="http://impl.ws.payline.experian.com" 
  xmlns:obj="http://obj.ws.payline.experian.com">
   <soapenv:Header/>
   <soapenv:Body>
      <impl:verifyEnrollmentRequest>
         <impl:version>17</impl:version>
         <impl:card>
            <!--Optional:-->
            <obj:encryptionKeyId></obj:encryptionKeyId>
            <!--Optional:-->
            <obj:encryptedData></obj:encryptedData>
            <!--Optional:-->
            <obj:number>5017670000001800</obj:number>
            <obj:type>MASTERCARD</obj:type>
            <!--Optional:-->
            <obj:expirationDate>1220</obj:expirationDate>
            <!--Optional:-->
            <obj:cvx>123</obj:cvx>
            <!--Optional:-->
            <obj:ownerBirthdayDate>1990-12-20</obj:ownerBirthdayDate>
            <!--Optional:-->
            <obj:password></obj:password>
            <!--Optional:-->
            <obj:cardPresent></obj:cardPresent>
            <!--Optional:-->
            <obj:cardholder></obj:cardholder>
            <!--Optional:-->
            <obj:token></obj:token>
         </impl:card>
         <impl:payment>
            <obj:amount>10000</obj:amount>
            <obj:currency>978</obj:currency>
            <obj:action>101</obj:action>
            <obj:mode>CPT</obj:mode>
            <obj:contractNumber>CAS_3XCB_3DS</obj:contractNumber>
            <!--Optional:-->
            <obj:differedActionDate></obj:differedActionDate>
            <!--Optional:-->
            <obj:method></obj:method>
            <obj:softDescriptor></obj:softDescriptor>
            <!--Optional:-->
            <obj:cardBrand>MASTERCARD</obj:cardBrand>
            <obj:registrationToken>eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ7XCJzdGF0dXN
JbmRleFwiOjAsXCJ0b3RhbEFtb3VudFwiOjEwMTU1LFwidG9rZW5TVFNcIjpcIjM2NmM0YmI0LWJhMj
EtNGUzMi1iOWRjLTU3M2E0MGZhMTJmYVwiLFwidG9rZW5TY29yaW5nXCI6XCJkYWI1ODA4OS0xYWFjL
TQ5ODgtOGZjZS1jYzA2MDU0NjkwYzNcIixcInBheW1lbnRTY2hlZHVsZXNcIjpbe1wiYW1vdW50XCI6
MzM4NSxcImRhdGVcIjoxNTExMzkxNjAwMDAwLFwicmFua1wiOjF9LHtcImFtb3VudFwiOjMzODUsXCJ
kYXRlXCI6MTUxMzk4MzYwMDAwMCxcInJhbmtcIjoyfSx7XCJhbW91bnRcIjozMzg1LFwiZGF0ZVwiOj
E1MTY1NzU2MDAwMDAsXCJyYW5rXCI6M31dLFwibWVyY2hhbnRDdXN0b21lcklkXCI6XCI3Nzc3OTAyX
CJ9In0.3gIXWt8iwgbzMz_-4QRhmZd-mM6IeuSdSc4DCrRoiAXTQpK3RcnTB_zPJgCyrc141j2i_UgO
69YNuHTGfOnQ</obj:registrationToken>
         </impl:payment>
         <impl:orderRef>cas_test_004</impl:orderRef>
         <impl:mdFieldValue></impl:mdFieldValue>
         <impl:userAgent></impl:userAgent>
         <impl:walletId></impl:walletId>
         <impl:walletCardInd></impl:walletCardInd>
         <!--Optional:-->
         <impl:generateVirtualCvx>true</impl:generateVirtualCvx>
         <impl:returnURL>http://www.concupourvendre.com/notif/notif.php</impl:returnURL>
      </impl:verifyEnrollmentRequest>
   </soapenv:Body>
</soapenv:Envelope>
Service verifyEnrollment Response
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <verifyEnrollmentResponse xmlns="http://impl.ws.payline.experian.com">
         <result>
            <code xmlns="http://obj.ws.payline.experian.com">00000</code>
            <shortMessage xmlns="http://obj.ws.payline.experian.com">ACCEPTED</shortMessage>
            <longMessage xmlns="http://obj.ws.payline.experian.com">Transaction approved</longMessage>
         </result>
         <actionUrl>https://3doffice.test.sips-atos.com/3doffice/prod/call_acs;jsessionid=PiLTP+yg1aJcIg03WbIEcDFz.3doffice11v</actionUrl>
         <actionMethod>Get</actionMethod>
         <pareqFieldName xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
         <pareqFieldValue xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
         <termUrlName xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
         <termUrlValue xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
         <mdFieldName xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
         <mdFieldValue xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
         <token/>
      </verifyEnrollmentResponse>
   </soapenv:Body>
</soapenv:Envelope>

3. Branchement de la demande d'autorisation : doAuthorization

Service doAuthorization Request
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
                  xmlns:impl="http://impl.ws.payline.experian.com" 
                  xmlns:obj="http://obj.ws.payline.experian.com">
   <soapenv:Header/>
   <soapenv:Body>
      <impl:doAuthorizationRequest>
         <impl:version>17</impl:version>
         <impl:payment>
            <obj:amount>10000</obj:amount>
            <obj:currency>978</obj:currency>
            <obj:action>100</obj:action>
            <obj:mode>CPT</obj:mode>
            <obj:contractNumber>CASINO_3XCB</obj:contractNumber>
            <!--Optional:-->
            <obj:differedActionDate></obj:differedActionDate>
            <!--Optional:-->
            <obj:method></obj:method>
            <obj:softDescriptor></obj:softDescriptor>
            <!--Optional:-->
            <obj:cardBrand></obj:cardBrand>        
            <obj:registrationToken>eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ7XCJzdGF0dXNJ
bmRleFwiOjAsXCJ0b3RhbEFtb3VudFwiOjEwMTU1LFwidG9rZW5TVFNcIjpcImI5NTNiM
jA1LTg2ZjctNDI0Yi04ZjAyLWMyMGJhMTI1YjdhM1wiLFwidG9rZW5TY29yaW5nXCI6XC
JlMjQ5OTk4Ny1jYzQ1LTQ3ZmMtYjYzMi02ZGFkODRlODcwYjhcIixcInBheW1lbnRTY2h
lZHVsZXNcIjpbe1wiYW1vdW50XCI6MzM4NSxcImRhdGVcIjoxNTExNzM3MjAwMDAwLFwi
cmFua1wiOjF9LHtcImFtb3VudFwiOjMzODUsXCJkYXRlXCI6MTUxNDMyOTIwMDAwMCxcI
nJhbmtcIjoyfSx7XCJhbW91bnRcIjozMzg1LFwiZGF0ZVwiOjE1MTY5MjEyMDAwMDAsXC
JyYW5rXCI6M31dLFwibWVyY2hhbnRDdXN0b21lcklkXCI6XCI3Nzc3OTAyXCJ9In0.bqo
DO4yI1FVpMlwIlSUzHj60ECB8jEQByK6EWbTk48c5rf6EKKtt_fDEB69Fgl6fnhhbYyFV
2-48FfcFqz0Pbw</obj:registrationToken>
         </impl:payment>
         <impl:card>
            <!--Optional:-->
            <obj:encryptionKeyId></obj:encryptionKeyId>
            <!--Optional:-->
            <obj:encryptedData></obj:encryptedData>
            <!--Optional:-->
            <obj:number>5017670000001800</obj:number>
            <obj:type>MASTERCARD</obj:type>
            <!--Optional:-->
            <obj:expirationDate>1220</obj:expirationDate>
            <!--Optional:-->
            <obj:cvx>000</obj:cvx>
            <!--Optional:-->
            <obj:ownerBirthdayDate></obj:ownerBirthdayDate>
            <!--Optional:-->
            <obj:password></obj:password>
            <!--Optional:-->
            <obj:cardPresent></obj:cardPresent>
            <!--Optional:-->
            <obj:cardholder>BOUVIER Charlelie</obj:cardholder>
            <!--Optional:-->
            <obj:token></obj:token>
         </impl:card>
         <impl:order>
            <obj:ref>cas_test_016</obj:ref>
            <!--Optional:-->
            <obj:origin></obj:origin>
            <!--Optional:-->
            <obj:country>FR</obj:country>
            <!--Optional:-->
            <obj:taxes></obj:taxes>
            <obj:amount>10000</obj:amount>
            <obj:currency>978</obj:currency>
            <obj:date>08/11/2017 16:45</obj:date>
            <!--Optional:-->
            <obj:details>
            </obj:details>
            <!--Optional:-->
            <obj:deliveryTime></obj:deliveryTime>
            <!--Optional:-->
            <obj:deliveryMode>2</obj:deliveryMode>
            <!--Optional:-->
            <obj:deliveryExpectedDate></obj:deliveryExpectedDate>
            <!--Optional:-->
            <obj:deliveryExpectedDelay></obj:deliveryExpectedDelay>
         </impl:order>
         <impl:buyer>
            <obj:title>12</obj:title>
            <obj:lastName>Bouvier</obj:lastName>
            <obj:firstName>Charlelie</obj:firstName>
            <obj:email>bouvier.charlelie@gmail.com</obj:email>
            <obj:shippingAdress>
               <!--Optional:-->
               <obj:title>12</obj:title>
               <!--Optional:-->
               <obj:name>Bouvier</obj:name>
               <!--Optional:-->
               <obj:firstName>Charlelie</obj:firstName>
               <!--Optional:-->
               <obj:lastName>Bouvier</obj:lastName>
               <!--Optional:-->
               <obj:street1>SArue de marseille</obj:street1>
               <!--Optional:-->
               <obj:street2>SAstreet2</obj:street2>
               <!--Optional:-->
               <obj:cityName>Aix</obj:cityName>
               <!--Optional:-->
               <obj:zipCode>13390</obj:zipCode>
               <!--Optional:-->
               <obj:country>FR</obj:country>
               <!--Optional:-->
               <obj:phone>0600000000</obj:phone>
               <!--Optional:-->
               <obj:state>FRANCE</obj:state>
               <!--Optional:-->
               <obj:county>france</obj:county>
               <!--Optional:-->
               <obj:phoneType>1</obj:phoneType>
            </obj:shippingAdress>
            <obj:billingAddress>
               <obj:title>12</obj:title>
               <obj:name>MichelB</obj:name>
               <obj:firstName>EricB</obj:firstName>
               <obj:lastName>MICHELLB</obj:lastName>
               <obj:street1>BArue de marseille</obj:street1>
               <obj:street2>BAstreet2</obj:street2>
               <obj:cityName>Marseille</obj:cityName>
               <obj:zipCode>13013</obj:zipCode>
               <obj:country>FR</obj:country>
               <obj:phone>0600000000</obj:phone>
               <obj:state>FRANCE</obj:state>
               <obj:county/>
               <obj:phoneType>6</obj:phoneType>
            </obj:billingAddress>
            <obj:accountCreateDate>10/10/01</obj:accountCreateDate>
            <obj:accountAverageAmount>1000</obj:accountAverageAmount>
            <obj:accountOrderCount>1</obj:accountOrderCount>
            <obj:walletId/>
            <obj:walletDisplayed/>
            <obj:walletSecured/>
            <obj:walletCardInd/>
            <obj:ip/>
            <obj:mobilePhone>0600000000</obj:mobilePhone>
            <obj:customerId>7777902</obj:customerId>
            <obj:legalStatus/>
            <obj:legalDocument/>
            <obj:birthDate>1991-06-29</obj:birthDate>
            <obj:deviceFingerprint/>
         </impl:buyer>
         <impl:privateDataList>
            <!--0 to 100 repetitions:-->
            <obj:privateData>
               <obj:key>A</obj:key>
               <obj:value>A</obj:value>
            </obj:privateData>
         </impl:privateDataList>
         <impl:authentication3DSecure>
         </impl:authentication3DSecure>
         <impl:media></impl:media>
      </impl:doAuthorizationRequest>
   </soapenv:Body>
</soapenv:Envelope>
Service doAuthorization Response
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <doAuthorizationResponse xmlns="http://impl.ws.payline.experian.com">
         <result>
            <code xmlns="http://obj.ws.payline.experian.com">00000</code>
            <shortMessage xmlns="http://obj.ws.payline.experian.com">ACCEPTED</shortMessage>
            <longMessage xmlns="http://obj.ws.payline.experian.com">Transaction approved</longMessage>
         </result>
         <transaction>
            <id xmlns="http://obj.ws.payline.experian.com">CAS1711271108524303</id>
            <date xmlns="http://obj.ws.payline.experian.com">27/11/17 11:09:01</date>
            <isDuplicated xsi:nil="true" xmlns="http://obj.ws.payline.experian.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
            <isPossibleFraud xsi:nil="true" xmlns="http://obj.ws.payline.experian.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
            <fraudResult xsi:nil="true" xmlns="http://obj.ws.payline.experian.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
            <explanation xsi:nil="true" xmlns="http://obj.ws.payline.experian.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
            <threeDSecure xmlns="http://obj.ws.payline.experian.com">N</threeDSecure>
            <score xsi:nil="true" xmlns="http://obj.ws.payline.experian.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
         </transaction>
         <authorization>
            <number xmlns="http://obj.ws.payline.experian.com"/>
            <date xmlns="http://obj.ws.payline.experian.com">27/11/17 11:09:01</date>
         </authorization>
         <card>
            <number xmlns="http://obj.ws.payline.experian.com">501767XXXXXX1800</number>
            <type xmlns="http://obj.ws.payline.experian.com">CASINO_3XCB</type>
            <expirationDate xmlns="http://obj.ws.payline.experian.com">1220</expirationDate>
            <token xmlns="http://obj.ws.payline.experian.com"/>
         </card>
         <extendedCard>
            <country xmlns="http://obj.ws.payline.experian.com"/>
            <isCvd xmlns="http://obj.ws.payline.experian.com">N</isCvd>
            <bank xmlns="http://obj.ws.payline.experian.com"/>
            <type xmlns="http://obj.ws.payline.experian.com">MASTERCARD</type>
            <network xmlns="http://obj.ws.payline.experian.com">MASTERCARD</network>
         </extendedCard>
         <contractNumber/>
      </doAuthorizationResponse>
   </soapenv:Body>
</soapenv:Envelope>

Comment configurer votre compte ?

Vous devez vous rapprocher de votre responsable de compte Casino pour obtenir les informations nécessaires permettant de configurer votre compte sur Payline (Identifiants du compte et  mot de passe). 
Vous pouvez procéder au paramétrage dans votre compte marchand Payline en indiquant l’ID Marchand et le nom de l’alias du contrat partenaire à créer.
Vous devez réaliser des transactions tests pour valider le bon fonctionnement en production.


Afin de créer un moyen de paiement 3x4x Casino sur Payline, en homologation et en poduction, rendez-vous sur le centre d’administration dans l’onglet « Configuration » puis « Vos moyens de paiement ». Un écran de recherche s’affiche, cliquez sur le bouton « Nouveau moyen de paiement ».

Ecran de création de moyen de paiement  1/2:

Sélectionnez votre point de vente puis le type de moyen de paiement "Casino".

Cliquez ensuite sur le bouton « Suivant ».

Ecran de création de moyen de paiement  2/2:

Renseigner un libellé de votre choix par exemple "Casino", un numéro de contrat et un numéro de banque transmis par Casino puis sélectionner votre devise. Cliquez sur le statut « Actif » et n'activez pas le rejeu de la transaction ni la collecte du titulaire de la carte bancaire sans demande de l'équipe Support Payline. Renseignez ensuite vos informations bancaires.


Pour ces deux moyens de paiement, il est indispensable de renseigner 4 informations :

  • Identifiant STS
  • Mot de passe STS
  • Identifiant commerçant
  • Identifiant site commerçant
  • Si le contrat souscrit est un contrat 3DS ou non


REMARQUE Ces données sont fournies aux commerçants par Banque CASINO.


Les données obligatoires pour utiliser ce moyen de paiement.

En complément des données obligatoires pour obtenir un paiement, vous devez transmettre les données obligatoires suivantes :

  • Order.country : FR (= FRANCE)
  • Order.deliveryMode : voir valeurs possibles
  • Order.Amount et Payment.Amount

    • Order.Amount 

    • Payment.Amount 

  • Buyer.title : voir valeurs possibles
  • Buyer.lastname
  • Buyer.firstname
  • Buyer.email
  • Buyer.birthDate
  • Buyer.phoneType : voir valeurs possibles.
  • Buyer.phone
  • Buyer.billingAdress.title : voir valeurs possibles
  • Buyer.billingAdress.lastname
  • Buyer.billingAdress.firstname
  • Buyer.billingAdress.street1
  • Buyer.billingAdress.city
  • Buyer.billingAdress.zipcode
  • Buyer.billingAdress.country
  • PrivateData

    Liste des PrivateData
    Key Value Valeurs possibles
    OrderSaleChannel

    Canal de vente

    Obligatoire.

    DESKTOP
    TABLET
    TABLET_IPAD
    SMARTPHONE
    SMARTPHONE_ANDROID
    SMARTPHONE_IPHONE

    CustomerBirthZipCode

    Code postal de la ville de naissance (1 ou 4 caractères refusés).

    Facultatif : si non renseigné, Payline collectera cette information dans le formulaire

    99 : si étranger
    972 : pour la Martinique
    06000 pour Nice et non 6000

    CustomerMaidenName

    Nom de jeune fille

    Facultatif : si non renseigné, Payline collectera cette information dans le formulaire


    OrderTag

    Valeur du Tag de la commande (champ libre).

    Facultatif.



Transmission des données clients

Pour transmettre les données 3DS, OTA, champs libre et historique, vous devez utiliser la balise <miscData></miscData> du doWebPayment en version 18 ou supérieure. Cette balise prend en compte un object JSON formaté qui sera retransmis à Casino.
Les données OTA doivent être référencées par le numéro de contrat auquel elles font référence. Ces données sont facultatives.

Les balises <![CDATA[ ... ]]> ne sont pas obligatoires.

Le numéro de contrat contenu dans le JSON doit être un numéro de contrat présent dans les balises selectedContractList ou secondSelectedContractList du service doWebPayment appelé. S'ils ne sont pas non présent une erreur 'Invalid contractNumber' est levée avec le code retour 02303.

Le JSON doit être bien formaté de la manière suivante : 

  • { "ContractNUMBER""Contenu JSON ..." }

avec { "CASINO_3XCB" : "{'optionalTravelDetails':{...}"'additionalNumericFieldList':{...}" , 'additionalTextFieldList':{...}" ,  'MerchantCustomerHistory':{...}" , }

Les données contenues dans le JSON correspondent aux données du service Score de Casino :

  • optionalTravelDetails
  • additionalNumericFieldList
  • additionalTextFieldList
  • MerchantCustomerHistory :
Champs Description Format
CanceledOrderAmount Montant total en centimes des commandes annulées durant les 2 dernières années Integer
CanceledOrderCount Nombre de commandes effectuées puis annulées par le client durant les 2 dernières années Integer
FirstOrderDate Date de la première commande du client Format AAAA-MM-JJ DateTime
FraudAlertCount Nombre d’alertes de fraude concernant les commandes du client durant les 2 dernières années Integer
LastOrderDate Date de la dernière commande du client Format AAAA-MM-JJ DateTime
PaymentIncidentCount Nombre d’incidents de paiement concernant les commandes du client durant les 2 dernières années Integer
RefusedManyTimesOrderCount Nombre de commandes dont le paiement en plusieurs fois a été refusé au cours des 2 dernières années Integer
UnvalidatedOrderCount Nombre de commandes refusées dans la phase de validation au cours des 2 dernières années Integer
ValidatedOneTimeOrderCount Nombre de commandes ayant été réglées en 1 fois au cours des 2 dernières années Integer
ValidatedOrderCount Nombre de commandes validées ces 2 dernières années. Integer


Données miscData


Balise miscData
<impl:miscData>
    <![CDATA[
        { "CASINO_3XCB": "{'optionalTravelDetails':
                                {'class':'First',
                                 'departureDate':'2014-10-05T08:43:00',
                                 'destinationCountry':'GN',
                                 'insurance':'SIMPLE',
                                 'mainDepartureCompany':'Luftansa',
                                 'ownTicket':false,
                                 'ticketCount':1,
                                 'travellerCount':2,
                                 'travellerPassportList':[{'expirationDate':'2018-12-31T08:45:00','issuanceCountry':'FR'},
                                                          {'expirationDate':'2019-01-01T08:45:00','issuanceCountry':'DE'}],
                                 'type':'TwoWay'
                                },
                            'additionalNumericFieldList':[{'index':'1', 'value':'10'},
                                                          {'index':'2', 'value':'20'}],
                            'additionalTextFieldList':[{'index':'11', 'value':'val11'},
                                                       {'index':'22', 'value':'val22'}],
                            'MerchantCustomerHistory':{'CanceledOrderAmount':'1000', 
                                                       'CanceledOrderCount':'900', 
                                                       'FirstOrderDate':'2016-12-31T08:45:00', 
                                                       'FraudAlertCount':'0', 
                                                       'LastOrderDate':'2017-12-29T11:14:00'}
                          }"
        }
      ]]>
</impl:miscData>

Comment réaliser des tests ?

Vous devez demander un compte de test ainsi que des cartes de test à Banque Casino.

Carte de test

Pour pouvoir faire des tests sur l'API, vous pouvez utiliser la carte de test ci-dessous :

Numéro 5017670000001800
CVV 000
Date d'expiration > à la dernière échéance

Les codes de retour

Payline vous informe du résultat d'un paiement via le code retour des messages « getWebPaymentDetails » et « getTransactionDetails ».
Lorsque le paiement est accepté, Payline renvoie le statut ACCEPTED et le code retour à « 00000 ».

Pour un paiement refusé, le statut est REFUSED et le code varie en fonction du motif de refus (Par exemple : 04xxx pour une suspicion de fraude).

Les codes spécifiques au moyen de paiement
État de la transaction Code partenaire
Statut – code - Motif

autorisation réussi

0

ACCEPTED – 00000 – Transaction accepted

Refus - requête invalide

1

REFUSED – 02020 - Transaction refused by partner

Refus - autorisation refusée par la banque

2

REFUSED – 02020 - Transaction refused by partner

Échec technique

3

ERROR – 02106 - Payment partner error

En attente

4

ONHOLD_PARTNER – 02005 - Transaction in progress, please wait for payment status

État indéterminé

5

ERROR – 02106 - Payment partner error

Annulé

6

CANCELLED – 02319 - Transaction cancelled by user


Exemples de trame

Paiement
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
        xmlns:impl="http://impl.ws.payline.experian.com" 
        xmlns:obj="http://obj.ws.payline.experian.com">
   <soapenv:Header/>
   <soapenv:Body>
      <impl:doWebPaymentRequest>
         <impl:version>15</impl:version>
         <impl:payment>
            <obj:amount>10000</obj:amount>
            <obj:currency>978</obj:currency>
            <obj:action>101</obj:action>
            <obj:mode>CPT</obj:mode>
            <obj:contractNumber>CASINO_3XCB</obj:contractNumber>
         </impl:payment>
         <impl:returnURL>https://www.payline.com</impl:returnURL>
         <impl:cancelURL>https://www.payline.com</impl:cancelURL>
         <impl:order>
            <obj:ref>Casinon_1</obj:ref>
            <obj:origin>10</obj:origin>
            <obj:country>FR</obj:country>
            <obj:taxes/>
            <obj:amount>10000</obj:amount>
            <obj:currency>978</obj:currency>
            <obj:date>28/08/2015 17:27</obj:date>
            <obj:details>
               <obj:details>
                  <obj:ref>1</obj:ref>
                  <obj:price>50000</obj:price>
                  <obj:quantity>1</obj:quantity>
                  <obj:comment>comment</obj:comment>
               </obj:details>
            </obj:details>
            <obj:deliveryTime>1</obj:deliveryTime>
            <obj:deliveryMode>1</obj:deliveryMode>
            <obj:deliveryExpectedDate>31/12/2018</obj:deliveryExpectedDate>
            <obj:deliveryExpectedDelay>66</obj:deliveryExpectedDelay>
         </impl:order>
         <impl:notificationURL>http://www.payline.com/notif/notif.php</impl:notificationURL>
         <impl:selectedContractList>
            <obj:selectedContract>CASINO_3XCB</obj:selectedContract>
            <obj:selectedContract>CASINO_4XCB</obj:selectedContract>
         </impl:selectedContractList>
         <impl:secondSelectedContractList>
            <!--1 to 25 repetitions:-->
            <obj:selectedContract/>
         </impl:secondSelectedContractList>
         <impl:privateDataList>
            <obj:privateData>
               <obj:key>OrderSaleChannel</obj:key>
               <obj:value>DESKTOP</obj:value>
            </obj:privateData>
            <obj:privateData>
               <obj:key>CustomerBirthZipCode</obj:key>
               <obj:value>12345</obj:value>
            </obj:privateData>
            <obj:privateData>
               <obj:key>CustomerMaidenName</obj:key>
               <obj:value>Bob</obj:value>
            </obj:privateData>
         </impl:privateDataList>
         <impl:languageCode>fr</impl:languageCode>
         <impl:customPaymentPageCode/>
         <impl:buyer>
            <obj:title>Mr</obj:title>
            <obj:lastName>Payline</obj:lastName>
            <obj:firstName>Rodolphe</obj:firstName>
            <obj:email>test@payilne.com</obj:email>
            <obj:shippingAdress>
               <!--Optional:-->
               <obj:title>Mr</obj:title>
               <!--Optional:-->
               <obj:name>Payline</obj:name>
               <!--Optional:-->
               <obj:firstName>Rodolphe</obj:firstName>
               <!--Optional:-->
               <obj:lastName>Dupont</obj:lastName>
               <!--Optional:-->
               <obj:street1>260 rue Claude Nicolas Ledoux</obj:street1>
               <!--Optional:-->
               <obj:street2></obj:street2>
               <!--Optional:-->
               <obj:cityName>Aix</obj:cityName>
               <!--Optional:-->
               <obj:zipCode>13390</obj:zipCode>
               <!--Optional:-->
               <obj:country>FR</obj:country>
               <!--Optional:-->
               <obj:phone>0600000000</obj:phone>
               <!--Optional:-->
               <obj:state>FRANCE</obj:state>
               <!--Optional:-->
               <obj:county>france</obj:county>
               <!--Optional:-->
               <obj:phoneType>PhoneNumber</obj:phoneType>
            </obj:shippingAdress>
            <obj:billingAddress>
               <!--Optional:-->
               <obj:title>Mr</obj:title>
               <!--Optional:-->
               <obj:name>PaylineBilling</obj:name>
               <!--Optional:-->
               <obj:firstName>Eric</obj:firstName>
               <!--Optional:-->
               <obj:lastName>Dupont</obj:lastName>
               <!--Optional:-->
               <obj:street1>261 rue claude Nicolas Ledoux</obj:street1>
               <!--Optional:-->
               <obj:street2></obj:street2>
               <!--Optional:-->
               <obj:cityName>Aix</obj:cityName>
               <!--Optional:-->
               <obj:zipCode>13390</obj:zipCode>
               <!--Optional:-->
               <obj:country>FR</obj:country>
               <!--Optional:-->
               <obj:phone>0600000000</obj:phone>
               <!--Optional:-->
               <obj:state>FRANCE</obj:state>
               <!--Optional:-->
               <obj:county/>
               <!--Optional:-->
               <obj:phoneType>CellPhoneNumber2</obj:phoneType>
            </obj:billingAddress>
            <obj:accountCreateDate>10/10/01</obj:accountCreateDate>
            <obj:accountAverageAmount>1000</obj:accountAverageAmount>
            <obj:accountOrderCount>1</obj:accountOrderCount>
            <obj:walletId/>
            <obj:walletDisplayed/>
            <obj:walletSecured/>
            <obj:walletCardInd/>
            <obj:ip/>
            <obj:mobilePhone>0600000000</obj:mobilePhone>
            <obj:customerId>7777902</obj:customerId>
            <obj:legalStatus/>
            <obj:legalDocument/>
            <obj:birthDate>1991-06-29</obj:birthDate>
            <obj:deviceFingerprint/>
         </impl:buyer>
         <!--<impl:owner>
            <obj:lastName>?</obj:lastName>
            <obj:firstName>?</obj:firstName>
            <obj:billingAddress>
               <obj:street>?</obj:street>
               <obj:cityName>?</obj:cityName>
               <obj:zipCode>?</obj:zipCode>
               <obj:country>?</obj:country>
               <obj:phone>?</obj:phone>
            </obj:billingAddress>
            <obj:issueCardDate>?</obj:issueCardDate>
         </impl:owner>-->
         <impl:securityMode>SSL</impl:securityMode>
         <impl:customPaymentTemplateURL/>
         <impl:contractNumberWalletList/>
         <impl:miscData> <![CDATA[{ "CASINO_3XCB": "{'optionalTravelDetails' 
{'class':'First', 'departureDate':'2014-10-05T08:43:00', 'destinationCountry':'GN','insurance':'SIMPLE', 
'mainDepartureCompany':'Luftansa', 'ownTicket':false, 'ticketCount':1, 'travellerCount':2, 'travellerPassportList':
[{'expirationDate':'2018-12-31T08:45:00', 'issuanceCountry':'FR'}, {'expirationDate':'2019-01-01T08:45:00', 'issuanceCountry':'DE'}], 'type':'TwoWay'}, 
'additionalNumericFieldList':[{'index':'1', 'value':'10'}, {'index':'2', 'value':'20'}], 
'additionalTextFieldList':[{'index':'11', 'value':'val11'}, {'index':'22', 'value':'val22'}]}" } ]]>
</impl:miscData>
      </impl:doWebPaymentRequest>
   </soapenv:Body>
</soapenv:Envelope>
Remboursement
<impl:doRefundRequest>
         <impl:version>15</impl:version>
         <impl:transactionID>171101425XXXX</impl:transactionID>
         <impl:payment>
            <obj:amount>1000</obj:amount>
            <obj:currency>978</obj:currency>
            <obj:action>421</obj:action>
            <obj:mode>CPT</obj:mode>
            <obj:contractNumber>CASINO_3XCB</obj:contractNumber>
         </impl:payment>
         <impl:comment>Test</impl:comment>
         <impl:privateDataList>
         </impl:privateDataList>
</impl:doRefundRequest>














Vous avez d’autres questions ? Envoyer une demande

Commentaires

Réalisé par Zendesk