Arborescence des pages

Vous regardez une version antérieure (v. /display/DT/DP+-+Utilisateur+du+3DSecure+en+mode+direct) de cette page.

afficher les différences afficher l'historique de la page

« Afficher la version précédente Vous regardez la version actuelle de cette page. (v. 9) afficher la version suivante »

Contenu



Introduction

Pré-requis bancaire et de connexion 3DSecure

Ce programme repose sur la mise en place d'un contrôle supplémentaire lors d'un achat en ligne : en complément des données bancaires, l'acheteur validera son paiement en saisissant une donnée secrète que lui aura fourni sa banque.
Ce dispositif s'accompagne d'une évolution réglementaire appelée "liability shift" ou "transfert de responsabilité" dont le principe est de faire supporter le risque d'impayé émis pour contestation du porteur à la banque du porteur et non plus au commerçant, si le porteur a validé son paiement en renseignant les données 3D Secure et que le commerçant a respecté les mesures de sécurité énoncées dans les conditions générales de vente de son contrat de commerce électronique souscrit auprès de sa banque.
La solution de paiement Payline a déroulé une certification 3DSecure avec les banques, ainsi qu'avec Visa et MCI.

Souscription 

Le commerçant doit souscrire auprès de sa banque à un contrat VADS.
Le commerçant informe Payline qu'il a souscrit à un contrat VADS avec 3DSecure, et le client souhaite souscrire à l'option 3DSecure.
L'équipe Payline, doit procéder à l'enregistrement du commerçant auprès de Visa et MCI, « un délai de 10 jours est nécessaire »
Dès confirmation des réseaux Visa et MCI, l'équipe Payline informe le client qu'il va procéder à l'activation du contrat VADS.
Dès activation du contrat VADS, tous les flux transitant sur ce contrat seront des transactions 3DS.

Pre-requis d'utilisation de la solution de paiement Payline

La solution 3D Secure en mode interface Direct assure le transfert sécurisé des données sensibles et traite les demandes d'authentification, d'autorisation. Un point d'intégration supplémentaire (verifyEnrollment) est nécessaire pour assurer l'authentification, en plus du point d'intégration réalisant l'autorisation et (doAuthorization) et récupérant le résultat de la transaction (gettransactionDetails).
Avant de pouvoir utiliser les « webservice » VerifyEnrolment et doAuthorization de Payline, les informations nécessaires à votre authentification et à la mise en œuvre du flux HTTPS sécurisé par SSL V3 sont requises. De plus, un point de vente et un contrat doivent être correctement configurés sur le centre d'administration Payline. Si vous n'avez pas de point de vente, ni de contrat configuré sur le centre d'administration, vous devez vous rendre sur le centre d'administration Payline : https://homologation-admin.payline.com.

Les informations suivantes sont les données indispensables à l'utilisation des « webservice » verifyEnrolment et doAuthorization :

  • L'identifiant commerçant : MerchantID
  • La clé d'accès au service Payline : Accesskey


Lorsque vous réalisez des appels aux services web Payline, l'identifiant de compte commerçant (Merchand ID) et la clé d'accès (Merchant Access Key) doivent être obligatoirement présentés pour réaliser une authentification http. Les appels web services ne seront pas acceptés s'ils ne sont pas correctement authentifiés.

La méthode d'authentification utilisée s'appelle http Basic Authentification. Si l'identifiant de compte commerçant est 1234567890 et votre clé d'accès est DJMESHXYou6LmjQFdH, vous devez encoder en base64 la valeur de
1234567890:DJMESHXYou6LmjQFdH. La chaîne obtenue est à ajouter à l'entête HTTP comme dans l'exemple ci-dessous :
Authorization : Basic MTIzNDU2Nzg5MdpESk1FU0hYWW91NkxtalFGZEg=
Ne communiquez jamais votre clé d'accès (Merchant Access Key) à une tierce personne.
Payline utilise votre clé d'accès pour vous identifier en tant qu'expéditeur de vos demandes de paiement.
Aucun interlocuteur chez Payline ne la connaît et ne vous demandera cette information.
L'utilisation d'iframe n'est pas compatible avec une utilisation optimale et sécuritaire de Payline.

Exemple

