Protege las transacciones de pago con la función Transaction defense

En esta página, se describe cómo proteger de forma eficaz las transacciones de pago contra ataques, como el uso ilegítimo de tarjetas, el fraude con instrumentos robados y el fraude en los pagos por apropiación de cuentas, con Transaction defense.

Transaction defense te ayuda a proteger las transacciones de pagos identificando los ataques manuales dirigidos y los intentos de fraude a gran escala. Entrena automáticamente modelos de comportamiento y transacciones para identificar eventos que probablemente sean fraudulentos y puedan generar una disputa o una devolución del cargo si se aceptan.

Como parte de estos modelos, Transaction defense examina los indicadores de transacciones para detectar ataques de carding y devoluciones de cargos. Por ejemplo, una serie de intentos de compra con precios bajos podría indicar un ataque de carding. En la respuesta, recibes puntuaciones de riesgo para diferentes tipos de fraude, que puedes usar para enviar la transacción a una revisión manual o bloquear directamente las transacciones lo suficientemente sospechosas.

Para configurar Transaction defense, debes completar los siguientes pasos:

  1. Prepara el entorno.

  2. Habilita Transaction defense en tu proyecto de Google Cloud .

  3. Elige un método de integración.

  4. Envía una solicitud a la API de create assessment desde tu backend con los datos de la transacción, usando la integración de frontend o la integración solo de API que elegiste antes.

    En la respuesta de la solicitud a la API de create assessment, reCAPTCHA proporciona una puntuación para el riesgo de la transacción y motivos de explicabilidad adicionales (por ejemplo, HIGH_TRANSACTION_VELOCITY), si corresponde.

  5. Determina la próxima acción para tus usuarios según las puntuaciones.

    Puedes permitir la transacción, solicitar una verificación adicional, reenviarla para una revisión manual o bloquearla.

Antes de comenzar

  1. Si es la primera vez que usas reCAPTCHA, haz lo siguiente:

    1. Configura reCAPTCHA en tu proyecto de Google Cloud .

    2. Crea una clave de reCAPTCHA basada en la puntuación.

  2. Si planeas una integración de frontend, verifica que tu entorno admita tokens de más de 8 kB, ya que Transaction defense podría usar tokens más grandes.

Habilita Transaction defense

  1. En la consola de Google Cloud , ve a la página de reCAPTCHA.

    Ir a reCAPTCHA

  2. Verifica que el nombre de tu proyecto aparezca en el selector de recursos.

    Si no ves el nombre de tu proyecto, haz clic en el selector de recursos y, luego, selecciona tu proyecto.

  3. Haz clic en Configuración.

  4. En el panel Transaction defense, haz clic en Configurar.

  5. Haz clic en el botón de activación Habilitar y, luego, en Guardar.

Elige un método de integración

Elige la Integración de frontend para incorporar automáticamente los indicadores del dispositivo de frontend o la Integración solo de API si prefieres no realizar la integración en el frontend.

Cuando se ejecuta el JavaScript, reCAPTCHA genera un token de reCAPTCHA único para cada sesión de usuario y recopila datos de comportamiento del usuario para evaluarlo.

La integración solo de API devuelve un veredicto usando solo los datos de transacción requeridos y no requiere este token.

Integración de frontend: Instala reCAPTCHA en tu sitio web

Usar Transaction defense con una integración de frontend de reCAPTCHA ayuda a protegerse contra los ataques de carding y las transacciones fraudulentas. Para empezar a detectar ataques, instala una clave de reCAPTCHA basada en puntuaciones en cada página de tu flujo de usuarios de pagos. Esto incluye la interfaz en la que el usuario revisa su carrito, selecciona su forma de pago y completa la compra. Después de que el usuario haya realizado su selección en cada paso, llama a grecaptcha.enterprise.execute() para generar un token. Para obtener información sobre cómo instalar claves basadas en puntuaciones y llamar a execute(), consulta Instala claves basadas en puntuaciones.

En el siguiente ejemplo, se muestra cómo integrar una clave basada en puntuación en un evento de transacción con tarjeta de crédito:

function submitForm() {
  grecaptcha.enterprise.ready(function() {
    grecaptcha.enterprise.execute(
      'reCAPTCHA_site_key', {action: 'purchase'}).then(function(token) {
       document.getElementById("token").value = token;
       document.getElementByID("paymentForm").submit();
    });
  });
}
<form id="paymentForm" action="?" method="POST">
  Total: $1.99
  Credit Card Number: <input name="cc-number" id="cc-number" autocomplete="cc-number"><br/>
  <input type="hidden" id="token" name="recaptcha_token"/>
  <button onclick="submitForm()">Purchase</button>
</form>
<script src="https://www.google.com/recaptcha/enterprise.js"></script>

Puedes experimentar con este código en JSFiddle si haces clic en el icono <> en la esquina superior derecha de la ventana de código.

<html>
  <head>
    <title>Protected Payment</title>
    <script src="https://www.google.com/recaptcha/enterprise.js"></script>
    <script>
    function submitForm() {
      grecaptcha.enterprise.ready(function() {
        grecaptcha.enterprise.execute(
          'reCAPTCHA_site_key', {action: 'purchase'}).then(function(token) {
           document.getElementById("token").value = token;
           document.getElementByID("paymentForm").submit();
        });
      });
    }
    </script>
  </head>
  <body>
    <form id="paymentForm" action="?" method="POST">
      Total: $1.99
      Credit Card Number: <input name="cc-number" id="cc-number" autocomplete="cc-number"><br/>
      <input type="hidden" id="token" name="recaptcha_token"/>
      <button onclick="submitForm()">Purchase</button>
    </form>
  </body>
