3Ds Loop

1406

Payer Authentication (3D Secure) es un servicio de autenticación del titular de la tarjeta que disuade el uso no autorizado de la tarjeta y permite a los comerciantes recibir protección y un cambio de responsabilidad frente a actividades fraudulentas y contracargos. Esto permite a los comerciantes agregar soporte para los siguientes tipos de tarjetas sin ejecutar software adicional en sus propios servidores:

Visa - Verificado por Visa (VbV)
MasterCard / Maestro - MasterCard SecureCode
American Express - Amex Safekey

¿Cómo Utilizarlo?

En las APIs de Netpay encontraras que dentro de las integraciones es necesario que se agregue este paso de seguridad utilizando la siguiente estructura dentro del objeto JSON

📘

Inf.

Para poder simular una transacción que pasa por 3DS es necesario en el campo de email enviar el correo: [email protected] y dentro de redirect3dsUri enviar la ruta en donde haremos la redirección una vez se realice el paso de 3DS, en este ejemplo enviamos https://netpay.mx

Body

Charge

{
   "amount":650,
   "description":"Cargo de prueba",
   "source": "token_PovvKRyhNISspvuRXhKobReCcizMDoswDXhbCZrI",
   "paymentMethod":"card",
   "currency":"MXN",
   "billing":{
      "firstName":"Jon",
      "lastName":"Doe",
      "email":"[email protected]",
      "phone":"8190034544",
      "merchantReferenceCode":"test-11124",
      "address":{
         "city":"Monterrey",
         "country":"MX",
         "postalCode":"65700",
         "state":"Nuevo Leon",
         "street1":"Filósofos 100",
         "street2":"Tecnologico"
      }
   },
   "redirect3dsUri":"http://example.com/",
   "saveCard":false
}

Response

La respuesta de ejecutar este cargo con el correo de [email protected] es la siguiente:

{
    "source": "token_bwdeonGpqbgSzkmaEFIUUrldOKhxSUWVrzNwpjPy",
    "amount": 650.0,
    "description": "Cargo de prueba",
    "status": "review",
    "transactionTokenId": "1cdb122d-fc25-4ab3-959a-8bacd0a240de",
    "redirect3dsUri": "http://example.com/",
    "returnUrl": "https://gateway-154.netpaydev.com/gateway-ecommerce/v1/three-d-secure/paymenth-auth-enroll/1cdb122d-fc25-4ab3-959a-8bacd0a240de?webHook=http://example.com/",
    "paymentMethod": "card",
    "currency": "MXN",
    "createdAt": "2021-02-17T02:48:12.062+0000",
    "error": null,
    "installments": null,
    "ship": null,
    "client": null,
    "saveCard": false,
    "instegrationsdk": "netpay-php-sdk",
    "integrationSdkVersion": "1.0.0",
    "cvv": null,
    "seamless": false,
    "paymentSource": {
        "cardDefault": false,
        "card": {
            "token": "token_bwdeonGpqbgSzkmaEFIUUrldOKhxSUWVrzNwpjPy",
            "expYear": "21",
            "expMonth": "10",
            "lastFourDigits": "0002",
            "cardHolderName": "Adrian Meza",
            "brand": "visa",
            "deviceFingerPrint": "DnNZKtDmvxWGwWWFrqjIwLrigTnbVxxjRwGwvJoGcfcGzd",
            "ipAddress": "123.2.1.3",
            "bank": "Test bank",
            "type": "debit",
            "country": "unknown",
            "scheme": "unknown",
            "cardPrefix": "400000",
            "preAuth": false,
            "vault": false,
            "simpleUse": false
        },
        "source": "token_bwdeonGpqbgSzkmaEFIUUrldOKhxSUWVrzNwpjPy",
        "type": "card"
    },
    "billing": {
        "firstName": "Jon",
        "lastName": "Doe",
        "email": "[email protected]",
        "phone": "8190034544",
        "ipAddress": "123.2.1.3",
        "merchantReferenceCode": "test-11124",
        "address": {
            "city": "Monterrey",
            "country": "MX",
            "postalCode": "65700",
            "state": "Nuevo Leon",
            "street1": "Filósofos 100",
            "street2": "Tecnologico"
        }
    }
}

Redirección

Es necesario cargar la url que viene en la sección returnUrl la cual nos mandara a la pantalla de validación bancaria y así ejecutar este paso de seguridad, en este caso la url es: https://gateway-154.netpaydev.com/gateway-ecommerce/v1/three-d-secure/paymenth-auth-enroll/5b503957-d5b5-459a-94c0-3e1996d27dda?webHook=https://netpay.mx

Como pueden ver en la sección del webHook viene la dirección que nosotros indicamos en la petición a donde mandara la respuesta de este paso del 3DS, al entrar al esta URL debera verse asi:

382

La respuesta del 3Ds nos devolverá solo un dato, un transactionTokenId el cual será necesario que ejecutemos nuestro endpoint de consulta de estatus para poder ver el detalle de la respuesta del 3Ds.

(
    [transactionToken] => 95c9ec89-2010-4c32-a4b7-b29cc7651d33
)

Consulta de Estatus

Al poner de forma exitosa, errónea o no ingresar la clave en esta pantalla necesitaremos consultar el estatus de la transacción para poder saber cual es su status ejecutando nuestro endpoint de status
https://gateway-154.netpaydev.com/gateway-ecommerce/v3/transactions/{{transactionTokenId}} donde mandaremos el transactionTokenId como parámetro en la URL y dentro de las posibles respuestas se encuentran

Aceptado

Esto nos indica que la transacción puede ser cobrada ya que paso el 3DS de forma exitosa

🚧

Importante

Esto no indica que la el cargo ya se realizo para poder realizar el cargo es necesario ejecutar en endpoint https://gateway-154.netpaydev.com/gateway-ecommerce/v3/charges/{{transactionTokenId}}/confirm con el cual se realizara el cobro de la transacción con toda seguridad.

"status": "CHARGEABLE"

Rechazado

Esta respuesta ocurre cuando al momento de poner la contraseña se ingresa de forma incorrecta

📘

Inf.

Para poder simular este rechazo aparte de utilizar el correo [email protected] es necesario que la tarjeta tokenizada en la transacción sea: 4000000000000010 ya que esta esta preparada para simular este paso en las pruebas.

"status": "FAILED"

En espera

Se presenta cuando el cliente al momento de entrar a la pantalla de 3DS abandona la pantalla o nunca ingresa algún código de validación.

"status": "WAIT_THREEDS"

Al validar estos posibles casos y la ejecución de los mismos estén implementados en el sistema puedes tener la seguridad de contar con esta excelente herramienta anti fraude.