Dans l'entête du message HTTP, il est nécessaire de préciser la valeur du champ Authorization. Dans cet exemple, lavaleurduchamp'Authorization'estBasic MTExMTExMTExOkFGanU5WEhwbFF6dmFtZmZPNzJM.
Si l'on décode MTExMTExMTExOkFGanU5WEhwbFF6dmFtZmZPNzJM (qui est encodé en base64), nous obtenons la valeur suivante : 111111111:AFju9XHplQzvamffO72L (merchantID : AccessKey).L'ajout de la valeur authorization dans l'entête de la trame dépend de la technologie utilisée. Si vous utilisez un client web service, il est préférable d'opérer de la manière suivante :

 La variable login prend la valeur du merchantID 
 La variable password prend la valeur de l'accessKey
 //Construction de la requête verifyEnrolment avec les objets payment, card et orderRef
 $verifyEnrollmentRequest = array (
 'payment' => $this->payment($array['payment']),
 'card' => $this->card($array['card']),
 'orderRef' => $array['orderRef']
 );
 //Construction de l'entete du message public $header_soap;
 $this->header_soap = array();
 $this->header_soap['proxy_host'] = $this->proxy_host = PROXY_HOST;
 $this->header_soap['proxy_port'] = $this->proxy_port = PROXY_PORT;
 $this->header_soap['proxy_login'] = $this->proxy_login = PROXY_LOGIN;
 $this->header_soap['proxy_password'] = $this->proxy_password = PROXY_PASSWORD;
 $this->header_soap['login'] = $this->login = MERCHANT_ID;
 $this->header_soap['password'] = $this->password = ACCESS_KEY;
 $this->header_soap['style'] = SOAP_DOCUMENT;
 $this->header_soap['use'] = SOAP_LITERAL; 
 // Creation de l'instance SoapClient qui va permettre l'appel du WebService
 //Déclaration du endPoint ainsi que du header
 $client = new SoapClient('https://services.payline.com/V4/services/DirectPaymentAPI
 ', $this->header_soap); 
 //Appel du WebService
 $verifyEnrollmentResponse = $client->verifyEnrollment($verifyEnrollmentRequest); 


Si vous n'utilisez pas de client services web, il faut alors ajouter dans l'entête la valeur en brut comme dans l'impression écran : Authorization : Basic MTExMTExMTExOkFGanU5WEhwbFF6dmFtZmZPNzJM

3D-Secure en mode interface direct avec un paiement

Ce paragraphe présente les deux web services « verifyEnrollment et doAuthorization » permettant d'effectuer une transaction 3DSecure en utilisant le mode interface direct de la solution de paiement Payline.

Étape 1 : verifyEnrollment

Ce premier appel web service permet de vérifier l'éligibilité du porteur au dispositif 3DSecure, et donc de savoir si le porteur de la carte est bien enregistré auprès d'un Directory Server VISA ou Mastercard.
Voici un exemple de requête / réponse pour le web services verifyEnrollment :

verifyEnrollmentRequest

verifyEnrollmentResponse

<impl:verifyEnrollmentRequest>
<impl:card>
<obj:number>4970100000325734</obj:number>
<obj:type>CB</obj:type>
<obj:expirationDate>0912</obj:expirationDate>
<obj:cvx>123</obj:cvx>
</impl:card>
<impl:payment>
<obj:amount>4050</obj:amount>
<obj:currency>978</obj:currency>
<obj:action>100</obj:action>
<obj:mode>CPT</obj:mode>
<obj:contractNumber>CB3DS</obj:contractNumber>
</impl:payment>
<impl:orderRef>REF0923847</impl:orderRef>
</impl:verifyEnrollmentRequest>

<verifyEnrollmentResponse>
<result>
<code>03000</code>
<shortMessage>ACCEPTED</shortMessage>
<longMessage>Operation Successfull</longMessage>
</result> <actionUrl>

https://acs.modirum.com/mdpayacs/pareq

</actionUrl>
<actionMethod>POST</actionMethod>
<pareqFieldName>PaReq</pareqFieldName>
<pareqFieldValue>
eJxVkdtuwjAMhl+l4gGaA21ZkcnEOGhIYzAYQ9rNFFoPKq
ClScvh7ZeUMrbcxJ9jx/ZveN8oxP4co1KhgDFqLdfoJHGnw
XgrpM2QNQRMuzPMBRxR6SRLBXOpy4Hc0GSpaCPTQoCM
8qfRq2C86fkBkBphj2rUF+x6gFwRUrlH0e1NnRiPQCqCKCv
TQl0E9ymQG0CpdmJTFIc2IafTyV1n2XqH7rciGqUp/Zh3TM
TXKiuLJC9RA7EJQO59TUtraVPgnMRivPgMJkt/uNoO5Xzrl
5OBz5eDj5fZ8K0DxEZALAsUnJp2KQ8cGrY5a3tmosoPcm8
7E4PFzPGoa1utPXCwhbpX8Kh9+esBo7LCNLqIsPVg5rsR4
PmQpWgijKy/NsSoIzNGfd1n6D1bpaPCiNiklIdBJXXF9qfES
MY4DauvLACxGaTeIqmXbKx/y/8Ba4usNQ==
</pareqFieldValue>
<termUrlName>TermUrl</termUrlName>
<termUrlValue> </termUrlValue>
<mdFieldName>MD</mdFieldName>
<mdFieldValue>1Fz9nEnAZJNn8NvXEKDT</mdFieldValue>
</verifyEnrollmentResponse>


Une fois le verifyEnrollment effectué, l'authentification auprès du serveur ACS doit être effectuée. Pour cela, il est nécessaire d'envoyer les informations du verifyEnrollment sur le serveur d'authentification. Les informations attendues par le MPI sont le MD (pour le suivi de session) et le paReq (requête d'authentification).

