3DS con la API de autenticación de pagador
En este tema se describen todos los pasos necesarios para agregar 3DS a su integración de Mastercard Gateway utilizando la API de autenticación del pagador, incluido cómo usar el resultado de la autenticación para procesar un pago.
Para ver ejemplos de las solicitudes y respuestas de API utilizadas en el flujo de 3DS con la API de autenticación del pagador, descargue la colección de Postman.
Una vez que haya completado su integración, consulte Pruebas de su integración 3DS para probarla.
- Paso 1: Iniciar autenticación
- Paso 2: Autenticar al pagador
- Paso 3: Usar el resultado de la autenticación en una operación de pago
Prerrequisitos
Como prerrequisito para esta implementación, debe haber implementado su integración básica de Direct Payment.
Paso 1: Iniciar autenticación
La operación Initiate Authentication
se utiliza para determinar las versiones de 3DS disponibles para usted para una tarjeta determinada, según lo siguiente:
- las versiones de 3DS configuradas en su perfil del negocio;
- Tipo de tarjeta.
- las preferencias que haya indicado en la solicitud;
- Resultado de las solicitudes que el motor de pagos ha enviado a los proveedores de autenticación pertinentes para verificar la disponibilidad o el soporte para la tarjeta dada, y
- las reglas de filtrado de transacciones 3DS del motor de pagos configuradas por usted o por your payment service provider (PSP).
La función 3DS del motor de pagos solo admite 3DS2.
La operación también permite realizar cualquier actividad en segundo plano, como una llamada al método ACS, con fines como los de recopilación de datos adicionales del pagador para respaldar una operación posterior de Authenticate Payer
.
Solicitud Initiate Authentication
Para iniciar la autenticación, complete los siguientes campos en la solicitud Initiate Authentication:
Tabla: Campos de la solicitud de Initiate Authentication
Campo | Obligatorio/Opcional | Descripción |
---|---|---|
session.id o sourceOfFunds.provided.card.* o sourceOfFunds.token |
Obligatorio | Detalles de la tarjeta que se va a utilizar para el pago. También puede utilizar tokens de red y tokens de pago de dispositivos como fuente de fondos en la autenticación del pagador. Para obtener más información, consulte las Preguntas frecuentes. |
order.currency |
Obligatorio | Moneda del pedido. |
transaction.id |
Obligatorio | Identificador único para esta autenticación de pago. |
order.id |
Obligatorio | Identificador único para este pedido. |
authentication.channel |
Obligatorio | Canal en el que se inicia la solicitud de autenticación. Puede especificar una de las siguientes opciones:
|
authentication.purpose |
Opcional | Finalidad de la autenticación. De forma predeterminada, este campo está configurado en "PAYMENT_TRANSACTION" para indicar que se debe realizar la autenticación al procesar un pago con tarjeta. No obstante, puede especificar una finalidad diferente para indicar la autenticación sin pago. Si está estableciendo un acuerdo de pago y no procesa un pago junto con él, ingrese ADD_CARD como propósito de autenticación. Para obtener más información, consulte ¿Cómo puedo enviar una solicitud de autenticación sin pago? Para obtener una lista detallada de casos de uso relacionados con la autenticación 3D Secure, consulte Pagos iniciados por el titular de la tarjeta con 3D Secure. |
authentication.acceptVersions |
Opcional | Versiones de 3DS que acepta para este pago. Si no especifica una versión, se acepta 3DS2. El motor de pagos utiliza 3DS2, si el emisor y la tarjeta lo admiten. Si 3DS2 no está disponible, la autenticación no continúa. |
order.merchantCategoryCode |
Opcional | Código de categoría de negocio. Proporcione el código de categoría del negocio si desea anular el valor predeterminado configurado en su vínculo de adquirente. |
Si envía la solicitud Authenticate Payer antes de que se complete la llamada al método ACS, esta solicitud continúa, pero la respuesta de Authenticate Payer contiene authentication.3ds2.methodCompleted = false. Si el ACS del emisor ha completado con éxito la llamada al método para obtener información adicional sobre el explorador del pagador, en el campo authentication.3ds2.methodCompleted, la respuesta de AUTHENTICATE PAYER es "true".
Respuesta de Initiate Authentication
El motor de pagos devuelve los siguientes campos clave en la respuesta de Initiate Authentication:
authentication.version
: si la autenticación 3DS está disponible para el pagador, se devuelve 3DS2. De lo contrario, se devuelveNONE
.authentication.3ds2.methodSupported
: si 3DS2 está disponible y si el ACS del emisor admite una llamada a método, este campo muestra SUPPORTED. El ACS utiliza la llamada al método para recopilar datos adicionales antes de la solicitud de autenticación para aumentar la probabilidad de disponer de una autenticación fluida. La llamada al método se activa en un iframe oculto, por lo que es invisible para el pagador. Tampoco proporciona ninguna devolución de llamada al finalizar.transaction.authenticationStatus
: consulte este campo si desea obtener más detalles sobre el estado de autenticación.response.gatewayRecommendation
: este campo le permite determinar el siguiente paso. Tenga en cuenta que esta recomendación se basa solamente en las reglas de filtrado de transacciones 3DS que usted o your payment service provider configuraron.- DO_NOT_PROCEED: No continúe con la autenticación 3DS para esta tarjeta, pero es posible que desee realizar el pago sin los datos 3DS, o puede ofrecer al pagador la opción de probar con otro método de pago.
- PROCEED: Puede proceder a autenticar al pagador utilizando la operación Authenticate Payer.
- RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS: Solicite al pagador detalles de pago alternativos. Por ejemplo, una nueva tarjeta u otro método de pago, y vuelva a enviar la solicitud con los nuevos detalles. No vuelva a enviar la misma solicitud. Esto es aplicable a partir de la versión 70 de API y posteriores.
authentication.redirect.html
: Inserte el contenido de este campo en la página que se muestra al pagador, si authentication.3ds2.methodSupported = SUPPORTED. Para hacerlo, agregue el contenido de texto a un elemento DIV oculto y especifique el identificador de script en HTML DOM. De esta manera se creará y publicará el formulario automáticamente. Por ejemplo:
div.innerHtml= response.authentication.redirect.html; eval(document.getElementById('initiate-authentication-script').text)
URL | https://test-gateway.mastercard.com/api/rest/version/<version>/merchant/<your_merchant_ID>/order/<your_order_ID>/transaction/<your_transaction_ID> |
Método 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" }
Paso 2: Autenticar al pagador
Si la respuesta de Initiate Authentication ha indicado que la autenticación está disponible (transaction.authenticationStatus=AUTHENTICATION_AVAILABLE), y cuando se hayan recopilado todos los datos del pagador y de pago, envíe la solicitud Authenticate Payer cuando el pagador haga clic en el botón Pagar ahora en la página de pago.
Solicitud Authenticate Payer
Envíe esta operación proporcionando los siguientes campos.
Campos de la solicitud Authenticate Payer request
Campo | Obligatorio/Opcional | Descripción |
---|---|---|
session.id o sourceOfFunds.provided.card.* o sourceOfFunds.token |
Obligatorio | Detalles de la tarjeta que se va a utilizar para el pago. Utilice los mismos detalles que en la operación INITIATE AUTHENTICATION anterior. |
order.amount |
Obligatorio | El monto total del pedido. |
transaction.id |
Obligatorio | ID de transacción. Utilice el mismo transaction.id que en la operación Initiate Authentication anterior. |
order.id |
Obligatorio | ID de pedido. El mismo order.id que la operación Initiate Authentication que lo precedió. |
device.ipAddress |
Opcional | Obligatorio si authentication.channel=PAYER_BROWSER, pero con la disposición de excluir, cuando sea necesario, para cumplir con la legislación local. Obligatorio si admite las autenticaciones de EMVCo de conmutador local de ITMX. Las autenticaciones EMV 3DS admiten direcciones IPv4 e IPv6 desde la versión 79 de API. IPv6 solo se utiliza en la autenticación EMV 3DS y no se utiliza en ninguna operación posterior de Authorize, Pay u otra operación. |
sourceOfFunds.provided.card.nameOnCard |
Opcional | Nombre en la tarjeta. Obligatorio si admite las autenticaciones de EMVCo de conmutador local de ITMX. |
sourceOfFunds.provided.card.number |
Opcional | Número de tarjeta. Obligatorio si admite las autenticaciones de EMVCo de conmutador local de ITMX. |
sourceOfFunds.provided.card.expiry |
Opcional | Detalles de expiración de la tarjeta. Obligatorio si admite las autenticaciones de EMVCo de conmutador local de ITMX. |
authentication.redirectResponseUrl |
Obligatorio | URL a la que desea redirigir al pagador después de completar el proceso de autenticación del pagador. No es necesario que proporcione esta URL si está seguro de que no hay interacción con el pagador. |
device.browser |
Opcional | Encabezado de Usuario-Agente del explorador del pagador. Obligatorio si authentication.channel = PAYER_BROWSER . |
device.browserDetails objeto |
Opcional | Detalles del explorador. Obligatorio si authentication.channel = PAYER_BROWSER . |
billing.address object objeto |
Opcional | Dirección de facturación del pagador. Se recomienda encarecidamente que incluya esto en su solicitud siempre que esté disponible. |
shipping.address objeto |
Opcional | Dirección de envío del pagador. Se recomienda encarecidamente que incluya esto en su solicitud siempre que esté disponible. |
customer objeto |
Opcional | Datos del pagador. Se recomienda encarecidamente que incluya esto en su solicitud siempre que esté disponible. |
Respuesta de Authenticate Payer
Los campos devueltos en la respuesta de AUTHENTICATE PAYER
dependen de lo siguiente:
- El flujo fluido o con desafíos.
- Cómo se inicia la solicitud de autenticación (authentication.channel).
- El mecanismo de autenticación para la solicitud, sesión o certificado, o contraseña.
Para una operación autenticada por sesión, la respuesta se filtra para eliminar los datos que no están relacionados con el pagador y solo se devuelven los campos de la lista blanca. Para obtener más información, consulte Conceptos básicos de las sesiones. Para los campos devueltos para una solicitud autenticada con certificado/contraseña, consulte Campos de respuesta para una solicitud autenticada con certificado/contraseña.
El motor de pagos devuelve los siguientes campos clave en la respuesta de AUTHENTICATE PAYER
:
transaction.authenticationStatus
: detalles sobre el estado de autenticación.response.gatewayRecommendation
: recomendación sobre si debe realizar una transacción financiera o no, según las reglas de filtrado de transacciones de 3DS configuradas por usted o su PSP:- DO_NOT_PROCEED: no continúe con esta tarjeta porque la autenticación se rechazó o no está disponible. Sin embargo, puede proceder al pago sin los datos de 3DS, o bien puede ofrecer al pagador la opción de probar otro método de pago.
- PROCEED: puede proceder a completar el proceso de autenticación, lo que también se conoce como flujo de desafío, o proceder a completar el pago, también conocido como flujo fluido.
- DO_NOT_PROCEED_ABANDON_ORDER: no vuelva a enviar la misma solicitud. El proveedor de servicios de pago, el esquema o el emisor le solicitan que abandone el pedido. Esta recomendación es aplicable a partir de la versión 70 de API y posteriores.
- RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS: Solicite al pagador detalles de pago alternativos. Por ejemplo, una nueva tarjeta u otro método de pago, y vuelva a enviar la solicitud con los nuevos detalles. No vuelva a enviar la misma solicitud. Esta recomendación es aplicable a partir de la versión 70 de API y posteriores.
authentication.redirect.html
: inserte el contenido de este campo en la página que se muestra al pagador. Para hacerlo, agregue el contenido de texto a un elemento DIV y especifique el identificador de script en HTML DOM. De esta manera se creará y publicará el formulario automáticamente. Por ejemplo:
div.innerHtml= response.authentication.redirect.html; eval(document.getElementById(‘authenticate-payer-script’).text)
El motor de pagos recomienda que continúe:
- Si el ACS ha seleccionado un flujo fluido para el pagador, redirige el explorador del pagador de vuelta a su sitio web y usted puede continuar con el paso 3 para enviar un pago posterior al motor de pagos. El motor de pagos obtiene los datos de autenticación relacionados con el pago y garantiza que los pagos se procesen solo si se han aprobado todas las reglas de filtrado de transacciones de 3DS, configuradas por usted o su PSP.
- Si el ACS ha seleccionado un flujo de desafío para el pagador, redirija al pagador hacia el ACS usando el campo
authentication.redirect.html
proporcionado en la respuesta. Una vez completado el desafío, el ACS redirige al pagador a su sitio web y activa una devolución de llamada que contiene los campos orderId, transactionId, response.gatewayRecommendation y result. Determine el resultado de la autenticación según el valor devuelto en el camporesponse.gatewayRecommendation
. Las mismas reglas descritas anteriormente se aplican para la respuestaAUTHENTICATE PAYER
. Si la recomendación es PROCEED, continúe con el paso 3.
No debe confiar en los datos devueltos por el explorador para determinar el siguiente paso de procesamiento. Asegúrese de manejar la respuesta de autenticación del pagador en su servidor o de realizar una operación de recuperación de transacción desde su servidor para garantizar que la respuesta sea exitosa.
Campos de respuesta para una solicitud autenticada con certificado/contraseña
En la siguiente tabla se enumeran los campos de respuesta de AUTHENTICATE PAYER
que se devuelven para una solicitud autenticada de certificado/contraseña, es decir, que se envía con un ID de negocio y una contraseña de API desde su servidor en lugar de un ID de sesión de su sitio web o el explorador del pagador. Para obtener más información, consulte las Preguntas frecuentes.
authentication.3ds.authenticationToken
no se proporciona si se utiliza un flujo fluido.Tabla: Campos de respuesta para una solicitud autenticada con certificado/contraseña
Response Field |
Autenticado por el negocio |
---|---|
authentication.method | Sí |
authentication.3ds.authenticationToken | * |
authentication.3ds.acsEci | Sí |
authentication.3ds.transactionId | Sí |
authentication.3ds2.transactionStatus | * |
authentication.3ds2.acsTransactionId | * |
authentication.3ds2.dsTransactionId | * |
authentication.3ds2.3dsServerTransactionId | * |
authentication.3ds2.protocolVersion | * |
authentication.amount | Sí |
authentication.redirect.html | Sí |
authentication.time | Sí |
response.gatewayRecommendation | Sí |
transaction.type | Sí |
version | Sí |
timeOfRecord | Sí |
result | Sí |
response.debugInformation | * |
Campos de respuesta de Authenticate Payer
Los campos devueltos en la respuesta del pagador de autenticación dependen de:
- El flujo en efecto, es decir, fluido contra desafío.
- Cómo se inició la solicitud de autenticación (authentication.channel)
- El mecanismo de autenticación para la solicitud, como sesión, certificado o contraseña.
Los siguientes campos se devuelven para una solicitud autenticada de certificado/contraseña. Para una operación autenticada por sesión, la respuesta se filtra para eliminar datos que no están relacionados con el pagador y solo se devuelven los campos de la lista blanca. Para obtener más información, consulte Autenticación de sesión.
Response Field |
Autenticado por el negocio |
---|---|
authentication.method | Sí |
authentication.3ds.authenticationToken | * |
authentication.3ds.acsEci | Sí |
authentication.3ds.transactionId | Sí |
authentication.3ds2.transactionStatus | * |
authentication.3ds2.acsTransactionId | * |
authentication.3ds2.dsTransactionId | * |
authentication.3ds2.3dsServerTransactionId | * |
authentication.3ds2.3dsServerTransactionId | * |
authentication.3ds2.protocolVersion | * |
authentication.amount | Sí |
authentication.redirect.html | Sí |
authentication.time | Sí |
response.gatewayRecommendation | Sí |
transaction.type | Sí |
version | Sí |
timeOfRecord | Sí |
result | Sí |
response.debugInformation | * |
Ejemplo de solicitud de autenticación de pagador
URL | https://test-gateway.mastercard.com/api/rest/version/<version>/merchant/<merchant_ID>/order/<order_ID>/transaction/<transaction_ID> |
Método 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" }
Ejemplo de respuesta de autenticación del pagador: flujo de desafío
{ "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" }
Paso 3: Usar el resultado de la autenticación en un pago
Cuando el resultado de la operación AUTHENTICATE PAYER
indica que puede proceder con el pago response.gatewayRecommendation=PROCEED
, puede iniciar una operación Authorize o PAY. Además de los campos estándar, debe proporcionar los siguientes campos:
order.id
: utilice el mismoorder.id
que proporcionó en las operacionesINITIATE AUTHENTICATION
yAUTHENTICATE PAYER
.authentication.transactionId
: utilice el mismotransaction.id
que proporcionó en las operacionesINITIATE AUTHENTICATION
yAUTHENTICATE PAYER
. No es necesario incluir ninguno de los campos en el objetoauthentication
, ya que el motor de pagos utiliza elauthentication.transactionId
para buscar los resultados de autenticación que almacenó cuando le pidió que realizara la autenticación. El motor de pagos pasa la información requerida al adquirente.
Ejemplo de solicitud PAY
URL | https://test-gateway.mastercard.com/api/rest/version/<version>/merchant/<merchant_ID>/order/<order_ID>/transaction/<transaction_ID> |
Método 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>" } }
Ejemplo de respuesta de PAY
{ "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" }
Preguntas frecuentes
¿Puedo utilizar la API de autenticación del pagador como API del lado del cliente?
Puede utilizar la API de autenticación del pagador como API del lado del servidor o API del lado del cliente en su sitio web o en el explorador del pagador.
- API de cliente: primero, debe establecer el canal de autenticación donde su servidor de negocio debe comunicarse con el servidor del motor de pagos para crear la sesión en el motor de pagos. Una vez creada la sesión, puede usarla para autenticar todas las operaciones de API posteriores necesarias para administrar los flujos de integración 3DS directamente desde el explorador, usando la API JavaScript de 3DS o su propia biblioteca.
- API de servidor: debe realizar todas las operaciones necesarias para administrar los flujos de integración de 3DS directamente desde su servidor de negocio al servidor del motor de pagos. Puede admitir todos los modos de transacción de autenticación a través de la API de autenticación del pagador.
- En el modo Solo autenticación, use las operaciones
INITIATE AUTHENTICATION
yAUTHENTICATE PAYER
. Solo autenticación: realice las operaciones Initiate Authentication y Authenticate Payer. - En el modo de autenticación y transacción de pago, utilice las operaciones
INITIATE AUTHENTICATION
,AUTHENTICATE PAYER
y AUTHORIZE/PAY. - En el modo Transacción de pago previamente autenticada, utilice las operaciones AUTHORIZE/PAY con los detalles de autenticación de un proveedor externo.
- En el modo Solo autenticación, use las operaciones
Para obtener más información sobre las preguntas frecuentes generales de 3-D Secure, consulte Preguntas frecuentes.