</html>

Integración de frontend: Crea evaluaciones con datos de transacciones

Para recibir veredictos de fraude en los pagos, crea evaluaciones con datos de transacciones usando los campos adicionales en el método projects.assessments.create.

Para recibir una evaluación de Transaction defense con integración de frontend, proporciona al menos uno de los siguientes campos de identificador obligatorios:

Para mejorar la calidad de la detección, recomendamos agregar campos opcionales, como payment_method, email, phone_number y billing_address.

{
  "event": {
    "token": "YOUR_TOKEN",
    "site_key": "KEY_ID",
    "expected_action": "YOUR_CHECKOUT_ACTION_NAME",
    "transaction_data": {
            "transaction_id": "txid-1234567890",
            "payment_method": "credit-card",
            "card_bin": "411111",
            "card_last_four": "1234",
            "currency_code": "USD",
            "value": 39.98,
            "user": {
                "email": "someEmailAddress@example.com"
            },
            "billing_address": {
                "recipient": "name1 name2",
                "address": [
                    "123 Street Name",
                    "Apt 1"
                ],
                "locality": "Sunnyvale",
                "administrative_area": "CA",
                "region_code": "US",
                "postal_code": "123456"
            }
        }
    }
}

Para mejorar la calidad de las puntuaciones, te recomendamos que también envíes indicadores adicionales.

Para obtener información sobre cómo crear evaluaciones, consulta Crea una evaluación para tu sitio web. Transaction defense puede usar tokens más grandes, por lo que debes verificar que la solicitud se envíe en una solicitud POST en lugar de GET, y en el cuerpo, no en un encabezado.

Integración solo de API: Crea evaluaciones con datos de transacciones

Para recibir veredictos de fraude en los pagos, crea evaluaciones con datos de transacciones usando los campos adicionales en el método projects.assessments.create.

Debido a que la integración de solo API de reCAPTCHA produce una evaluación de Transaction defense con solo los datos de transacciones que proporcionas, debes proporcionar, como mínimo, lo siguiente:

  1. Dirección de facturación regionCode y postalCode.
  2. Datos de Transacciones paymentMethod.
  3. Uno de los siguientes:
{
  "event": {
    "site_key": "KEY_ID",
    "expected_action": "YOUR_CHECKOUT_ACTION_NAME",
    "transaction_data": {
            "transaction_id": "txid-1234567890",
            "payment_method": "credit-card",
            "card_bin": "411111",
            "card_last_four": "1234",
            "currency_code": "USD",
            "value": 39.98,
            "user": {
                "account_id": "abcde12345",
                "email": "someEmailAddress@example.com",
                "phone_number": "+18005550175"
            },
            "billing_address": {
                "recipient": "name1 name2",
                "address": [
                    "123 Street Name",
                    "Apt 1"
                ],
                "locality": "Sunnyvale",
                "administrative_area": "CA",
                "region_code": "US",
                "postal_code": "123456"
            }
        }
    }
}

Para mejorar la calidad de las puntuaciones, te recomendamos que proporciones la mayor cantidad de entradas posible y que también envíes indicadores adicionales.

Interpreta las evaluaciones

Después de que comiences a enviar los datos de la transacción, recibirás evaluaciones como una respuesta JSON con el componente fraudPreventionAssessment en la respuesta Assessment.

El siguiente ejemplo es una respuesta de muestra:

{
  "event": {....
  ....
  }
  .....
  ....
  ....
  "fraudPreventionAssessment": {
    "transactionRisk": 0.9,
    "riskReasons": [
      {
        "reason": "HIGH_TRANSACTION_VELOCITY"
      }
    ]
  }
}

La respuesta que recibes incluye una puntuación y códigos de motivo cuando corresponda. Cuanto más alta sea la puntuación, es más probable que la transacción sea fraudulenta y riesgosa. Cuanto más baja sea la puntuación, es más probable que la transacción sea legítima. Por ejemplo, una puntuación de 0.9 indica que es más probable que la transacción sea fraudulenta y riesgosa, y una puntuación de 0.1 indica que es más probable que la transacción sea legítima.

Tú eres responsable de las acciones que realices en función de la evaluación. Para lograr la integración más sencilla, puedes establecer umbrales en transactionRisk para contribuir a tu decisión. Por ejemplo, puede contribuir a enviar a una revisión manual o rechazar directamente las transacciones que probablemente sean fraudulentas. También puedes usar la puntuación en tus propios flujos de trabajo de fraude o como parte de las reglas con tu sistema existente. Debido a que reCAPTCHA examina indicadores únicos y tiene una visibilidad única del comportamiento en Internet, puedes esperar un valor incremental incluso con un motor de detección de fraudes ya maduro.

Cada bucket de puntuación se calibra según una tasa máxima de falsos positivos, que representa la proporción máxima de usuarios legítimos que podrían experimentar dificultades adicionales. Los umbrales que debes seleccionar dependen de las necesidades de tu empresa. A continuación, se muestran algunos ejemplos de cómo puedes usar la puntuación de transactionRisk:

Tolerancia al riesgo Umbral recomendado Tasa máxima de falsos positivos Ejemplo de uso
Baja 0.5 5% Exigir una verificación adicional, como la 2FA, antes de aceptar la transacción
Media 0.7 1% Envía la transacción para su revisión manual
Alta 0.9 0.1% Rechazar transacción

¿Qué sigue?