Envoi des informations

Pour envoyer ces informations, il suffit de créer un formulaire HTML regroupant les champs MD et paReq et pointant vers le serveur d'authentification.
Exemple de formulaire HTML :

Formulaire HTML

<form name="downloadForm" action="https://acs.modirum.com/mdpayacs/pareq" method="POST">
<input type="hidden" name="TermUrl" value="http://127.0.0.1/3DSecure/receive_form.php">
PAREQ : <input type="text" name="PaReq">
<br />
MD : <input type="text" name="MD">
<br />
<input type="submit" name="submit" value="Submit">
</form>


Les informations devant être envoyées au serveur d'authentification à travers le formulaire ci-dessus :

  • MD : suivi de la session : valeur à récupérer dans la réponse du verifyEnrollment
  • PaReq : requête d'authentification : valeur à récupérer dans le verifyEnrollment
  • TermURL : adresse où le serveur d'authentification envoie la réponse de l'authentification. Concrètement cette adresse doit être capable de récupérer un formulaire envoyé en « POST » et contenant la réponse de l'authentification de l'utilisateur.

Réception des informations retournées lors de l'authentification :des informations

Le serveur d'authentification envoi son message sur l'URL renseignée dans le paramètre TermURL (envoyé dans le formulaire précédent). Dans le formulaire de réponse, deux champs doivent être récupérés pour poursuivre la transaction en mode 3DSecure :

  • Le champ MD : toujours le même champ permettant le suivi de la session
  • le champ PaRes : Payer Authentication Response : chaine de caractères cryptée contenant la réponse du serveur d'authentification. La valeur du champ PaRes va permettre de valider ou non la transaction comme une transaction 3DSecure.


Ces deux champs sont récupérés et permettent de compléter le doAuthorizationRequest en mode 3DSecure

Exemple de script (ici écrit en PHP) permettant de récupérer la réponse à l'authentification :

Script PHP : receive_form.php

<?php
$pares = $_POST['PaRes'];
$md = $_POST['MD'];

echo "MD : ".$md."<br />PARES : ".$pares;
?>


Remarque : ce script doit être placé sur un serveur web démarré et dans un dossier correspondant à l'adresse envoyé via le champ TermURL.
Exemple : si le serveur est en local il est tout à fait possible de mettre comme valeur :
TemrURL = http://127.0.0.1/3DSecure/receive_form.php

Étape 2 : doAuthorization avec les parametres 3DSecure

L'appel web service de la méthode doAuthorization permet d'effectuer directement la transaction avec les paramètres 3DSecure. Les paramètres renseignés : md / pares permettent de vérifier l'authentification et donc l'identité de l'utilisateur avant d'effectuer la transaction.

Si les paramètres sont corrects, la transaction est alors directement effectuée comme pour le doAuthorization classique.

doAuthorizationRequest

doAuthorizationResponse

<impl:doAuthorizationRequest>
<impl:payment>
<obj:amount>4150</obj:amount>
<obj:currency>978</obj:currency>
<obj:action>100</obj:action>
<obj:mode>CPT</obj:mode>
<obj:contractNumber>CB3DS</obj:contractNumber>
</impl:payment>
<impl:card>
<obj:number>4970105512345674</obj:number>
<obj:type>CB</obj:type>
<obj:expirationDate>0912</obj:expirationDate>
<obj:cvx>123</obj:cvx>
</impl:card>
<impl:order>
<obj:ref>REF023493</obj:ref>
<obj:country>FR</obj:country>
<obj:taxes>100</obj:taxes>
<obj:amount>1400</obj:amount>
<obj:currency>978</obj:currency>
<obj:date>28/01/2009 09:32</obj:date>
</impl:order>
<impl:buyer>
<obj:lastName>Dupond</obj:lastName>
<obj:firstName>Wilfried</obj:firstName>
<obj:email>wilfried.dupond@yahoo.fr</obj:email>
</impl:buyer>
<impl:authentication3DSecure>
<obj:md>xRtMifcy975D2EB3Zs8e</obj:md>
<obj:pares>
eJzFV2mTokoW/Ssd/T4a3ewKHZQq8LT8uWh9v0X8C9X
9dnSvZpwiZxtkQnR4/vcxQo0vM1a4/lI9R/BFjkEQryXL4
NU12Tb4MZVE1L1+PbVv/QJC+77/3xPfzNUWmgFEEZZ
k6R9fX0cle6U6nJcsH1bnKovDIruH7bTYMGmP5/2X9wl
2H14xxBT5b5PbbzFGVt8eCEo8aYT83umHcP/OLJ8Dvzb
YYYo8JPjlasmZySB7LnHxxTOXl6x8fSC1kadK0/86Mb7N
Dmzw2LW7JsXdOgDbKqGt0MWzXUzHgfeTiJHYyXt3Gvli
LP+N9W4D2XV0MrIQkUn+/iOLJrhOdX5t6je0MVLvrO6/
+UWyynOS9H7sYGAZ5U3lbmDcT3ZMMEcjDfJb20VXhTw
bWgWEOt2Ix04i1tmBAuFHx2aEgzgEtcaJzH8TLbsXbpj4r
…………
</obj:pares>
<obj:xid/>
<obj:eci/>
<obj:cavv/>
<obj:cavvAlgorithm/>
<obj:vadsResult/>
</impl:authentication3DSecure>
</impl:doAuthorizationRequest>

