- Directives d'intégration
- Fonctionnalités prises en charge (Sécurité)
- Authentification 3-D Secure
- Implémentation d'une intégration 3DS à l'aide de l'API JavaScript 3DS
Implémentation d'une intégration 3DS à l'aide de l'API JavaScript 3DS
Ce guide décrit toutes les étapes requises pour ajouter l'authentification 3DS à votre intégration de passerelle à l'aide de l'API 3DS JavaScript (JS), notamment comment utiliser le résultat de l'authentification pour traiter un paiement.
- Étape 1 : Créer et mettre à jour une session
- Étape 2 : Initialiser l'API
- Étape 3 : Initier l'authentification
- Étape 4 : Authentifier le payeur
- Étape 5 : Utiliser les résultats de l'authentification dans une opération Payment (Paiement)
É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 FAQ. |
order.amount |
Obligatoire | montant total de la commande. |
order.currency |
Obligatoire | devise de la commande. |
transaction.id |
Obligatoire | identifiant unique pour cette authentification de paiement. |
order.id |
Obligatoire | Identifiant unique pour 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 de non-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 avec une extension 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://ap-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 : Initiate Authentication (Initier l'authentification)
Une fois toutes les données du payeur et du paiement ont été collectées 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 3DS configurées sur votre profil de commerçant,
- 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, et
- les règles de filtrage des transactions 3DS 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 3DS2) d'être exécutées afin de, par exemple, collecter 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 pour cette authentification de paiement.
- orderId : identifiant unique pour 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 retourné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 avec une extension 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 prestataire de services de paiement.
gatewayRecommendation |
Étape suivante |
---|---|
PROCEED | Vous pouvez procéder à l'authentification du payeur en utilisant la méthode d'appel authenticatePayer( ) . |
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | Demandez au payeur d'autres détails de paiement (par exemple, une nouvelle carte ou un autre mode de paiement) et soumettez à nouveau la demande avec les nouveaux détails. Ne soumettez pas à nouveau la même demande. |
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 "RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS": tryOtherPayment();//Card does not support 3DS and transaction filtering rules require 3DS on this transaction: Ask the payer to select a different 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" }, "result":"SUCCESS", "sourceOfFunds":{ "provided":{ "card":{ "number":"512345xxxxxx0008" } }, "type":"CARD" }, "transaction":{ "authenticationStatus":"AUTHENTICATION_AVAILABLE" }, "version":"72" }
Étape 4 : Authenticate Payer (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 la méthodeinitiateAuthentication()
précédente.transactionId
: même transactionId que 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 prestataire de services de paiement.
gatewayRecommendation |
Étape suivante |
---|---|
PROCEED | Vous pouvez poursuivre et terminer le processus d'authentification (flux d'authentification) ou terminer le paiement (flux sans friction). Si l'autorisation de paiement a réussi, procédez à la collecte des fonds et, le cas échéant, expédiez les marchandises. |
DO_NOT_PROCEED_ABANDON_ORDER | Ne soumettez pas la même demande à nouveau. Le prestataire de services de paiement, le système ou l'émetteur vous demande d'abandonner la commande. |
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | Demandez au payeur d'autres détails de paiement (par exemple, une nouvelle carte ou un autre mode de paiement) et soumettez à nouveau la demande avec les nouveaux détails. Ne soumettez pas à nouveau la même demande. |
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 prestataire de services de paiement).
Flux d'identification
Le navigateur du payeur est redirigé vers l'ACS où l'IU d'identification 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 prestataire de services de paiement.
gatewayRecommendation |
Étape suivante |
---|---|
PROCEED | Vous pouvez procéder au paiement car l'authentification a été accordée. Si l'autorisation de paiement a réussi, procédez à la collecte des fonds et, le cas échéant, expédiez les marchandises. |
DO_NOT_PROCEED_ABANDON_ORDER | Ne soumettez pas la même demande à nouveau. Le prestataire de services de paiement, le système ou l'émetteur vous demande d'abandonner la commande. |
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | Demandez au payeur d'autres détails de paiement (par exemple, une nouvelle carte ou un autre mode de paiement) et soumettez à nouveau la demande avec les nouveaux détails. Ne soumettez pas à nouveau la même demande. |
Les champs retournés dans restApiResponse
dépendent du flux en vigueur (sans friction vs identification) 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" }
Étape 5 : Utiliser les résultats de l'authentification dans une opération Payment (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://ap-gateway.mastercard.com/api/rest/version/<version>/merchant/<your_merchant_ID>/order/<your_order_ID>/transaction/<unique_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" }
FAQ
Pour les FAQ d'ordre général concernant l'authentification 3-D Secure, voir FAQ sur l'authentification.
Test de votre intégration
Pour tester votre intégration, vous pouvez utiliser votre profil de commerçant TEST dans l'environnement de production ; voir Tester votre intégration.