Créer une transaction (PCI et 3D Secure)
Si vous êtes certifié PCI-DSS, vous êtes habilité à collecter les informations sensibles du moyen de paiement sur votre site. Vous pouvez créer une nouvelle transaction à l'aide du Web Service Charge/CreatePayment en transmettant les informations sensibles du moyen de paiement.
L'exemple d'intégration explique comment créer un paiement avec une authentification forte, comme 3D Secure ou SafeKey.
Cinématique du paiement avec authentification 3D Secure
Plusieurs échanges sont impliqués dans une transaction avec une authentification forte:
Navigateur de l'acheteur
Serveur Marchand
Serveur de la Plateforme de paiement
Description des étapes :
Étape | Description |
---|---|
1 | L'acheteur transmet les informations du moyen de paiement au serveur marchand. |
2 | Appel de Charge/CreatePayment pour créer une nouvelle transaction. |
3 | Si une authentification 3D Secure est nécessaire, le Web Service retourne un réponse du type V4/Charge/RedirectRequest. |
4 | Le marchand redirige l'acheteur vers la page 3D Secure de sa banque. |
5 | Une fois que l'acheteur est authentifié, le navigateur est redirigé vers la plateforme de paiement. |
6 | La plateforme de paiement va créer la transaction et appeler l'URL définie dans le paramètre merchantPostUrlSuccess lors du premier appel. |
7 | Le marchand vérifie l'état de la transaction et redirige l'acheteur sur la page de confirmation d'achat. |
Les URLs de retour peuvent être définies à l'aide de deux paramètres durant l´étape 1:
- merchantPostUrlSuccess : si la transaction est autorisée
- merchantPostUrlRefused : si la transaction est refusée
Si merchantPostUrlRefused n'est pas défini en cas de transaction refusée, l'acheteur est redirigé sur merchantPostUrlSuccess.
Préparer son environnement
Si vous utilisez PHP avec notre SDK, nous vous recommandons de regrouper vos clefs dans un fichier de configuration.
Exemple avec les clés de tests:
Pensez à les remplacer avec vos clés personnelles.
Pour plus d'informations, voir SDKs server et Prérequis
Initier la transaction
Pour créer une nouvelle transaction à partir d'un nouveau moyen de paiement il faut utiliser le Web Service Charge/CreatePayment:
{ "amount": 990, "currency": "EUR", "merchantPostUrlSuccess": "http://mockbin.com/request", "merchantPostUrlRefused": "http://mockbin.com/request", "paymentForms": [ { "paymentMethodType": "CARD", "pan": "4970100000000055", "expiryMonth": "11", "expiryYear": "21", "securityCode": "123" } ] } }
La réponse sera :
{ "webService": "Charge/CreatePayment", "version": "V4", "applicationVersion": "4.6.1", "status": "SUCCESS", "answer": { "redirectUrl": "https://authentication-server-url/buyer-bank", "width": 390, "height": 434, "template": "3dsecure", "postData": { "MD": "JSESSIONID=f9a1CBA1beF8AbAfFE89bD35.vadpayment01tls;+_CqX06BsfWgStNNUg7VgJ", "PaReq": "eJxVUttu2zAM/RXD74skp/EloFW0CYp1QINuSW9+GVSJcYwlcmLJS9yvn+Q6a6sX8VDE4eGh4PK02wZ/sTFVrfOQjWgYoJa1qnSZhw+rm29pGBgrtBLbWmMedmjCSw6rTYM4X6JsG+Rwh8aIEoNK5eHv2eGZxtdm/VQu7WLxUCaP5Y+Qw/3VLzxwGFpx12kUATlDR9HIjdCWg5CH69sFv8iSmFIgA4QdNrdzTvuTAXmHoMUO+bIOUJgusHVg0VggfRZk3WrbdDyaOJozgLbZ8o21+ykhx+NxtBfdG+oRtkD8C5APIfetj4xjOlWK/xzfvNzNi5mMiueCLejqz+SxeFNPBa1zIL4ClLDII8oyGtE0oNk0SqeTBEifB7HzEniW+aHeY9j7FlefHj4nwJnbuGV0PEtSN8EZAZ72bheuwhn4PwaFRjr9w/UhfvbdeyqtsyuR48l6jAJjjC7WGKWxShhbx6+vinmn+yJPX3nbGGM9vwdAPA0ZlkiGhbvoy0f4B/cLwxM=", "TermUrl": "https://payment-service-provider-return-url" }, "allowIFrame": true, "hideAtStartup": false, "hideTimeout": 15, "_type": "V4/Charge/RedirectRequest" }, "ticket": null, "serverDate": "2019-02-08T09:28:57+00:00", "applicationProvider": "NPS", "metadata": null, "_type": "V4/WebService/Response" }
Si le type de l'objet retourné n'est pas V4/Charge/RedirectRequest mais V4/Payment, 3D Secure n'est pas requis, et la réponse contient le détail de la transaction (objet Transaction). Pour plus de détails, Consultez Créer une transaction (PCI).
Plus d'informations sur le Web Service : PCI/Charge/CreatePayment.
Authentification (3DS)
Le marchand doit rediriger l'acheteur sur la page d'authentification. Pour cela il faut créer un formulaire qui sera soumis automatiquement avec les caractéristiques suivantes:
- URL cible (action) définie dans le paramètre redirectUrl
- des champs invisibles (hidden input) contenant les données définies dans postData
- la méthode est toujours POST
Exemple de formulaire de redirection:
<form id="goTo3DS" action="https://authentication-server-url/buyer-bank" method="POST"> <input type='hidden' name='MD' value='JSESSIONID=3f1c1eD7716a696FB1F74d21.vadpayment02tls;+_Z5NVQRqn73uWdF7SOLhL'> <input type='hidden' name='PaReq' value='eJxVUttSwjAQ/ZVO3yXpzVJmG8cbozMiKgjqixOTVepACk0q1K83KfWWl(...)'> <input type='hidden' name='TermUrl' value='https://payment-service-provider-return-url'> </form> <script type="text/javascript"> document.getElementById('goTo3DS').submit(); </script>
Récupérer le détail de la transaction
Une fois l'authentification effectuée par votre acheteur, la transaction est créée par la plateforme de paiement. Le détail de la transaction est transmis vers l'URL définie dans merchantPostUrlSuccess ou merchantPostUrlRefused selon le résultat du paiement.
Consultez Analyse du résultat du paiement via le retour à la boutique pour plus de détails.