<doAuthorizationResponse>
<result>
<code>00000</code>
<shortMessage>ACCEPTED</shortMessage>
<longMessage>Transaction approved</longMessage>
</result>
<transaction>
<id>90217095220928</id>
<date>17/02/09 09:52</date>
<isDuplicated>0</isDuplicated>
<isPossibleFraud>0</isPossibleFraud>
<fraudResult/>
<explanation/>
<threeDSecure>Y</threeDSecure>
<score/>
</transaction>
<authorization>
<number>A55A</number>
<date>17/02/09 09:52</date>
</authorization>
</doAuthorizationResponse>


3D-Secure en mode interface direct avec la possibilité ou pas d'effectuer un paiement

Il est possible d'utiliser la fonction 3DSecure implémentée sur la solution de paiement Payline, sans utiliser la fonction standard de Payline « effectuer un paiement », donc vous utiliserez uniquement les deux premières étapes décrites ci-dessous.
En effet l'Etape 3, permet d'effectuer une transaction de paiement en vous appuyant de la solution de paiement 3DSecure.

Étape 1 : appel du web service verifyEnrollment

Comme expliqué précédemment, cette première action permet de vérifier l'enrôlement de la carte de l'utilisateur. Les éléments obligatoires de la méthode verifyEnrollment sont :

  • card : numéro de carte / type / date d'expiration / cvx
  • payment : montant / devise / action / mode / numéro contrat
  • orderRef


Voici des données de test permettant d'obtenir un résultat positif : 03000 – Operation successfull :

  • amount = 1000
  • currency = 978
  • action = 101
  • mode = CPT
  • orderRef = RefTest01
  • number = 4970100000000238
  • type = CB
  • expirationDate = 0610
  • CVx : 123


Exemple de requête verifyEnrollment :

verifyEnrollmentRequest

verifyEnrollmentResponse

<impl:verifyEnrollmentRequest>
<impl:card>
<obj:number>4970100000325734</obj:number>
<obj:type>CB</obj:type>
<obj:expirationDate>0610</obj:expirationDate>
<obj:cvx>123</obj:cvx>
</impl:card>
<impl:payment>
<obj:amount>1000</obj:amount>
<obj:currency>978</obj:currency>
<obj:action>100</obj:action>
<obj:mode>CPT</obj:mode>
<obj:contractNumber>CB3DS</obj:contractNumber>
</impl:payment>
<impl:orderRef>RefTest01</impl:orderRef>
</impl:verifyEnrollmentRequest>

<verifyEnrollmentResponse>
<result>
<code>03000</code>
<shortMessage>ACCEPTED</shortMessage>
<longMessage>Operation Successfull</longMessage>
</result> <actionUrl>

https://acs.modirum.com/mdpayacs/pareq

</actionUrl>
<actionMethod>POST</actionMethod>
<pareqFieldName>PaReq</pareqFieldName>
<pareqFieldValue>
eJxVkdtygjAQhl/F8QHcJAUBZ90Zj4MXbdHaXvSOC
TuVTkEM0OrU9ir7bfb4L253hnn+wro1TPjIdZ1+cC/Pxn3
lh0J4fcJksuED4TebOt+XJAdioBCuaHOM3qVlQ5jq
QCnnQ/fz1olTNc6hNFQWhnvxLysdqXbCOsWDcbM661X
aN77jvMYqefbqw4SoSRcrU6dpVyK4e0o59LOUBwG
dDdBrrDWevfQX8B2heclQ==
</pareqFieldValue>
<termUrlName>TermUrl</termUrlName>
<termUrlValue>

