- Directives d'intégration
- Fonctionnalités prises en charge (Sécurité)
- 3-Domain Secure
Authentification 3-D Secure (3DS1 et 3DS2)
L'authentification 3-Domain Secure™ (3-D Secure or 3DS) est conçue pour protéger les achats en ligne contre les fraudes sur les cartes de crédit en vous permettant d'authentifier le payeur avant de soumettre une demande Authorization (Autoriser) ou Pay (Payer). La passerelle Mastercard Gateway prend en charge les deux versions 3DS — 3DS1 et EMV 3DS.
L'authentification 3DS1 est la version héritée qui permet aux payeurs de s'authentifier auprès du serveur de contrôle d'accès (ACS) de leur émetteur en entrant un mot de passe préalablement enregistré auprès de l'émetteur de leur carte. L'authentification 3DS2 accepte également la saisie d'un mot de passe ou un flux sans friction. Les systèmes pris en charge pour l'authentification comprennent Mastercard, Visa, American Express, JCB, Discover et Diners Club.
Bien que votre prestataire de services de paiement puisse configurer à la fois les authentifications 3DS1 et 3DS2 sur votre profil de commerçant avec la passerelle, vous pouvez restreindre les versions que vous souhaitez accepter en spécifiant votre choix dans la demande d'authentification. Si les deux sont acceptées, la passerelle utilise l'authentification 3DS2 (si prise en charge par l'émetteur et la carte) et tentera de revenir à l'authentification 3DS1 uniquement sur les marchés réglementés. Si aucune des deux n'est disponible, l'authentification ne se poursuit pas. Cependant, vous pouvez toujours procéder au paiement si la passerelle vous le recommande.
Le diagramme ci-dessous illustre le flux d'authentification pour un paiement où la passerelle revient à l'authentification 3DS1 car l'authentification 3DS2 n'est pas disponible pour la carte. La passerelle tente également l'authentification 3DS1 dans d'autres cas, par exemple, lorsque vous êtes uniquement activé pour l'authentification 3DS1, ou si vous avez limité la version d'authentification à 3DS1 uniquement dans la demande d'authentification.
Le flux pour une authentification réussie est le suivant :
- Un payeur accède au site de votre magasin, sélectionne un ou plusieurs produits, accède à la page de paiement et choisit de payer avec une carte qui prend en charge l'authentification 3DS1, mais pas l'authentification 3DS2.
- Initiate Authentication (Initier l'authentification) : vous demandez à la passerelle de vérifier auprès du système de cartes si la carte est inscrite pour l'authentification 3DS.
- Si l'authentification 3DS1 du payeur est disponible, la passerelle retourne les détails de l'inscription de la carte dans la réponse.
Si la carte prend en charge les authentifications 3DS1 et 3DS2, la passerelle essaie d'abord l'authentification 3DS2. Voir Flux d'authentification 3DS2.
- Authenticate Payer (Authentifier le payeur) : vous demandez à la passerelle d'effectuer l'authentification initiée.
- La passerelle vous fournit les détails de l'authentification pour un flux d'authentification (où le payeur est tenu de répondre à une authentification présentée par l'émetteur).
- Vous redirigez le navigateur Web du payeur vers le serveur ACS, qui présente son IU d'authentification. L'émetteur retourne le résultat de l'authentification à la passerelle. La passerelle redirige le payeur directement sur votre site Web.
- Utiliser l'ID de transaction d'authentification 3DS dans une opération de paiement : vous soumettez le paiement pour traitement.
- Vous affichez la page de confirmation de commande au payeur.
Voici quelques termes clés qui seront référencés dans toute la documentation d'intégration de l'authentification 3DS1
Terme | Description |
---|---|
Serveur de contrôle d'accès (ACS) | Composant qui fonctionne dans le domaine de l'émetteur, qui vérifie si l'authentification est disponible pour un numéro de carte et un type de dispositif, et authentifie des transactions spécifiques. |
Appel de méthode ACS | S'applique à l'authentification 3DS2. Il s'agit d'un appel qui permet au serveur ACS de recueillir des données supplémentaires pour déterminer le risque du payeur. Lorsque l'authentification 3DS2 est disponible et lorsque les détails de l'appel ACS sont retournés dans la réponse après avoir lancé l'authentification, ces détails sont transmis au navigateur du payeur, et sont soumis sous forme de publication de formulaire dans une iFrame masquée, afin que le serveur ACS puisse collecter des données supplémentaires. |
Flux sans friction | Flux d'authentification où le payeur n'est pas tenu de répondre à une authentification car le serveur ACS considère le payeur comme à faible risque. |
Flux d'authentification | Flux d'authentification où le payeur est redirigé vers le serveur ACS et est tenu de répondre à une authentification pour s'identifier, car le serveur ACS ne dispose pas d'informations suffisantes sur le payeur pour le considérer comme à faible risque. |
Session de paiement | Une session de paiement, ou plus simplement une session, est un conteneur temporaire pour les champs de demande et les valeurs des opérations faisant référence à une session. Vous pouvez l'utiliser dans une opération pour référencer les champs de demande et les valeurs plutôt que de les fournir directement dans la demande d'opération. Lorsque la passerelle reçoit une opération référençant une session, elle crée la demande finale en combinant les champs de demande de la session et ceux fournis directement dans la demande. Pour plus d'informations, voir Session de paiement. |
Authentification de session | Authentification à l'aide d'une session de paiement. Cette authentification permet aux payeurs de fournir leurs détails de paiement directement à la passerelle via une interaction côté client avec la passerelle, par l'intermédiaire du navigateur du payeur ou d'une application sur l'appareil mobile du payeur. Il utilise un mécanisme d'authentification HTTP de base (similaire à l'authentification par mot de passe) dans lequel vous devez indiquer « merchant.<your gateway merchant ID> » dans la partie userid et l'identifiant de session dans la partie password. Pour utiliser ce type d'authentification, vous devez d'abord créer une session en soumettant une demande de session (voir la rubrique Créer une session [REST][NVP]) de votre serveur vers le serveur de passerelle. |
Authentification du commerçant | Mécanisme qui permet au commerçant d'authentifier les demandes d'API auprès de la passerelle, par exemple, mot de passe/certificat/authentification de session. |
API Authentication (API d'authentification) | API côté serveur constituée de deux opérations, Initiate Authentication (Initier l'authentification) et Authenticate Payer (Authentifier le payeur), qui doivent être soumises de votre serveur au serveur de passerelle. Peut également être utilisée comme API côté client utilisant une authentification basée sur la session. |
API 3DS JavaScript | API JavaScript côté client qui permet de lancer l'authentification 3DS à partir du navigateur du payeur en utilisant une authentification basée sur la session. |
Canal d'authentification | Indique où l'authentification 3DS a lieu, dans le navigateur du payeur, dans une application sur l'appareil mobile du payeur ou dans votre système sans aucun payeur présent pour interagir. Cela a des implications en termes de types d'authentification et de flux disponibles, par exemple, l'authentification 3DS1 ne peut être prise en charge que dans un navigateur avec un payeur disponible pour interaction avec le serveur ACS. |
Motif de l'authentification |
|
Retour à l'authentification 3DS1 pour les pays avec une prise en charge étendue de l'authentification 3DS1
Initiate Authentication (Initier l'authentification) - Retour à l'authentification 3DS1
L'opération Initiate Authentication (Initier l'authentification) permet de déterminer quelles versions de l'authentification 3DS sont disponibles pour une carte spécifique. La version d'authentification 3-D Secure existante reviendra à la version de l'authentification 3DS1 si l'une des conditions suivantes est remplie.
- Vous avez indiqué dans votre demande que vous n'acceptez que l'authentification 3DS1, qui comprend authentication.acceptVersions=3DS1 ou une combinaison des méthodes d'authentification 3DS1 et EMV 3DS, comme authentication.acceptVersions=3DS1, 3DS2, ou non fourni.
- Votre prestataire de services de paiement a configuré l'authentification 3DS1 dans votre profil de commerçant.
- Le système de cartes prend en charge l'authentification 3DS1 du payeur.
- authentication.channel=PAYER_BROWSER
- authentication.purpose=PAYMENT_TRANSACTION et
- Le résultat des demandes que la passerelle a envoyées aux prestataires de services d'authentification concernés :
- l'authentification EMV 3DS n'est pas disponible pour cette carte, ou
- l'authentification EMV 3DS n'est pas disponible sur le serveur de contrôle d'accès (ACS) de l'émetteur, et vous êtes situé dans un pays où la prise en charge de l'authentification 3DS1 est étendue et où le retour vers l'authentification 3DS1 est préférable à l'authentification de remplacement du système EMV 3DS.
Pays et systèmes pris en charge
Le tableau ci-dessous répertorie les pays et les systèmes d'authentification où le retour à l'authentification 3DS1 est tenté lorsque l'authentification EMV 3DS n'est pas disponible au niveau du serveur ACS de l'émetteur.
Système d'authentification | Pays du commerçant |
---|---|
Mastercard Identity Check | Inde et Bangladesh |
Visa Secure | Inde, Bangladesh, Sri Lanka, Bhoutan, Maldives et Népal |
American Express SafeKey | Inde |
order.subMerchant.address.country
de la demande. Pour plus d'informations, voir Prise en charge de l'agrégateur.Exemples
{ "authentication": { "acceptVersions":"3DS1,3DS2", "channel": "PAYER_BROWSER", "purpose": "PAYMENT_TRANSACTION" }, "correlationId": "test", "order": { "currency": "USD" }, "sourceOfFunds": { "provided": { "card": { "number": "<card_number>" } } }, "apiOperation": "INITIATE_AUTHENTICATION" }
Par exemple, un commerçant dans un pays où la prise en charge de l'authentification 3DS1 a été étendue et où l'authentification EMV 3DS n'est pas disponible au niveau du serveur ACS des émetteurs.
{ "authentication": { "acceptVersions":"3DS1,3DS2", "channel": "PAYER_BROWSER", "purpose": "PAYMENT_TRANSACTION" }, "correlationId": "test", "order": { "currency": "USD" }, "sourceOfFunds": { "provided": { "card": { "number": "<card_number>" } } }, "apiOperation": "INITIATE_AUTHENTICATION" }
Par exemple, une transaction transfrontalière pour un commerçant dans un pays où la prise en charge de l'authentification 3DS1 a été étendue et où le serveur ACS des émetteurs internationaux prend en charge l'authentification EMV 3DS ; ou un commerçant dans un pays où l'authentification 3DS1 a été mise hors service et où le serveur ACS des émetteurs locaux prend en charge l'authentification EMV 3DS.
{ "authentication": { "3ds2": { "directoryServerId": "A999999999", "methodSupported": "NOT_SUPPORTED", "protocolVersion": "2.1.0", "requestorId": "test40Field@S^2sfds2ID", "requestorName": "test40Field@S^2sfds2Name" }, "acceptVersions": "3DS1,3DS2", "channel": "PAYER_BROWSER", "purpose": "PAYMENT_TRANSACTION", "redirect": { "html": "<script id=\"initiate-authentication-script\"></script>" }, "version": "3DS2" }, "correlationId": "test", "merchant": "TEST3DS12AUTH", "order": { "authenticationStatus": "AUTHENTICATION_AVAILABLE", "creationTime": "2022-11-03T08:22:17.087Z", "currency": "USD", "id": "Test1", "lastUpdatedTime": "2022-11-03T08:23:17.905Z", "merchantCategoryCode": "1234", "status": "AUTHENTICATION_INITIATED", "totalAuthorizedAmount": 0, "totalCapturedAmount": 0, "totalRefundedAmount": 0 }, "response": { "gatewayCode": "AUTHENTICATION_IN_PROGRESS", "gatewayRecommendation": "PROCEED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "fundingMethod": "DEBIT", "number": "555555xxxxxx0018", "scheme": "MASTERCARD" } }, "type": "CARD" }, "timeOfLastUpdate": "2022-11-03T08:23:17.905Z", "timeOfRecord": "2022-11-03T08:22:17.087Z", "transaction": { "amount": 0, "authenticationStatus": "AUTHENTICATION_AVAILABLE", "currency": "USD", "id": "1", "type": "AUTHENTICATION" }, "version": "70" }
Méthodes d'intégration
Veuillez cliquer ici pour voir comment migrer de l'opération Legacy 3DS1 vers l'API Authentication (API d'authentification) :Guide d'intégration de l'authentification 3-D Secure : Page d'intégration Hosted Checkout.
Étape 1 : Créer et mettre à jour une session
3DS JS utilise l'authentification basée sur la session. La première étape consiste à créer une session que vous pouvez mettre à jour à l'aide des champs de demande et des valeurs que vous voulez stocker dans la session.
Vous pouvez créer une session à l'aide de l'appel Create Session (Créer une session). Il s'agit d'un appel d'API côté serveur et est une condition préalable à l'intégration avec l'API JS. Les champs suivants sont retournés :
session.id
: identifiant de session unique que vous devez fournir lors des demandes suivantes pour faire référence au contenu de la session.session.authenticationLimit
: limite du nombre de demandes de transaction que le navigateur du payeur peut soumettre. Vous pouvez indiquer une valeur dans la demande ou utiliser la valeur par défaut de la passerelle. Par défaut, la passerelle définit ce champ sur 5, mais vous pouvez indiquer une valeur allant jusqu'à 25. Cette limite empêche les utilisateurs malveillants d'utiliser la demande d'authentification, comme pour une attaque potentielle par carte de crédit volée, et d'effectuer des attaques par déni de service (DoS) sur votre site en soumettant un grand nombre de transactions (potentiellement facturables).
Notez que toutes les tentatives d'authentification que vous initiez seront vérifiées par rapport à la limite d'authentification.session.aes256Key
: clé que vous pouvez utiliser pour décrypter les données sensibles transmises à votre site Web via le navigateur ou l'appareil mobile du payeur.session.version
: vous pouvez utiliser ce champ pour implémenter un verrouillage optimiste du contenu de la session.session.updateStatus
: résumé des résultats de la dernière tentative de modification de la session.
Vous pouvez ajouter ou mettre à jour des champs dans une session à l'aide de l'appel Update Session (Mettre à jour la session). Il vous permet d'ajouter des données de paiement et de payeur dans une session, qui peuvent ensuite devenir l'entrée pour déterminer le risque associé à un payeur dans une opération d'authentification. Les champs suivants sont obligatoires dans une session :
Paramètre | Existence | Description |
---|---|---|
session.id ou sourceOfFunds.provided.card.* ou sourceOfFunds.token |
Obligatoire | détails de la carte utilisée pour le paiement. Notez que vous pouvez également utiliser des jetons de réseau et des jetons de paiement mobile comme source de fonds dans l'authentification du payeur. Pour plus d'informations, voir la rubrique Questions fréquentes. |
order.amount |
Obligatoire | montant total de la commande. |
order.currency |
Obligatoire | devise de la commande. |
transaction.id |
Obligatoire | identifiant unique de cette authentification de paiement. |
order.id |
Obligatoire | Identifiant unique de cette commande. |
authentication.channel |
Obligatoire | Canal dans lequel la demande d'authentification est initiée. Vous pouvez spécifier l'un des éléments suivants :
|
authentication.redirectResponseUrl |
Facultatif | URL vers laquelle vous souhaitez rediriger le payeur après avoir terminé le processus d'authentification du payeur. Vous devez indiquer cette URL, sauf si vous êtes certain qu'il n'y aura aucune interaction avec le payeur. |
authentication.purpose |
Facultatif | Par défaut, ce champ est défini sur « PAYMENT_TRANSACTION » pour indiquer que l'authentification doit être effectuée lors du traitement d'un paiement par carte. Cependant, vous pouvez spécifier un motif différent pour indiquer l'authentification hors paiement. Voir Soumettre une demande Non-Payment Authentication (Authentification hors paiement). |
authentication.acceptVersions |
Facultatif | Versions de l'authentification 3DS que vous acceptez pour ce paiement. Si vous ne spécifiez pas de version, 3DS1 et 3DS2 sont acceptés. La passerelle utilise l'authentification 3DS2 (si elle est prise en charge par l'émetteur et par la carte) et ne revient à l'authentification 3DS1 que lorsque l'authentification 3DS2 n'est pas disponible. Si aucune des deux n'est disponible, l'authentification ne se poursuit pas. Notez que les scénarios de retour ne s'appliqueront qu'aux marchés réglementés. Pour plus d'informations sur les scénarios de retour, voir Initiate Authentication (Initier l'authentification) - Retour à l'authentification 3DS1. |
order.merchantCategoryCode |
Facultatif | Indiquez le code de catégorie du commerçant si vous souhaitez remplacer la valeur par défaut configurée sur votre lien d'acquéreur. |
Étape 2 : Initialiser l'API
Référencez l'API 3DS JS (threeDS.js
) à partir des serveurs de passerelle. Cela place un objet ThreeDS
dans la fenêtre / l'espace de noms global.
Une fois la session créée, initialisez l'API à l'aide de la méthode configure( )
. Cette méthode doit être appelée pendant le chargement de la page ou lorsque le DOM est prêt. Elle ne doit être appelée qu'une seule fois pour le chargement de la page. Après avoir appelé cette méthode, 3DS JS fournit les valeurs de configuration en tant que variables membres.
Vous pouvez initialiser l'API 3DS JS en appelant la méthode configure(), avec les champs obligatoires suivants comme arguments dans un objet de mappage :
merchantId
: votre identifiant de commerçant sur la passerelle.sessionId
: ID de session que vous avez créé à l'aide de l'appel Create Session (Créer une session).containerId
: ID <div> dans votre HTML où l'API injectera une iFrame masquée.callback
: fonction qui sera appelée une fois l'API initialisée.configuration
: valeur JSON prenant en charge des éléments de données tels que userLanguage (facultatif) ou la version de l'API REST (wsVersion).
<html> <head> <script src="https://eu-gateway.mastercard.com/static/threeDS/1.3.0/three-ds.min.js" data-error="errorCallback" data-cancel="cancelCallback"> </script> <script type="text/javascript"> //The output of this call will return 'false', since the API is not configured yet console.log(ThreeDS.isConfigured()); /** Configure method with the configuration{} parameter set and demonstrates the state change of the ThreeDS object before and after the configure method is invoked. */ ThreeDS.configure({ merchantId: {merchantId}, sessionId: {sessionId}, containerId: "3DSUI", callback: function () { if (ThreeDS.isConfigured()) console.log("Done with configure"); }, configuration: { userLanguage: "en-AU", //Optional parameter wsVersion: 72 } }); //The output of this call will return 'true', since the API is configured console.log(ThreeDS.isConfigured()); //The output of the following code might look like "ThreeDS JS API Version : 1.2.0" console.log("ThreeDS JS API Version : " + ThreeDS.version); </script> </head> <body> <div id="3DSUI"></div> </body> </html>
Étape 3 : Initier l'authentification
Une fois toutes les données du payeur et du paiement recueillies dans une session, vous pouvez lancer l'authentification en appelant la méthode initiateAuthentication()
. Les versions d'authentification du payeur à votre disposition pour une carte donnée sont déterminées suivant :
- les versions de l'authentification 3DS configurées sur votre profil de commerçant, par exemple, 3DS1 ou 3DS2 ;
- le type de carte ;
- les préférences que vous avez indiquées dans la demande ;
- la version de l'authentification 3DS à laquelle la carte a été inscrite ;
- les règles de filtrage des transactions 3DS configurées par vous ou votre your payment service provider.
L'opération permet également à toutes les activités en arrière-plan (telles qu'un appel de la méthode ACS 3DS2) d'être exécutées afin de, par exemple, recueillir des données de payeur supplémentaires pour prendre en charge une méthode authenticatePayer()
ultérieure.
authenticatePayer()
, il est recommandé de d'appeler la méthode initiateAuthentication() dès que possible dans votre processus de paiement et d'agir immédiatement sur la réponse. Cela se produit généralement lorsque le payeur termine la saisie de son numéro de carte sur la page de paiement, par exemple, l'événement « onBlur » du champ de saisie Numéro de carte, ou lors de la sélection d'une carte parmi celles enregistrées sur son compte, si votre site dispose des fonctionnalités de stockage de cartes dans des fichiers. Attendez au moins dix secondes pour que l'appel de la méthode ACS se termine.Vous pouvez lancer l'authentification en renseignant les champs obligatoires suivants dans la méthode initiateAuthentication()
:
- transactionId : identifiant unique de cette authentification de paiement.
- orderId : identifiant unique de cette commande.
- callback : fonction de rappel.
- optionalParams : (facultatif) argument avec tout champ de demande d'API REST Initiate Authentication (Initier l'authentification) supplémentaire, tel que correlationId.
Si l'authentification 3DS du payeur est disponible, les champs suivants sont renvoyés dans l'argument data
de la fonction de rappel. Sinon, la réponse comprendra une erreur.
data.restApiResponse
: contient une réponse brute de l'appel de l'API REST Initiate Authentication (Initier l'authentification).data.correlationId
: dernier ID de corrélation utilisé pour effectuer l'appel de l'API REST Initiate Authentication (Initier l'authentification). Il vous permet de faire correspondre la réponse à la demande.data.gatewayRecommendation
data.authenticationVersion
: retourne à l'authentification 3DS1 ou 3DS2 si celle-ci est disponible. Notez que les scénarios de retour ne s'appliqueront qu'aux marchés réglementés. Pour plus d'informations sur les scénarios de retour, voir Initiate Authentication (Initier l'authentification) - Retour à l'authentification 3DS1.
Pour déterminer l'étape suivante, vérifiez la recommandation de la passerelle fournie dans le champ gatewayRecommendation. Veuillez noter que cette recommandation est basée uniquement sur les règles de filtrage de transaction 3DS configurées par vous-même ou par votre your payment service provider.
gatewayRecommendation |
Étape suivante |
---|---|
DO_NOT_PROCEED | Ne pas procéder à l'authentification 3DS pour cette carte, mais vous voudrez peut-être procéder au paiement sans les données 3DS. Ou vous pouvez proposer au payeur d'essayer un autre mode de paiement. |
PROCEED | Vous pouvez procéder à l'authentification du payeur en utilisant la méthode d'appel authenticatePayer( ) . |
var optionalParams = { sourceOfFunds: { type: "CARD" }, order: { walletProvider: "MASTERPASS_ONLINE" } }; ThreeDS.initiateAuthentication({orderId}, {transactionId}, function (data) { if (data && data.error) { var error = data.error; //Something bad happened, the error value will match what is returned by the Authentication API console.error("error.code : ", error.code); console.error("error.msg : ", error.msg); console.error("error.result : ", error.result); console.error("error.status : ", error.status); } else { console.log("After Initiate 3DS ", data); //data.response will contain information like gatewayRecommendation, authentication version, etc. console.log("REST API raw response ", data.restApiResponse); console.log("Correlation Id", data.correlationId); console.log("Gateway Recommendation", data.gatewayRecommendation); console.log("HTML Redirect Code", data.htmlRedirectCode); console.log("Authentication Version", data.authenticationVersion); switch (data.gatewayRecommendation) { case "PROCEED": authenticatePayer();//merchant's method break; case "DO_NOT_PROCEED": displayReceipt(data);//merchant's method, you can offer the payer the option to try another payment method. break; } } }, optionalParams);
{ "authentication":{ "3ds2":{ "methodCompleted":false, "methodSupported":"SUPPORTED" }, "redirect":{ "customized":{ "3DS":{ "methodPostData":"eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly9xYTA0LmdhdGV3YXkubWFzdGVyY2FyZC5jb20vY2FsbGJhY2tJbnRlcmZhY2UvZ2F0ZXdheS80ZjNmMGQyMjM5NzQwODE2OWIwMWFiYzg2OTQyZTY5NzBmODA2M2M0MDU4ZjAzNjNlOTFlMmJiOTNkOTA0NzU3IiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiJhYWY5YjU5ZC0yZTA0LTRjZDUtOTQzOC01OGU4MGEzNzBiNWEifQ==", "methodUrl":"<method_url>" } } }, "redirectHtml":"<div id=\"initiate3dsSimpleRedirect\" xmlns=\"http://www.w3.org/1999/html\"> <iframe id=\"methodFrame\" name=\"methodFrame\" height=\"100\" width=\"200\" > </iframe> <form id =\"initiate3dsSimpleRedirectForm\" method=\"POST\" action=\"https://<host_name>/acs/v2/method\" target=\"methodFrame\"> <input type=\"hidden\" name=\"threeDSMethodData\" value=\"eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly9xYTA0LmdhdGV3YXkubWFzdGVyY2FyZC5jb20vY2FsbGJhY2tJbnRlcmZhY2UvZ2F0ZXdheS80ZjNmMGQyMjM5NzQwODE2OWIwMWFiYzg2OTQyZTY5NzBmODA2M2M0MDU4ZjAzNjNlOTFlMmJiOTNkOTA0NzU3IiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiJhYWY5YjU5ZC0yZTA0LTRjZDUtOTQzOC01OGU4MGEzNzBiNWEifQ==\" /> </form> <script>document.getElementById(\"initiate3dsSimpleRedirectForm\").submit();</script> </div>", "version":"3DS2" }, "order":{ "currency":"AUD", "status":"AUTHENTICATION_INITIATED" }, "response":{ "gatewayCode":"AUTHENTICATION_IN_PROGRESS", "gatewayRecommendation":"PROCEED_WITH_AUTHENTICATION" }, "result":"SUCCESS", "sourceOfFunds":{ "provided":{ "card":{ "number":"512345xxxxxx0008" } }, "type":"CARD" }, "transaction":{ "authenticationStatus":"AUTHENTICATION_AVAILABLE" }, "version":"72" }
{ "authentication":{ "redirect":{ "customized":{ "3DS":{ "methodPostData":"e30=", "methodUrl":"<method_url>" } } }, "redirectHtml": "<script id=\"initiate-authentication-script\"></script>", "version": "3DS1" }, "order": { "authenticationStatus": "AUTHENTICATION_AVAILABLE", "currency": "EUR", "status": "AUTHENTICATION_INITIATED" }, "response": { "gatewayCode": "AUTHENTICATION_IN_PROGRESS", "gatewayRecommendation": "PROCEED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "number": "512345xxxxxx0008" } }, "type": "CARD" }, "transaction": { "authenticationStatus": "AUTHENTICATION_AVAILABLE" }, "version": "72" }
Étape 4 : Authentifier le payeur
Lorsque la réponse Initiate Authentication (Initier l'authentification) a indiqué que l'authentification était disponible (transaction.authenticationStatus=AUTHENTICATION_AVAILABLE), vous pouvez appeler la méthode authenticatePayer()
. Vous devez appeler cette opération lorsque le payeur clique sur le bouton « Payer maintenant » sur la page de paiement.
Vous devez appeler la méthode authenticatePayer()
en renseignant les champs obligatoires suivants :
orderId
: même orderId que dans la méthodeinitiateAuthentication()
précédente.transactionId
: même transactionId que dans la méthodeinitiateAuthentication()
précédente.callback
: fonction de rappel.optionalParams
: (facultatif) argument avec tous les champs de demande de l'API REST Authenticate Payer (Authentifier le payeur) supplémentaires, tels que la facturation et l'expédition.
Les champs suivants sont retournés dans l'argument data
de la fonction de rappel :
data.restApiResponse
: contient une réponse brute de l'appel de l'API REST Authenticate Payer (Authentifier le payeur).data.correlationId
: dernier ID de corrélation utilisé pour effectuer l'appel de l'API REST Authenticate Payer (Authentifier le payeur). Il vous permet de faire correspondre la réponse à la demande.data.gatewayRecommendation
data.htmlRedirectCode
: la passerelle renvoie toujours ce champ pour insertion dans la page affichée au payeur.
Pour déterminer l'étape suivante, vérifiez la recommandation de la passerelle fournie dans le champ gatewayRecommendation
retourné dans le rappel. Veuillez noter que cette recommandation est basée uniquement sur les règles de filtrage de transaction 3DS configurées par vous-même ou par votre your payment service provider.
gatewayRecommendation |
Étape suivante |
---|---|
DO_NOT_PROCEED | Ne pas poursuivre avec cette carte car l'authentification est refusée ou non disponible, mais vous voudrez peut-être procéder au paiement sans les données 3DS. Ou vous pouvez proposer au payeur d'essayer un autre mode de paiement. |
PROCEED | Vous pouvez poursuivre et terminer le processus d'authentification (flux d'authentification) ou terminer le paiement (flux sans friction). |
Si la passerelle vous recommande PROCEED
, collez le contenu du champ de réponse htmlRedirectCode
sur la page affichée au payeur.
Flux sans friction
Le navigateur du payeur est directement redirigé sur votre site Web. Vous pouvez poursuivre et soumettre un paiement ultérieur à la passerelle. La passerelle obtient les données d'authentification liées au paiement et garantit que les paiements ne seront traités qu'après le succès de toutes les règles de filtrage de transaction 3DS (configurées par vous-même ou par votre your payment service provider).
Flux d'authentification
Le navigateur du payeur est redirigé vers le serveur ACS où l'IU d'authentification de l'émetteur lui est présentée, après quoi le payeur est redirigé sur votre site Web. Les champs suivants sont retournés dans le rappel, une fois que le navigateur du payeur a été redirigé sur votre site Web.
- orderId
- transactionId
- gatewayRecommendation
- restApiResponse
Vous pouvez déterminer le résultat de l'authentification à l'aide de la valeur retournée dans le champ gatewayRecommendation
. Veuillez noter que cette recommandation est basée uniquement sur les règles de filtrage de transaction 3DS configurées par vous-même ou par votre your payment service provider.
gatewayRecommendation |
Étape suivante |
---|---|
DO_NOT_PROCEED | Ne pas poursuivre pas avec cette carte car l'authentification a été refusée ou n'est pas disponible. Vous pouvez proposer au payeur d'essayer un autre mode de paiement. |
PROCEED | Vous pouvez procéder au paiement car l'authentification a été accordée. |
Les champs retournés dans restApiResponse
dépendent du flux en vigueur (sans friction vs authentification) et de la manière dont la demande d'authentification a été initiée (authentication.channel).
Pour une demande authentifiée par session, la réponse est filtrée pour supprimer les données qui ne sont pas liées au payeur et seuls les champs en liste blanche sont retournés. Pour plus d'informations, voir Opérations authentifiées par session.
Intégrations avancées
La demande soumise par le navigateur du payeur à votre site Web à la fin de la méthode authenticatePayer()
est paramétrée de manière à vous permettre de déterminer le résultat de l'authentification. Les paramètres d'authentification individuels, par exemple, authentication.3ds2.transactionStatus.data
, peuvent être utiles dans une intégration avancée ou si vous avez besoin d'indiquer les données d'authentification dans un paiement traité via une autre passerelle. Voir Intégrations de sessions de paiement avancées.
var optionalParams = { fullScreenRedirect: true, billing: { address: { city: "London", country: "GBR" } } }; ThreeDS.authenticatePayer({orderId}, {transactionId}, function (data) { if (!data.error) { //data.response will contain all the response payload from the AUTHENTICATE_PAYER call. console.log("REST API response ", data.restApiResponse); console.log("HTML redirect code", data.htmlRedirectCode); displayReceipt(data); } }, optionalParams); function displayReceipt(apiResponse) { var responseBody = { "apiResponse": apiResponse }; var xhr = new XMLHttpRequest(); xhr.open('PUT', '3dsreceipt', true); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.onreadystatechange = function () { if (xhr.readyState == XMLHttpRequest.DONE) { document.documentElement.innerHTML = this.response; } } xhr.send(JSON.stringify(responseBody)); }
{ "authentication":{ "3ds":{ "transactionId":"6dfa4509-1bf2-425b-965b-d44dd11f5f91" }, "3ds2":{ "3dsServerTransactionId":"8c4a911c-289a-46c2-a615-887e1cc01a6a", "acsTransactionId":"2a8234c9-e8ac-449d-a693-97a113b491fc", "directoryServerId":"A000000004", "dsTransactionId":"6dfa4509-1bf2-425b-965b-d44dd11f5f91", "methodCompleted":false, "methodSupported":"SUPPORTED", "protocolVersion":"2.1.0", "requestorId":"test2ID", "requestorName":"test2Name", "transactionStatus":"C" }, "method":"OUT_OF_BAND", "payerInteraction":"REQUIRED", "redirect":{ "customized":{ "3DS":{ "acsUrl":"https://<host_name>/acs/v2/prompt", "cReq":"eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImNhODM1ZDQxLTBlMDktNGI3OC1hNmUyLWQwZjJiNjFlZjBjOCJ9" } }, "domainName":"<domain_name>" }, "redirectHtml":"<div id=\"threedsChallengeRedirect\" xmlns=\"http://www.w3.org/1999/html\"> <form id =\"threedsChallengeRedirectForm\" method=\"POST\" action=\"https://<host_name>/acs/v2/prompt\" target=\"challengeFrame\"> <input type=\"hidden\" name=\"creq\" value=\"eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImNhODM1ZDQxLTBlMDktNGI3OC1hNmUyLWQwZjJiNjFlZjBjOCJ9\" /> </form> <iframe id=\"challengeFrame\" name=\"challengeFrame\" width=\"100%\" height=\"100%\" ></iframe> <script id=\"authenticate-payer-script\"> var e=document.getElementById(\"threedsChallengeRedirectForm\"); if (e) { e.submit(); e.remove(); } </script> </div>", "version":"3DS2" }, "correlationId":"test", "device":{ "browser":"MOZILLA", "ipAddress":"127.0.0.1" }, "merchant":"TEST_3DS2-1", "order":{ "amount":100, "authenticationStatus":"AUTHENTICATION_PENDING", "creationTime":"2021-04-13T02:22:59.113Z", "currency":"AUD", "id":"807a01b6-e6c8-4aa7-b8da-799bfff89496", "lastUpdatedTime":"2021-04-13T02:44:07.161Z", "merchantCategoryCode":"1234", "status":"AUTHENTICATION_INITIATED", "totalAuthorizedAmount":0, "totalCapturedAmount":0, "totalRefundedAmount":0, "valueTransfer":{ "accountType":"NOT_A_TRANSFER" } }, "response":{ "gatewayCode":"PENDING", "gatewayRecommendation":"PROCEED" }, "result":"PENDING", "sourceOfFunds":{ "provided":{ "card":{ "expiry":{ "month":"1", "year":"39" }, "number":"512345xxxxxx0008", "scheme":"MASTERCARD" } }, "type":"CARD" }, "timeOfLastUpdate":"2021-04-13T02:44:07.161Z", "timeOfRecord":"2021-04-13T02:22:59.113Z", "transaction":{ "acquirer":{ "merchantId":"99554411" }, "amount":100, "authenticationStatus":"AUTHENTICATION_PENDING", "currency":"AUD", "id":"42090084", "type":"AUTHENTICATION" }, "version":"60" }
{ "authentication":{ "3ds1":{ "veResEnrolled":"Y" }, "payerInteraction":"REQUIRED", "redirect":{ "domainName":"<domain_name>" }, "redirectHtml":"<div id=\"redirectTo3ds1AcsSimple\" xmlns=\"http://www.w3.org/1999/html\"> <iframe id=\"redirectTo3ds1Frame\" name=\"redirectTo3ds1Frame\" height=\"100%\" width=\"100%\" > </iframe> <form id =\"redirectTo3ds1Form\" method=\"POST\" action=\"https://<host_name>/acs/b6594e88-608f-4897-a8b5-dd491dc1e54d\" target=\"redirectTo3ds1Frame\"> <input type=\"hidden\" name=\"PaReq\" value=\"eAFVUd9vgjAQfjfxfyBkr6OlgENz1uDUaBadmZr9eFlYaYRFwNEi7r9fizC3e7rvu97Xu+9gdE4PxokXIsmzoWlb2DR4xvIoyfZDc7ed3frmiHY7sI0LzicbzsqCU1hyIcI9N5JI9XiuT8hdz6SwDp74F4VGjio1iwBqoeoqWBxmkkLIvsaLFbWbANQQkPJiMaGSCwnokkMWppxulo8P03dnslF6NQEsLzNZfFPs9AC1AMriQGMpjwOEqqqyRJrIWFgsTwHpEqDrDOtSTyPUNuckovPpYo484o53n1XwHK9Orx9sFvRexFs+BKRfQBRKTgm2+9gnvoGdgY0H2AVU8xCmeiAa7CbGjY2xhbHa6sLBUX8VXICq6dJfCpSphXK9XaZFwM/HPONKVW39mwO6Tn4/114yqTzzbOK4Xr8On7jKlKagVRJlFLGxV8toAEi3ouZgypX6nor5d+du5wf/BK8K\" /> <input type=\"hidden\" name=\"TermUrl\" value=\"https://<host_name>/callbackInterface/gateway/e91c0cc18c143f205a081cde25a3a8cec28b04bb90169115295beb29d0c1dc28\" /> <input type=\"hidden\" name=\"MD\" value=\"\" /> </form> <script id=\"authenticate-payer-script\"> var e=document.getElementById(\"redirectTo3ds1Form\"); if (e) { e.submit(); e.remove(); } </script> </div>", "version":"3DS1" }, "correlationId":"test", "device":{ "browser":"MOZILLA", "ipAddress":"127.0.0.1" }, "merchant":"TEST_3DS2-1", "order":{ "amount":100, "authenticationStatus":"AUTHENTICATION_PENDING", "creationTime":"2021-04-13T02:52:24.532Z", "currency":"AUD", "id":"3bdbe65b-d0db-4a7d-a8a1-59ae3723da77", "merchantCategoryCode":"1234", "status":"AUTHENTICATION_INITIATED", "totalAuthorizedAmount":0, "totalCapturedAmount":0, "totalRefundedAmount":0, "valueTransfer":{ "accountType":"NOT_A_TRANSFER" } }, "response":{ "gatewayCode":"PENDING", "gatewayRecommendation":"PROCEED" }, "result":"PENDING", "sourceOfFunds":{ "provided":{ "card":{ "expiry":{ "month":"1", "year":"39" }, "number":"512345xxxxxx8246", "scheme":"MASTERCARD" } }, "type":"CARD" }, "timeOfLastUpdate":"2021-04-13T02:54:19.182Z", "timeOfRecord":"2021-04-13T02:52:24.532Z", "transaction":{ "acquirer":{ "merchantId":"99554411" }, "amount":100, "authenticationStatus":"AUTHENTICATION_PENDING", "currency":"AUD", "id":"three", "type":"AUTHENTICATION" }, "version":"60" }
Étape 5 : Utiliser les résultats de l'authentification dans une opération de paiement
Lorsque le résultat de la méthode authenticatePayer()
indique que vous pouvez poursuivre le paiement (gatewayRecommendation=PROCEED), vous pouvez lancer une opération Authorize (Autoriser) ou Pay (Payer). En plus des champs standard, vous devez renseigner les champs suivants :
- order.id : indiquez l'ID
orderId
que vous avez indiqué dans les méthodesinitiateAuthentication()
etauthenticatePayer()
. - authentication.transactionId : indiquez l'ID
transactionId
que vous avez indiqué dans les méthodesinitiateAuthentication()
etauthenticatePayer()
. Il est inutile d'inclure des champs du groupe de paramètres d'authentification, car la passerelle utilise le champ authentication.transactionId pour rechercher les résultats de l'authentification stockés lorsque vous lui demandez d'effectuer une authentification. La passerelle transmet les informations demandées à l'acquéreur.
URL | https://eu-gateway.mastercard.com/api/rest/version/<version>/merchant/<your_merchant_ID>/order/<your_order_ID>/transaction/<your_transaction_ID> |
Méthode HTTP | PUT |
{ "apiOperation":"PAY", "authentication":{ "transactionId":"<your_transaction_ID>" }, "order":{ "amount":"100", "currency":"AUD", "reference":"<your_order_ID>" }, "sourceOfFunds":{ "provided":{ "card":{ "number":"<card_number>", "expiry":{ "month":"1", "year":"39" } } }, "type":"CARD" }, "transaction":{ "reference":"<your_order_ID>" } }
{ "authentication":{ "3ds":{ "acsEci":"02", "authenticationToken":"kHyn+7YFi1EUAREAAAAvNUe6Hv8=", "transactionId":"39c25b96-7bc3-4586-bee8-056479fed3af" }, "3ds2":{ "dsTransactionId":"39c25b96-7bc3-4586-bee8-056479fed3af", "protocolVersion":"2.1.0", "transactionStatus":"Y" }, "transactionId":"249213216", "version":"3DS2" }, "authorizationResponse":{ "posData":"1605S0100130", "transactionIdentifier":"TidTest" }, "device":{ "browser":"MOZILLA", "ipAddress":"127.0.0.1" }, "gatewayEntryPoint":"WEB_SERVICES_API", "merchant":"TEST_3DS2-1", "order":{ "amount":100.00, "authenticationStatus":"AUTHENTICATION_SUCCESSFUL", "chargeback":{ "amount":0, "currency":"AUD" }, "creationTime":"2021-04-13T02:11:06.102Z", "currency":"AUD", "id":"807a01b6-e6c8-4aa7-b8da-799bfff89496", "lastUpdatedTime":"2021-04-13T02:11:57.049Z", "merchantAmount":100.00, "merchantCategoryCode":"1234", "merchantCurrency":"AUD", "reference":"807a01b6-e6c8-4aa7-b8da-799bfff89496", "status":"CAPTURED", "totalAuthorizedAmount":100.00, "totalCapturedAmount":100.00, "totalRefundedAmount":0.00 }, "response":{ "acquirerCode":"00", "gatewayCode":"APPROVED" }, "result":"SUCCESS", "sourceOfFunds":{ "provided":{ "card":{ "brand":"MASTERCARD", "expiry":{ "month":"1", "year":"39" }, "fundingMethod":"CREDIT", "issuer":"<issuer>", "number":"512345xxxxxx0008", "scheme":"Mastercard", "storedOnFile":"NOT_STORED" } }, "type":"CARD" }, "timeOfLastUpdate":"2021-04-13T02:11:57.049Z", "timeOfRecord":"2021-04-13T02:11:56.973Z", "transaction":{ "acquirer":{ "batch":1, "id":"<acquirer_id>", "merchantId":"99554411" }, "amount":100.00, "authenticationStatus":"AUTHENTICATION_SUCCESSFUL", "authorizationCode":"028941", "currency":"AUD", "id":"1", "receipt":"1908266016", "reference":"807a01b6-e6c8-4aa7-b8da-799bfff89496", "source":"INTERNET", "stan":"496", "terminal":"1234", "type":"PAYMENT" }, "version":"60" }
{ "authentication":{ "3ds":{ "acsEci":"02", "authenticationToken":"jHyn+7YFi1EUAREAAAAvNUe6Hv8=", "transactionId":"3nzQOuTJDVOsRLuDT9V671B8QkU=" }, "3ds1":{ "paResStatus":"Y", "veResEnrolled":"Y" }, "transactionId":"5791", "version":"3DS1" }, "authorizationResponse":{ "posData":"1605S0100130", "transactionIdentifier":"TidTest" }, "device":{ "browser":"MOZILLA", "ipAddress":"127.0.0.1" }, "gatewayEntryPoint":"WEB_SERVICES_API", "merchant":"TEST_3DS2-1", "order":{ "amount":100.00, "authenticationStatus":"AUTHENTICATION_SUCCESSFUL", "chargeback":{ "amount":0, "currency":"AUD" }, "creationTime":"2021-04-13T03:17:44.895Z", "currency":"AUD", "id":"f808076a-0bc6-4f1b-8100-cfe46e43676e", "lastUpdatedTime":"2021-04-13T03:19:45.964Z", "merchantAmount":100.00, "merchantCategoryCode":"1234", "merchantCurrency":"AUD", "reference":"9b57808a-474e-445d-b2ca-09d571f5ea75", "status":"CAPTURED", "totalAuthorizedAmount":100.00, "totalCapturedAmount":100.00, "totalRefundedAmount":0.00 }, "response":{ "acquirerCode":"00", "gatewayCode":"APPROVED" }, "result":"SUCCESS", "sourceOfFunds":{ "provided":{ "card":{ "brand":"MASTERCARD", "expiry":{ "month":"1", "year":"39" }, "fundingMethod":"CREDIT", "issuer":"<issuer>", "number":"512345xxxxxx8246", "scheme":"Mastercard", "storedOnFile":"NOT_STORED" } }, "type":"CARD" }, "timeOfLastUpdate":"2021-04-13T03:19:45.964Z", "timeOfRecord":"2021-04-13T03:19:45.703Z", "transaction":{ "acquirer":{ "batch":1, "id":"<acquirer_id>", "merchantId":"99554411" }, "amount":100.00, "authenticationStatus":"AUTHENTICATION_SUCCESSFUL", "authorizationCode":"003879", "currency":"AUD", "id":"1", "receipt":"1908286018", "reference":"9b57808a-474e-445d-b2ca-09d571f5ea75", "source":"INTERNET", "stan":"499", "terminal":"1234", "type":"PAYMENT" }, "version":"60" }
Étape 1 : Initier l'authentification
L'opération Initiate Authentication (Initier l'authentification) est utilisée pour déterminer les versions de l'authentification 3DS disponibles pour une carte donnée, basées sur les éléments suivants :
- les versions de l'authentification 3DS configurées sur votre profil de commerçant, par exemple, 3DS1 ou 3DS2,
- le type de carte,
- les préférences que vous avez indiquées dans la demande,
- le résultat des demandes que la passerelle a envoyées aux prestataires de services d'authentification concernés pour vérifier la disponibilité / la prise en charge de la carte donnée, et
- les règles de filtrage de transaction 3DS de la passerelle configurées par vous ou votre prestataire de services de paiement.
L'opération permet également à toutes les activités en arrière-plan (telles qu'un appel de la méthode ACS) d'être exécutées afin de, par exemple, recueillir des données de payeur supplémentaires pour prendre en charge une opération Authenticate Payer (Authentifier le payeur) ultérieure.
Vous pouvez initier l'authentification en renseignant les champs suivants dans la demande Initiate Authentication (Initier l'authentification) :
Paramètre | Existence | Description |
---|---|---|
session.id ou sourceOfFunds.provided.card.* ou sourceOfFunds.token |
Obligatoire | Détails de la carte utilisée pour le paiement. Notez que vous pouvez également utiliser des jetons de réseau et des jetons de paiement mobile comme source de fonds dans l'authentification du payeur. Pour plus d'informations, voir la rubrique Questions fréquentes. |
order.currency |
Obligatoire | Devise de la commande. |
transaction.id |
Obligatoire | Identifiant unique de cette authentification de paiement. |
order.id |
Obligatoire | Identifiant unique de cette commande. |
authentication.channel |
Obligatoire | Canal dans lequel la demande d'authentification est initiée. Vous pouvez spécifier l'un des éléments suivants :
|
authentication.purpose |
Facultatif | Par défaut, ce champ est défini sur « PAYMENT_TRANSACTION » pour indiquer que l'authentification doit être effectuée lors du traitement d'un paiement par carte. Cependant, vous pouvez spécifier un motif différent pour indiquer l'authentification hors paiement. Voir Soumettre une demande Non-Payment Authentication (Authentification hors paiement). |
authentication.acceptVersions |
Facultatif | Versions de l'authentification 3DS que vous acceptez pour ce paiement. Si vous ne spécifiez pas de version, 3DS1 et 3DS2 sont acceptés. La passerelle utilise l'authentification 3DS2 (si elle est prise en charge par l'émetteur et par la carte) et ne revient à l'authentification 3DS1 que lorsque l'authentification 3DS2 n'est pas disponible. Si aucune des deux n'est disponible, l'authentification ne se poursuit pas. |
order.merchantCategoryCode |
Facultatif | Indiquez le code de catégorie du commerçant si vous souhaitez remplacer la valeur par défaut configurée sur votre lien d'acquéreur. |
La passerelle renvoie les champs clés suivants dans la réponse Initiate Authentication (Initier l'authentification) :
authentication.version
: si l'authentification 3DS du payeur est disponible, ce champ affiche le type 3DS1 ou 3DS2. Si les deux sont disponibles, 3DS2 est retourné.authentication.3ds2.methodSupported
: si l'authentification 3DS2 est disponible et si le serveur ACS de l'émetteur prend en charge un appel de méthode, ce champ affiche SUPPORTED. L'appel de méthode peut être utilisé par le serveur ACS pour recueillir des données supplémentaires avant la demande d'authentification afin d'augmenter la probabilité de disponibilité d'une authentification sans friction. L'appel de méthode est déclenché dans une iFrame masquée, il est donc invisible pour le payeur. Il ne fournit également aucun rappel lorsqu'il se termine.transaction.authenticationStatus
: consultez ce champ si vous souhaitez plus de détails sur le statut d'authentification.response.gatewayRecommendation
: ce champ vous permet de déterminer l'étape suivante. Veuillez noter que cette recommandation est basée uniquement sur les règles de filtrage de transaction 3DS configurées par vous-même ou par votre prestataire de services de paiement.
response.gatewayRecommendation
Étape suivante DO_NOT_PROCEED Ne procédez pas à l'authentification 3DS pour cette carte, mais vous voudrez peut-être procéder au paiement sans les données 3DS. Ou vous pouvez proposer au payeur d'essayer un autre mode de paiement. PROCEED Vous pouvez procéder à l'authentification du payeur en utilisant l'opération Authenticate Payer (Authentifier le payeur). authentication.redirect.html
: insérez le contenu de ce champ sur la page affichée au payeur. Pour ce faire, ajoutez le contenu texte à un élément DIV masqué et spécifiez l'identifiant du script dans le HTML DOM. Cela va créer et publier le formulaire automatiquement. Par exemple :div.innerHtml= response.authentication.redirect.html; eval(document.getElementById('initiate-authentication-script').text)
Si la passerelle vous recommande de ne pas poursuivre, le fait d'insérer le contenu de ce champ sur votre page Web n'exécutera aucune fonctionnalité.
URL | https://eu-gateway.mastercard.com/api/rest/version/<version>/merchant/<your_merchant_ID>/order/<your_order_ID>/transaction/<your_transaction_ID> |
Méthode HTTP | PUT |
{ "authentication":{ "acceptVersions":"3DS1,3DS2", "channel":"PAYER_BROWSER", "purpose":"PAYMENT_TRANSACTION" }, "correlationId":"test", "order":{ "currency":"AUD" }, "sourceOfFunds":{ "provided":{ "card":{ "number":"<card_number>" } } }, "apiOperation":"INITIATE_AUTHENTICATION" }
{ "authentication": { "3ds2": { "directoryServerId": "A999999999", "methodCompleted": false, "methodSupported": "SUPPORTED", "protocolVersion": "2.1.0", "requestorId": "test40Field@S^2sfds2ID", "requestorName": "test40Field@S^2sfds2Name" }, "acceptVersions": "3DS1,3DS2", "channel": "PAYER_BROWSER", "purpose": "PAYMENT_TRANSACTION", "redirect": { "customizedHtml": { "3ds2": { "methodPostData": "eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly9kbDAzYXNwYWxsMDN2Lm1wZ3NkZXYubWFzdGVyY2FyZC5pbnQvY2FsbGJhY2tJbnRlcmZhY2UvZ2F0ZXdheS9mOGIzNjQ5ZDRiOWU3OTg4M2M0ODE4MmRjZmRkY2JjYTAxMTE3MTc0ZTkxODRiODAzM2NkMzg3NTQ4MjlhMTRlIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiJjYTdjMTU0YS1jZTZkLTRkNjYtYTc4My02MjdmZTcyMjQ4ZTEifQ==", "methodUrl": "<method_url>" } }, "html": "<div id=\"initiate3dsSimpleRedirect\" xmlns=\"http://www.w3.org/1999/html\"> <iframe id=\"methodFrame\" name=\"methodFrame\" height=\"100\" width=\"200\" > </iframe> <form id =\"initiate3dsSimpleRedirectForm\" method=\"POST\" action=\"<method_url>" target=\"methodFrame\"> <input type=\"hidden\" name=\"threeDSMethodData\" value=\"eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly9kbDAzYXNwYWxsMDN2Lm1wZ3NkZXYubWFzdGVyY2FyZC5pbnQvY2FsbGJhY2tJbnRlcmZhY2UvZ2F0ZXdheS9mOGIzNjQ5ZDRiOWU3OTg4M2M0ODE4MmRjZmRkY2JjYTAxMTE3MTc0ZTkxODRiODAzM2NkMzg3NTQ4MjlhMTRlIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiJjYTdjMTU0YS1jZTZkLTRkNjYtYTc4My02MjdmZTcyMjQ4ZTEifQ==\" /> </form> <script id=\"initiate-authentication-script\"> var e=document.getElementById(\"initiate3dsSimpleRedirectForm\"); if (e) { e.submit(); if (e.parentNode !== null) { e.parentNode.removeChild(e); } } </script> </div>" }, "version": "3DS2" }, "correlationId": "test", "merchant": "TEST3DS12AUTH", "order": { "authenticationStatus": "AUTHENTICATION_AVAILABLE", "creationTime": "2022-06-24T06:57:32.714Z", "currency": "USD", "id": "TEST4", "lastUpdatedTime": "2022-06-24T06:57:32.661Z", "merchantCategoryCode": "1234", "status": "AUTHENTICATION_INITIATED", "totalAuthorizedAmount": 0, "totalCapturedAmount": 0, "totalRefundedAmount": 0 }, "response": { "gatewayCode": "AUTHENTICATION_IN_PROGRESS", "gatewayRecommendation": "PROCEED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "fundingMethod": "CREDIT", "number": "512345xxxxxx0008", "scheme": "MASTERCARD" } }, "type": "CARD" }, "timeOfLastUpdate": "2022-06-24T06:57:32.661Z", "timeOfRecord": "2022-06-24T06:57:32.714Z", "transaction": { "amount": 0, "authenticationStatus": "AUTHENTICATION_AVAILABLE", "currency": "USD", "id": "1", "type": "AUTHENTICATION" }, "version": "67" }
{ "authentication": { "3ds1": { "veResEnrolled": "Y" }, "acceptVersions": "3DS1,3DS2", "channel": "PAYER_BROWSER", "purpose": "PAYMENT_TRANSACTION", "redirect": { "html": "<script id=\"initiate-authentication-script\"></script>" }, "version": "3DS1" }, "correlationId": "test", "merchant": "TEST3DS12AUTH", "order": { "authenticationStatus": "AUTHENTICATION_AVAILABLE", "creationTime": "2022-06-24T07:00:51.195Z", "currency": "USD", "id": "TEST5", "lastUpdatedTime": "2022-06-24T07:00:51.126Z", "merchantCategoryCode": "1234", "status": "AUTHENTICATION_INITIATED", "totalAuthorizedAmount": 0, "totalCapturedAmount": 0, "totalRefundedAmount": 0 }, "response": { "gatewayCode": "AUTHENTICATION_IN_PROGRESS", "gatewayRecommendation": "PROCEED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "fundingMethod": "CREDIT", "number": "512345xxxxxx8246", "scheme": "MASTERCARD" } }, "type": "CARD" }, "timeOfLastUpdate": "2022-06-24T07:00:51.126Z", "timeOfRecord": "2022-06-24T07:00:51.195Z", "transaction": { "amount": 0, "authenticationStatus": "AUTHENTICATION_AVAILABLE", "currency": "USD", "id": "1", "type": "AUTHENTICATION" }, "version": "67" }
Étape 2 : Authentifier le payeur
Lorsque la réponse Initiate Authentication (Initier l'authentification) a indiqué que l'authentification était disponible (transaction.authenticationStatus=AUTHENTICATION_AVAILABLE), et une fois toutes les données relatives au payeur et au paiement recueillies, vous pouvez soumettre la demande Authenticate Payer (Authentifier le payeur). Vous devez appeler cette opération lorsque le payeur clique sur le bouton « Payer maintenant » sur la page de paiement.
Soumettez cette opération en renseignant les champs suivants. Si vous ne prenez en charge que l'authentification 3DS1, la passerelle ignore les champs spécifiques à l'authentification 3DS2.
Paramètre | Existence | Description |
---|---|---|
session.id ou sourceOfFunds.provided.card.* ou sourceOfFunds.token |
Obligatoire | Détails de la carte utilisée pour le paiement. |
order.amount |
Obligatoire | Montant total de la commande. |
transaction.id |
Obligatoire | Même transaction.id que dans l'opération Initiate Authentication (Initier l'authentification) précédente. |
order.id |
Obligatoire | Même order.id que dans l'opération Initiate Authentication (Initier l'authentification) précédente. |
authentication.redirectResponseUrl |
Facultatif | URL vers laquelle vous souhaitez rediriger le payeur après avoir terminé le processus d'authentification du payeur. Vous devez indiquer cette URL, sauf si vous êtes certain qu'il n'y aura aucune interaction avec le payeur. |
order.merchantCategoryCode |
Facultatif | Si vous ne renseignez pas ce champ, la valeur par défaut configurée dans votre profil de commerçant est utilisée. |
device.browser |
Facultatif | Requis si vous prenez en charge l'authentification 3DS2 et si authentication.channel=PAYER_BROWSER. |
device.ipAddress |
Facultatif | Requis si vous prenez en charge l'authentification 3DS2 et si authentication.channel=PAYER_BROWSER, mais avec possibilité d'exclure si nécessaire pour se conformer à la législation locale. |
Groupe de paramètres device.browserDetails |
Facultatif | Requis si vous prenez en charge l'authentification 3DS2 et si authentication.channel=PAYER_BROWSER. |
Groupe de paramètres billing.address |
Facultatif | S'applique uniquement à l'authentification 3DS2. il est fortement recommandé de l'inclure dans votre demande chaque fois qu'il est disponible. |
Groupe de paramètres shipping.address |
Facultatif | S'applique uniquement à l'authentification 3DS2. Il est fortement recommandé de l'inclure dans votre demande chaque fois qu'il est disponible. |
Groupe de paramètres customer |
Facultatif | S'applique uniquement à l'authentification 3DS2. Il est fortement recommandé de l'inclure dans votre demande chaque fois qu'il est disponible. |
La passerelle renvoie les champs clés suivants dans la réponse Authenticate Payer (Authentifier le payeur) :
transaction.authenticationStatus
: consultez ce champ si vous souhaitez plus de détails sur le statut d'authentification.response.gatewayRecommendation
: ce champ vous permet de déterminer si vous devez ou non procéder à une transaction financière. Cette recommandation est uniquement basée sur les règles de filtrage de transaction 3DS configurées par vous-même ou par votre prestataire de services de paiement.
response.gatewayRecommendation
Étape suivante DO_NOT_PROCEED Ne poursuivez pas avec cette carte car l'authentification est refusée ou non disponible, mais vous voudrez peut-être procéder au paiement sans les données 3DS. Ou vous pouvez proposer au payeur d'essayer un autre mode de paiement. PROCEED Vous pouvez poursuivre et terminer le processus d'authentification (flux d'authentification) ou terminer le paiement (flux sans friction). authentication.redirect.html
: insérez le contenu de ce champ sur la page affichée au payeur. Pour ce faire, ajoutez le contenu texte à un élément DIV et spécifiez l'identifiant du script dans le HTML DOM. Cela va créer et publier le formulaire automatiquement. Par exemple :div.innerHtml= response.authentication.redirect.html; eval(document.getElementById('authenticate-payer-script').text)
Si la passerelle vous recommande de ne pas poursuivre, le fait d'insérer le contenu de ce champ sur votre page Web n'exécutera aucune fonctionnalité.
Flux sans friction
Le navigateur du payeur est directement redirigé sur votre site Web. Vous pouvez poursuivre et soumettre un paiement ultérieur à la passerelle. La passerelle obtient les données d'authentification liées au paiement et garantit que les paiements ne seront traités qu'après le succès de toutes les règles de filtrage de transaction 3DS (configurées par vous ou votre prestataire de services de paiement).
Flux d'authentification
Le navigateur du payeur est redirigé vers le serveur ACS où l'IU d'authentification de l'émetteur lui est présentée, après quoi le payeur est redirigé sur votre site Web. Les champs suivants sont retournés dans le rappel, une fois que le navigateur du payeur a été redirigé sur votre site Web.
- order.id
- transaction.id
- response.gatewayRecommendation
- result
Vous pouvez déterminer le résultat de l'authentification à l'aide de la valeur retournée dans le champ response.gatewayRecommendation
. Cette recommandation est uniquement basée sur les règles de filtrage de transaction 3DS configurées par vous-même ou par votre prestataire de services de paiement.
Si vous souhaitez des données de réponse supplémentaires, vous pouvez utiliser l'opération Retrieve Transaction (Extraire la transaction).
response.gatewayRecommendation |
Étape suivante |
---|---|
DO_NOT_PROCEED | Ne pas poursuivre avec cette carte car l'authentification est refusée ou non disponible, mais vous voudrez peut-être procéder au paiement sans les données 3DS. Ou vous pouvez proposer au payeur d'essayer un autre mode de paiement. |
PROCEED | Vous pouvez procéder au paiement car l'authentification a été accordée. |
Les champs retournés dans la réponse Authenticate Payer (Authentifier le payeur) dépendent du flux en vigueur (sans friction vs authentification), de la manière dont la demande d'authentification a été initiée (authentication.channel) et du mécanisme d'authentification pour la demande (session, certificat ou mot de passe).
Les champs suivants sont retournés pour une demande authentifiée par certificat/mot de passe. Pour une opération authentifiée par session, la réponse est filtrée pour supprimer les données qui ne sont pas liées au payeur et seuls les champs en liste blanche sont retournés. Pour plus d'informations, voir Authentification par session.
Response Field |
Authentifié par le commerçant |
---|---|
authentication.method | Oui |
authentication.3ds.authenticationToken | * |
authentication.3ds.acsEci | Oui |
authentication.3ds.transactionId | Oui |
authentication.3ds2.transactionStatus | * |
authentication.3ds2.acsTransactionId | * |
authentication.3ds2.dsTransactionId | * |
authentication.3ds2.3dsServerTransactionId | * |
authentication.3ds2.3dsServerTransactionId | * |
authentication.3ds2.protocolVersion | * |
authentication.3ds1.veResEnrolled | * |
authentication.amount | Oui |
authentication.redirect.html | Oui |
authentication.time | Oui |
response.gatewayRecommendation | Oui |
transaction.type | Oui |
version | Oui |
timeOfRecord | Oui |
result | Oui |
response.debugInformation | * |
URL | https://eu-gateway.mastercard.com/api/rest/version/<version>/merchant/<your_merchant_ID>/order/<your_order_ID>/transaction/<your_transaction_ID> |
Méthode HTTP | PUT |
{ "authentication":{ "redirectResponseUrl":"<host>/merchantSimulator/jsp/simple/output.jsp" }, "correlationId":"test", "device": { "browser": "MOZILLA", "browserDetails": { "3DSecureChallengeWindowSize": "FULL_SCREEN", "acceptHeaders": "application/json", "colorDepth": 24, "javaEnabled": true, "language": "en-US", "screenHeight": 640, "screenWidth": 480, "timeZone": 273 }, "ipAddress": "127.0.0.1" }, "order":{ "amount":"100", "currency":"AUD" }, "sourceOfFunds":{ "provided":{ "card":{ "number":"<card_number>", "expiry":{ "month":"1", "year":"39" } } } }, "apiOperation": "AUTHENTICATE_PAYER" }
{ "authentication": { "3ds": { "transactionId": "a4d6ce7a-52ed-46c4-b1b8-0a64ffa3fdd8" }, "3ds2": { "3dsServerTransactionId": "cf976f0d-cb19-454f-a5b3-3cf09ae07e38", "acsTransactionId": "c8027c6a-94da-480d-9270-85098bc680d5", "directoryServerId": "A999999999", "dsTransactionId": "a4d6ce7a-52ed-46c4-b1b8-0a64ffa3fdd8", "methodSupported": "NOT_SUPPORTED", "protocolVersion": "2.1.0", "requestorId": "test40Field@S^2sfds2ID", "requestorName": "test40Field@S^2sfds2Name", "sdk": { "timeout": 400, "uiType": "TEXT" }, "transactionStatus": "C" }, "amount": 100.00, "method": "OUT_OF_BAND", "payerInteraction": "REQUIRED", "redirect": { "customizedHtml": { "3ds2": { "acsUrl": "<acs_url>", "cReq": "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImNmOTc2ZjBkLWNiMTktNDU0Zi1hNWIzLTNjZjA5YWUwN2UzOCJ9" } }, "domainName": "<acs_domain>", "html": "<div id=\"threedsChallengeRedirect\" xmlns=\"http://www.w3.org/1999/html\"style=\" height: 100vh\"> <form id =\"threedsChallengeRedirectForm\" method=\"POST\" action=\"<acs_url>" target=\"challengeFrame\"> <input type=\"hidden\" name=\"creq\" value=\"eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImNmOTc2ZjBkLWNiMTktNDU0Zi1hNWIzLTNjZjA5YWUwN2UzOCJ9\" /> </form> <iframe id=\"challengeFrame\" name=\"challengeFrame\" width=\"100%\" height=\"100%\" ></iframe> <script id=\"authenticate-payer-script\"> var e=document.getElementById(\"threedsChallengeRedirectForm\"); if (e) { e.submit(); if (e.parentNode !== null) { e.parentNode.removeChild(e); } } </script> </div>" }, "time": "2022-06-24T07:04:34.836Z", "version": "3DS2" }, "correlationId": "test", "device": { "browser": "mozilla", "ipAddress": "127.0.0.1" }, "merchant": "TEST3DS12AUTH", "order": { "amount": 100.00, "authenticationStatus": "AUTHENTICATION_PENDING", "creationTime": "2022-06-24T07:03:43.780Z", "currency": "USD", "id": "TEST6", "lastUpdatedTime": "2022-06-24T07:04:34.795Z", "merchantCategoryCode": "1234", "status": "AUTHENTICATION_INITIATED", "totalAuthorizedAmount": 0, "totalCapturedAmount": 0, "totalRefundedAmount": 0, "valueTransfer": { "accountType": "NOT_A_TRANSFER" } }, "response": { "gatewayCode": "PENDING", "gatewayRecommendation": "PROCEED" }, "result": "PENDING", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "expiry": { "month": "1", "year": "39" }, "fundingMethod": "CREDIT", "number": "512345xxxxxx8212", "scheme": "MASTERCARD" } }, "type": "CARD" }, "timeOfLastUpdate": "2022-06-24T07:04:34.795Z", "timeOfRecord": "2022-06-24T07:03:43.780Z", "transaction": { "acquirer": { "merchantId": "123456" }, "amount": 100.00, "authenticationStatus": "AUTHENTICATION_PENDING", "currency": "USD", "id": "1", "type": "AUTHENTICATION" }, "version": "67" }
{ "authentication": { "3ds1": { "veResEnrolled": "Y" }, "amount": 100.00, "payerInteraction": "REQUIRED", "redirect": { "domainName": "<acs_domain>", "html": "<div id=\"redirectTo3ds1AcsSimple\" xmlns=\"http://www.w3.org/1999/html\"> <iframe id=\"redirectTo3ds1Frame\" name=\"redirectTo3ds1Frame\" height=\"100%\" width=\"100%\" > </iframe> <form id =\"redirectTo3ds1Form\" method=\"POST\" action=\"<acs_url>\" target=\"redirectTo3ds1Frame\"> <input type=\"hidden\" name=\"PaReq\" value=\"eAFVUctuwjAQvCPxD1HUG2rsmPDUYkSLaJH6UoEeuKXJNklFEnAcHn/fdQi09cHyzHrH41kYH9ONtUdVJHk2sl2H2xZmQR4mWTSyV8vZbd8ey2YDlrFCnC4wKBVKeMai8CO0kpB6uHD7XNgS3ibvuJNQq0kScwSwC6QmFcR+piX4we5u/iLdegGrCUhRzadSY6GBnc+Q+SlKs71+XQSAVSQEeZlpdZK83QV2AVCqjYy13hZDxg6Hg+MHKR6SMEJdOEGeAjMXgF3EyHZpfBX0rWMSytan6j6VD9/d/bpdfqx0PCha+7WaLXrRCJi5AaGvUQouBO8Kz+K9oesOPRdYxYOfGltytZhaNy7nDuf0vzMHW/PU5AyoZkp/KaB0FcV/kn2PSlcEeNzmGZIq5Xk9A/t1fv9oUg00pddxRdvrDKrVFx5FUxeMSkJxtQeczNYAmGll9egolWqwxPwbeLPxA6NgtIg=\" /> <input type=\"hidden\" name=\"TermUrl\" value=\"<callback_url>\" /> <input type=\"hidden\" name=\"MD\" value=\"\" /> </form> <script id=\"authenticate-payer-script\"> var e=document.getElementById(\"redirectTo3ds1Form\"); if (e) { e.submit(); if (e.parentNode !== null) { e.parentNode.removeChild(e); } } </script> </div>" }, "time": "2022-06-24T07:12:00.966Z", "version": "3DS1" }, "correlationId": "test", "device": { "browser": "mozilla", "ipAddress": "127.0.0.1" }, "merchant": "TEST3DS12AUTH", "order": { "amount": 100.00, "authenticationStatus": "AUTHENTICATION_PENDING", "creationTime": "2022-06-24T07:11:40.804Z", "currency": "USD", "id": "TEST7", "lastUpdatedTime": "2022-06-24T07:12:00.949Z", "merchantCategoryCode": "1234", "status": "AUTHENTICATION_INITIATED", "totalAuthorizedAmount": 0, "totalCapturedAmount": 0, "totalRefundedAmount": 0, "valueTransfer": { "accountType": "NOT_A_TRANSFER" } }, "response": { "gatewayCode": "PENDING", "gatewayRecommendation": "PROCEED" }, "result": "PENDING", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "expiry": { "month": "1", "year": "39" }, "fundingMethod": "CREDIT", "number": "512345xxxxxx8246", "scheme": "MASTERCARD" } }, "type": "CARD" }, "timeOfLastUpdate": "2022-06-24T07:12:00.949Z", "timeOfRecord": "2022-06-24T07:11:40.804Z", "transaction": { "acquirer": { "merchantId": "123456" }, "amount": 100.00, "authenticationStatus": "AUTHENTICATION_PENDING", "currency": "USD", "id": "1", "type": "AUTHENTICATION" }, "version": "67" }
Étape 3 : Utiliser les résultats de l'authentification dans une opération de paiement
Lorsque le résultat de l'opération Authenticate Payer (Authentifier le payeur) indique que vous pouvez poursuivre le paiement (response.gatewayRecommendation=PROCEED), vous pouvez initier une opération Authorize (Autoriser) ou Pay (Payer). En plus des champs standard, vous devez renseigner les champs suivants :
- order.id : indiquez la valeur du champ order.id que vous avez fournie dans les opérations Initiate Authentication (Initier l'authentification) et Authenticate Payer (Authentifier le payeur).
- authentication.transactionId : indiquez la valeur du champ transaction.id que vous avez fournie dans les opérations Initiate Authentication (Initier l'authentification) et Authenticate Payer (Authentifier le payeur). Il est inutile d'inclure des champs du groupe de paramètres d'authentification, car la passerelle utilise le champ authentication.transactionId pour rechercher les résultats de l'authentification stockés lorsque vous lui demandez d'effectuer une authentification. La passerelle transmet les informations demandées à l'acquéreur.
URL | https://eu-gateway.mastercard.com/api/rest/version/<version>/merchant/<your_merchant_ID>/order/<your_order_ID>/transaction/<your_transaction_ID> |
Méthode HTTP | PUT |
{ "apiOperation":"PAY", "authentication":{ "transactionId":"<your_transaction_ID>" }, "order":{ "amount":"100", "currency":"AUD", "reference":"<your_order_ID>" }, "sourceOfFunds":{ "provided":{ "card":{ "number":"<card_number>", "expiry":{ "month":"1", "year":"39" } } }, "type":"CARD" }, "transaction":{ "reference":"<your_order_ID>" } }
{ "authentication":{ "3ds":{ "acsEci":"02", "authenticationToken":"kHyn+7YFi1EUAREAAAAvNUe6Hv8=", "transactionId":"39c25b96-7bc3-4586-bee8-056479fed3af" }, "3ds2":{ "dsTransactionId":"39c25b96-7bc3-4586-bee8-056479fed3af", "protocolVersion":"2.1.0", "transactionStatus":"Y" }, "transactionId":"249213216", "version":"3DS2" }, "authorizationResponse":{ "posData":"1605S0100130", "transactionIdentifier":"TidTest" }, "device":{ "browser":"MOZILLA", "ipAddress":"127.0.0.1" }, "gatewayEntryPoint":"WEB_SERVICES_API", "merchant":"TEST_3DS2-1", "order":{ "amount":100.00, "authenticationStatus":"AUTHENTICATION_SUCCESSFUL", "chargeback":{ "amount":0, "currency":"AUD" }, "creationTime":"2021-04-13T02:11:06.102Z", "currency":"AUD", "id":"807a01b6-e6c8-4aa7-b8da-799bfff89496", "lastUpdatedTime":"2021-04-13T02:11:57.049Z", "merchantAmount":100.00, "merchantCategoryCode":"1234", "merchantCurrency":"AUD", "reference":"807a01b6-e6c8-4aa7-b8da-799bfff89496", "status":"CAPTURED", "totalAuthorizedAmount":100.00, "totalCapturedAmount":100.00, "totalRefundedAmount":0.00 }, "response":{ "acquirerCode":"00", "gatewayCode":"APPROVED" }, "result":"SUCCESS", "sourceOfFunds":{ "provided":{ "card":{ "brand":"MASTERCARD", "expiry":{ "month":"1", "year":"39" }, "fundingMethod":"CREDIT", "issuer":"<issuer>", "number":"512345xxxxxx0008", "scheme":"Mastercard", "storedOnFile":"NOT_STORED" } }, "type":"CARD" }, "timeOfLastUpdate":"2021-04-13T02:11:57.049Z", "timeOfRecord":"2021-04-13T02:11:56.973Z", "transaction":{ "acquirer":{ "batch":1, "id":"<acquirer_id>", "merchantId":"99554411" }, "amount":100.00, "authenticationStatus":"AUTHENTICATION_SUCCESSFUL", "authorizationCode":"028941", "currency":"AUD", "id":"1", "receipt":"1908266016", "reference":"807a01b6-e6c8-4aa7-b8da-799bfff89496", "source":"INTERNET", "stan":"496", "terminal":"1234", "type":"PAYMENT" }, "version":"60" }
{ "authentication":{ "3ds":{ "acsEci":"02", "authenticationToken":"jHyn+7YFi1EUAREAAAAvNUe6Hv8=", "transactionId":"3nzQOuTJDVOsRLuDT9V671B8QkU=" }, "3ds1":{ "paResStatus":"Y", "veResEnrolled":"Y" }, "transactionId":"5791", "version":"3DS1" }, "authorizationResponse":{ "posData":"1605S0100130", "transactionIdentifier":"TidTest" }, "device":{ "browser":"MOZILLA", "ipAddress":"127.0.0.1" }, "gatewayEntryPoint":"WEB_SERVICES_API", "merchant":"TEST_3DS2-1", "order":{ "amount":100.00, "authenticationStatus":"AUTHENTICATION_SUCCESSFUL", "chargeback":{ "amount":0, "currency":"AUD" }, "creationTime":"2021-04-13T03:17:44.895Z", "currency":"AUD", "id":"f808076a-0bc6-4f1b-8100-cfe46e43676e", "lastUpdatedTime":"2021-04-13T03:19:45.964Z", "merchantAmount":100.00, "merchantCategoryCode":"1234", "merchantCurrency":"AUD", "reference":"9b57808a-474e-445d-b2ca-09d571f5ea75", "status":"CAPTURED", "totalAuthorizedAmount":100.00, "totalCapturedAmount":100.00, "totalRefundedAmount":0.00 }, "response":{ "acquirerCode":"00", "gatewayCode":"APPROVED" }, "result":"SUCCESS", "sourceOfFunds":{ "provided":{ "card":{ "brand":"MASTERCARD", "expiry":{ "month":"1", "year":"39" }, "fundingMethod":"CREDIT", "issuer":"<issuer>", "number":"512345xxxxxx8246", "scheme":"Mastercard", "storedOnFile":"NOT_STORED" } }, "type":"CARD" }, "timeOfLastUpdate":"2021-04-13T03:19:45.964Z", "timeOfRecord":"2021-04-13T03:19:45.703Z", "transaction":{ "acquirer":{ "batch":1, "id":"<acquirer_id>", "merchantId":"99554411" }, "amount":100.00, "authenticationStatus":"AUTHENTICATION_SUCCESSFUL", "authorizationCode":"003879", "currency":"AUD", "id":"1", "receipt":"1908286018", "reference":"9b57808a-474e-445d-b2ca-09d571f5ea75", "source":"INTERNET", "stan":"499", "terminal":"1234", "type":"PAYMENT" }, "version":"60" }
Questions fréquentes
Si vous avez utilisé un MPI 3DS externe pour authentifier le payeur, vous devez transmettre les informations relatives à l'authentification dans le groupe de paramètres d'authentification de l'opération Authorize (Autoriser) ou Pay (Payer).
Tous les champs sont facultatifs et le fait qu'ils vous soient fournis ou non par le MPI 3DS externe dépend de la version de l'authentification (3DS1 ou 3DS2) et du statut d'authentification de la transaction. Cependant, si vous disposez de ces données, il est recommandé de les indiquer.
authentication.3ds.acsEci
: indicateur de commerce électronique qui peut vous être renvoyé dans le message de réponse d'authentification.authentication.3ds.authenticationToken
: valeur codée en base64, générée par l'émetteur de la carte, qui peut vous être renvoyée dans le message de réponse d'authentification.authentication.3ds.transactionId
: identifiant de transaction unique généré par la passerelle pour l'authentification 3DS.
Pour l'authentification 3DS1, ce champ correspond à XID, qui est un identifiant généré par la passerelle pour le compte du commerçant. Un XID soumis dans ce champ doit être au format base64.
Pour l'authentification 3DS2, ce champ correspond à l'identifiant attribué par le serveur d'annuaire du système.authentication.3ds1.paResStatus
: authentication.3ds1.paResStatus indique le résultat de l'authentification du payeur avec l'émetteur.authentication.3ds1.veResEnrolled
: indique si l'authentification du payeur est disponible ou non pour le numéro de carte que vous avez fourni.authentication.amount
: ce champ est facultatif. Il indique le montant de l'authentification. Vous devez renseigner ce champ lorsque le montant de l'authentification est différent deorder.amount
. Veuillez consulter votre prestataire de services de paiement avant de renseigner ce champ.authentication.time
: ce champ est facultatif. Il indique la date et l'heure de l'authentification du payeur. Veuillez consulter votre prestataire de services de paiement avant de renseigner ce champ.
Pour les questions fréquentes d'ordre général et les autres options 3DS, voir la page Questions fréquentes sur l'authentification.
Test de votre intégration
Avant de la mettre en ligne, vous devez tester votre intégration pour vous assurer qu'elle fonctionne correctement.