http://www.experian.fr

</termUrlValue>
<mdFieldName>MD</mdFieldName>
<mdFieldValue>8FPL0ihqQtuqr1GzmOCL</mdFieldValue>
</verifyEnrollmentResponse>



Dans la réponse du verifyEnrollment on distinguera deux parties d'éléments XML : l'élément result permet de récupérer la réponse concernant l'enrôlement ou non de la carte utilisée. Le résultat de la vérification est visible à travers les différents codes retour ainsi qu'avec les shortMessage et longMessage apportant un complément d'information au code retour. Le verifyEnrollment peut renvoyer les codes retours suivants :

  • 02101 - Internal Error - Internal Error
  • 02303 – Invalid Transaction – Invalid Contract Number
  • 02305 – Invalid Transaction - Invalid field format
  • 03000 - Operation Successfull – Operation Successfull
  • 03001- Operation Refused – Not Enrolled
  • 03002 - Operation Refused - Not participating
  • 03021 – Transaction Refused - Enrollment verification failed
  • 09201 - Access Refused - You do not have permissions to make this API call


La deuxième partie dans la réponse du verifyEnrollment sont les éléments renvoyés par le Directory Server et permettant le suivi de la transaction à venir :

  • PAReq : Payer Authentication Request : suite de caractères regroupant la requête à envoyer au serveur d'authentification, permet d'identifier la carte et son le titulaire.
  • MD : Merchant Date : identifiant permettant d'identifier le commerçant et de simuler une session entre les requêtes d'enrôlement et d'authentification sur les serveurs Access Control Server (ACS) et Merchant Plug-in (ou MPI).
  • actionURL : URL indiquant où doivent être envoyées les informations permettant de vérifier l'authentification de l'utilisateur (voir ci-dessous).
  • actionMethod : méthode devant être utilisée pour envoyée les informations au serveur d'authentification (voir ci-dessous).



Pour chaque élément, on trouve le nom du champ et la valeur du champ.
Exemple : paresFieldName / paresFieldValue.

Étape 1 : appel du web service verifyEnrollment

Suivi technique des appels « webservice » :




Détail du verifyEnrollment




Étape 2 : authentification

Une fois le verifyEnrollment effectué, l'authentification auprès du serveur ACS doit être effectuée. Pour cela, il est nécessaire d'envoyer les informations du verifyEnrollment sur le serveur d'authentification. Les informations attendues par le MPI sont le MD (pour le suivi de session) et le paReq (requête d'authentification).

Envoi des informations

Pour envoyer ces informations, il suffit de créer un formulaire HTML regroupant les champs MD et paReq et pointant vers le serveur d'authentification.
Exemple de formulaire HTML :

Formulaire HTML

<form name="downloadForm" action="https://acs.modirum.com/mdpayacs/pareq" method="POST">
<input type="hidden" name="TermUrl" value="http://127.0.0.1/3DSecure/receive_form.php">
PAREQ : <input type="text" name="PaReq">
<br />
MD : <input type="text" name="MD">
<br />
<input type="submit" name="submit" value="Submit">
</form>



Les informations devant être envoyées au serveur d'authentification à travers le formulaire ci-dessus :

  • MD : suivi de la session : valeur à récupérer dans la réponse du verifyEnrollment
  • PaReq : requête d'authentification : valeur à récupérer dans le verifyEnrollment
  • TermURL : adresse où le serveur d'authentification envoie la réponse de l'authentification. Concrètement cette adresse doit être capable de récupérer un formulaire envoyé en « POST » et contenant la réponse de l'authentification de l'utilisateur.

Réception des informations retournées lors de l'authentification


Le serveur d'authentification envoi son message sur l'URL renseignée dans le paramètre TermURL (envoyé dans le formulaire précédent). Dans le formulaire de réponse, deux champs doivent être récupérés pour poursuivre la transaction en mode 3DSecure :
le champ MD : toujours le même champ permettant le suivi de la session
le champ PaRes : Payer Authentication Response : chaine de caractères cryptée contenant la réponse du serveur d'authentification. La valeur du champ PaRes va permettre de valider ou non la transaction comme une transaction 3DSecure.
Ces deux champs sont récupérés et permettent de compléter le doAuthorizationRequest en mode 3DSecure
(Voir Etape 3 : doAuthorization).

Exemple de script (ici écrit en PHP) permettant de récupérer la réponse à l'authentification :

Script PHP : receive_form.php

<?php
$pares = $_POST['PaRes'];
$md = $_POST['MD'];

echo "MD : ".$md."<br />PARES : ".$pares;
?>


Remarque : ce script doit être placé sur un serveur web démarré et dans un dossier correspondant à l'adresse envoyé via le champ TermURL.
Exemple : si le serveur est en local il est tout à fait possible de mettre comme valeur :
TemrURL = http://127.0.0.1/3DSecure/receive_form.php


Visualisation sur le centre administration



Étape 3 : doAutorization

La dernière étape dans le cadre d'une transaction 3DSecure via l'interface Payline DIRECT est l'envoi d'une requête doAuthorization. Comme dans le cadre d'une transaction classique, le doAuthorization contiendra les champs obligatoires suivant :

  • payment : informations sur la transaction : montant, devise, contrat, etc.
  • card : informations sur la carte de paiement : numéro, type, date d'expiration, etc.
  • order : information sur la commande : référence, montant, pays, etc.
    Et donc dans le cadre d'un paiement 3DSecure, la requête doAuthorization devra être complétée avec les informations renvoyées par le serveur d'authentification :
  • MD : suivi de session 3DSecure.
  • PaRes : résultat de l'authentification.


Ces deux éléments seront placés dans l'élément : <authentication3DSecure> comme indiqué dans l'exemple doAuthorization suivant :


doAuthorizationRequest

doAuthorizationResponse

<doAuthorizationRequest>
<payment>
<amount>1000</amount>
<currency>978</currency>
<action>100</action>
<mode>CPT</mode>
<contractNumber>CB3DS</contractNumber>
</payment>
<card>
<number>4970100000325734</number>
<type>CB</type>
<expirationDate>1212</expirationDate>
<cvx>123</cvx>
</card>
<order>
<ref>REF0989</ref>
<amount>1000</amount>
<currency>978</currency>
<date>24/02/2008 09:28</date>
</order>
<authentication3DSecure>
<md>2vS6uabMBUzx9LrEDS9c</md>
<pares>eJzFV2mvosoW/Sudvh9NN7NKhzYpRlEL
avfp887t93Lz8gYSYtV216q9qbV2VTFmcosi3ojC+y1
i888rZg/0qH6aCopcLGiCnoxtdKvTS7nCvqJfcQb52Z
pjJMYgP7pMEd1kfkUvF3OKQV4dBvk1an9/tOoplj49
RLN1UHfmeQhwdz9JtohaMojeI4+QkjvmHUN4pmk
CntW1....................

</pares>
</authentication3DSecure>
</doAuthorizationRequest>

<doAuthorizationResponse>
<result>
<code>00000</code>
<shortMessage>ACCEPTED</shortMessage>
<longMessage>Transaction approved</longMessage>
</result>
<transaction>
<id>90224141650893</id>
<date>24/02/09 14:16</date>
<isDuplicated>0</isDuplicated>
<isPossibleFraud>0</isPossibleFraud>
<fraudResult/>
<explanation/>
<threeDSecure>Y</threeDSecure>
<score xsi:nil="true" />
</transaction>
<authorization>
<number>A55A</number>
<date>24/02/09 14:16</date>
</authorization>
</doAuthorizationResponse>

Visualisation du centre d'administration


Le résultat de la transaction 3DSecure est alors visible dans le centre d'administration Payline : sur les résultats d'une recherche et dans le détail de la transaction onglet 3DSecure :

Ecran recherche des transactions :



Détail de la transaction 3DSecure




Annexe

Paramétrage de SOAP UI

Téléchargement de SOAP UI :
SOAP UI est une application permettant de faire des appels web services. Dans l'environnement Payline, ce client web services va vous permettre d'envoyer des requêtes à l'API Payline de façon à créer des transactions de test, vérifier le format des réponses de l'API ou tout simplement vérifier le format des informations que vous envoyées à Payline.
SOAP UI 2.5 est disponible en version gratuite ou en version professionnelle, vous pouvez le télécharger sur le site http://www.soapui.org/


Ajout d'un projet Payline : dans SOAP UI, créer un nouveau projet : File / New SOAP UI Project avec les propriétés suivantes :


La création du projet génère l'ensemble des APIs Payline : DirectPaymentAPI, ExtendedAPI, WebPaymentAPI, MassPaymentAPI, ainsi que les services de chaque API : exemple : doAuthorization, doCapture, doWebPayment, etc.
Pour chaque service, une requête, nommée « Request 1 », a automatiquement été générée.
Configuration des requêtes SOAP : chaque requête générée pour les services Payline doit être configurées de façon à atteindre l'application Payline.
Configuration du « endpoint » : ouvrir une requête, par exemple le doAuthorization, en effectuant un double clic sur « Request 1 ».
Puis dans la barre d'adresse cliquer sur « Add new end point » (voir screenshot ci-dessous) et ajouter l'adresse : https://homologation.payline.com/V4/services/DirectPaymentAPI


Effectuer la même opération pour les autres API en ajoutant les « end point » suivant :


Configuration de l'autorisation commerçant : pour pouvoir communiquer avec l'API Payline, une autorisation est obligatoire. Cette autorisation permet de vous identifier avec votre compte commerçant sur l'API Payline.
Pour cela, cliquez sur Auth (en bas à droite dans la fenêtre de la requête) et entrer vos informations de connexions à l'environnement Payline :

  • Username : votre identifiant commerçant
  • Password : votre clé d'accès

Configuration de la requête : compléter les champs de la requête en remplaçant les « ? » par les vos valeurs : numéro de contrat, montant, informations de la carte bancaire, informations sur la commande, etc.
Lancer la requête : pour cela cliquez sur Play (la flèche verte) en haut à gauche dans la fenêtre de la requête SOAP. La réponse de l'API Payline s'affiche alors dans le cadre de droite.

Schéma récapitulatif : paiement 3DSecure

Données entrées / sorties du service web verifyEnrollment




Element

Description

Required

Format

Example

Conditions
versionPayline web services version. To be valued with the latest version: see the table of versions.YesN218
cardCard Information.YesObject card

paymentPayment Information.YesObject payment
The amount can be 0 if the card is 3DS
orderRef

The identifier of the order at the merchant.

Deprecated, fill out the order object instead.

YesAN5012345678
mdFieldValueValue of merchantData (This value must be unique). Field use is not recommended.NoAN20OS0hZDbJH75NiDrAo0yo
userAgentUserAgent of payment terminal. To know the origin of payment request, it will be transmitted during  request 3DS to MPI.NoAN255Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
walletIdThe identifier of buyer's wallet. NoAN50
Version 10 or higher
walletCardIndThe index of buyer's card registered in wallet.NoAN5
Version 10 or higher
generateVirtualCvxRequest to generate a virtual CVV. Check if your subscription allows this feature (Tokenization).NoBooleanTrueVersion 16 or higher
merchantNameName displayed on the ACS authentication page.NoAN25Merchant nameVersion 16 or higher
merchantURLSpecific use. You must contact support before use.
Value accepted: Fully qualified URL (beginnning with http:// ou https://).
NoAN255https://www.payline.comVersion 29
merchantCountryCodeSpecific use. You must contact support before use.
Format : ISO 3166-1 alpha-2 codes.
No

Version 29
returnURL

The URL of the system that receives the CRes message or Error Message.

NoAN256
Version 21 or higher (3DSV2)
orderOrder Information.
YesObject order

Version 21 or higher (3DSV2)

buyerBuyer information.YesObject buyer

Version 21 or higher (3DSV2)

submerchantPayment Facilitator Information.NoObject subMerchant

Version 21 or higher (3DSV2)

recurringRecurring or installment information.NoObject recurring

Version 21 or higher (3DSV2)

threeDSinfoInformation specific to 3DS authentication.YesObject threeDSInfo

Version 21 or higher (3DSV2)

merchantScore

Merchant calculated score. Mainly for CB scoring.

NoANMethod 023 : A+

Version 21 or higher (3DSV2)

transientData to populate the 3DSV2 container.NoJava = String (100 K Octets) et SQL = CLOB 
Version 22 or higher (3DSV2)
privateDataList

List containing privateData.

Number of items 0 to 100.

NoObject - privateData
Version 22 or higher (3DSV2)




Element

Description

Required

Format

Example

Conditions
versionPayline web services version. To be valued with the latest version: see the table of versions.YesN218
cardCard Information.YesObject card

paymentPayment Information.YesObject payment
The amount can be 0 if the card is 3DS
orderRef

The identifier of the order at the merchant.

Deprecated, fill out the order object instead.

YesAN5012345678
mdFieldValueValue of merchantData (This value must be unique). Field use is not recommended.NoAN20OS0hZDbJH75NiDrAo0yo
userAgentUserAgent of payment terminal. To know the origin of payment request, it will be transmitted during  request 3DS to MPI.NoAN255Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
walletIdThe identifier of buyer's wallet. NoAN50
Version 10 or higher
walletCardIndThe index of buyer's card registered in wallet.NoAN5
Version 10 or higher
generateVirtualCvxRequest to generate a virtual CVV. Check if your subscription allows this feature (Tokenization).NoBooleanTrueVersion 16 or higher
merchantNameName displayed on the ACS authentication page.NoAN25Merchant nameVersion 16 or higher
merchantURLSpecific use. You must contact support before use.
Value accepted: Fully qualified URL (beginnning with http:// ou https://).
NoAN255https://www.payline.comVersion 29
merchantCountryCodeSpecific use. You must contact support before use.
Format : ISO 3166-1 alpha-2 codes.
No

Version 29
returnURL

The URL of the system that receives the CRes message or Error Message.

NoAN256
Version 21 or higher (3DSV2)
orderOrder Information.
YesObject order

Version 21 or higher (3DSV2)

buyerBuyer information.YesObject buyer

Version 21 or higher (3DSV2)

submerchantPayment Facilitator Information.NoObject subMerchant

Version 21 or higher (3DSV2)

recurringRecurring or installment information.NoObject recurring

Version 21 or higher (3DSV2)

threeDSinfoInformation specific to 3DS authentication.YesObject threeDSInfo

Version 21 or higher (3DSV2)

merchantScore

Merchant calculated score. Mainly for CB scoring.

NoANMethod 023 : A+

Version 21 or higher (3DSV2)

transientData to populate the 3DSV2 container.NoJava = String (100 K Octets) et SQL = CLOB 
Version 22 or higher (3DSV2)
privateDataList

List containing privateData.

Number of items 0 to 100.

NoObject - privateData
Version 22 or higher (3DSV2)



Données entrées / sorties du serviceweb doAutorization

La fonction « do Authorization» réalise une demande d'autorisation de débit au serveur d'autorisation de votre établissement bancaire.
Requête à envoyer
La requête « doAuthorizationRequest » doit avoir la structure suivante :

  • REQUEST
    • PAYMENT
    • CARD
    • ORDER
      • ORDER_DETAILS (occurrences 0 – 100)
    • BUYER
    • AUTHENTICATION3DSECURE
    • PRIVATE_DATA_LIST
      • PRIVATE_DATA (occurrences 0 – 100)



Element

Description

Required

Format

Condition

version

Version of Payline web services.
To be valued with the latest version: see the table of versions.

Yes

N2


payment

Payment Information.

Yes

Object payment


bankAccountData

Bank account information.

Yes

Object bankAccountData


card

Card Information.

Yes

Object card


order

Order information.

Yes

Object order


buyer

Buyer information.

No

Object buyer


ownerOwner information.NoObject owner

privateDataList

Personal information.

No

Object PrivateDataList


authentication3DSecure

3DSecure operations information.

No

Object authentication3DSecure


media

Detection of the media used during the payment.

The possible values ​​of this tag are:

- Computer 
- Mobile 
- Tablet 
- TV 
- Console 
- Undefined.

No

AN25


subMerchantPayment Facilitator Information.NoObject subMerchant
asynchronousRetryTimeout

For Asynchronous Retry function , a numeric that specifies the period in minutes. It must be between 5 and 10080 (7 days).

NoAN
linkedTransactionIDIn case of installment, recurring or split shippment payment refers to the first authorization.NoAN200

Version 21 or higher (3DSV2)

transient

Data to populate the 3DSV2 container.

Fetch the value of the last verifyEnrollmentResponse.

NoJava = String (100 K Octets) et SQL = CLOB Version 21 or higher (3DSV2)

threeDSinfo

Information specific to 3DS authentication.NoObject threeDSInfo
travelFileNumberTransfer file reference (PLBS).NoAN15
recurringRecurring or installment information.No Object recurringVersion 21 or higher (3DSV2)



The doAuthorizationResponse message is the response given by Payline to a payment authorization request. This will allow you to obtain the Payline unique transaction number and, if it is accepted, the authorization number issued by your bank. Some additional information is also sent back.


Element

Description

Required

Format

Condition
result

Information on the result of the payment request:
00000: Transaction accepted.
Other code: Transaction not accepted.

More information Return code and Payline message.

YesObject result

transaction

Transaction Information.

Yes

Object transaction


authorizationAuthorization Information.YesObject authorization
cardCard Information.NoObject cardOut
extendedCardAdditional card  information.NoObject extendedCardType

privateDataList

Personal information.

No

Object privateDataList


contractNumber

Contract name used.

Yes

AN


linkedTransactionId

In case of installment, recurring or split shipment payment.

The value returned by the authorization server for the first authorization request shall be joined to the following requests.

NoAN200

Version 21 (3DSV2)

resultContainer

Aggregated result of the authentication.

In case of installment, recurring or split shipment payment, the authentication result shall be joined in each authorization request.

NoAN2048

Version 21 (3DSV2)

transient

Data to populate the 3DSV2 container.

No

Java = String (100 K Octets) et SQL = CLOB 

Version 21 (3DSV2)
travelFileNumberTransfer file reference.NoAN15Version 30 (3DSV2 - PLBS)
authentication3DSecure3DSecure operations information.NoObject authentication3DSecureVersion 27 or higher (3DSV2)
reattempt

New Object reattempt received in response to the authorisation request in version 1.6.2 from CB2A.

NoObject reattemptVersion 33 or higher (3DSV2)




  • Aucune étiquette