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

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

La defensa de transacciones te ayuda a proteger las transacciones de pagos, ya que identifica 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 que pueden generar una disputa o una devolución de cargo si se aceptan.

Como parte de estos modelos, la Defensa contra transacciones examina los indicadores de transacciones para detectar ataques de carding y contracargos. Por ejemplo, una serie de intentos de compra con precios bajos podría indicar un ataque de carding. En la respuesta, recibirás 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 la Defensa de transacciones, debes completar los siguientes pasos:

  1. Prepara el entorno.

  2. Habilita la Defensa contra transacciones en tu proyecto de Google Cloud .

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

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

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

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

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

  5. Determina la próxima acción para tus usuarios en función de las puntuaciones.

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

Antes de comenzar

  1. Si no conoces reCAPTCHA, haz lo siguiente:

    1. Configura reCAPTCHA en tu Google Cloud proyecto.

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

  2. Si planeas realizar una integración de frontend, verifica que tu entorno admita tokens de más de 8 kB, ya que la Defensa contra transacciones 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.

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

Usar la Defensa de transacciones con una integración de frontend de reCAPTCHA ayuda a protegerse contra ataques de carding y transacciones fraudulentas. Para comenzar 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 un usuario revisa su carrito, selecciona su forma de pago y completa la compra. Después de que el usuario realice 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 puntuación y llamar a execute(), consulta Instala claves basadas en puntuación.

En el siguiente ejemplo, se muestra cómo integrar una clave basada en la 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" async defer></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" async defer></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 pagos, crea evaluaciones con Datos de transacción usando los campos adicionales del método projects.assessments.create.

Como mínimo, la integración requiere los campos payment_method, card_bin y card_last_four. Para mejorar la calidad de la detección, te recomendamos que agregues campos opcionales, como email, phone_number y billing_address.

Para recibir una evaluación de Transaction defense con integración de frontend, se requiere uno de los siguientes elementos:

{
  "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": "USA",
                "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. La defensa de transacciones 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 con la API: Crea evaluaciones con datos de transacciones

Para recibir veredictos de fraude en pagos, crea evaluaciones con Datos de transacción usando los campos adicionales del método projects.assessments.create.

Dado que la integración solo con la API de reCAPTCHA produce una evaluación de defensa de transacciones usando 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": "USA",
                "postal_code": "123456"
            }
        }
    }
}

Para mejorar la calidad de las puntuaciones, te recomendamos que proporciones la mayor cantidad posible de datos de entrada 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 riskAnalysis.

El siguiente ejemplo es una respuesta de muestra:

{
  "event": {....
  ....
  }
  .....
  ....
  ....
"fraudPreventionAssessment": {
    "transactionRisk": 0.9,
    "riskReasons": 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.

Eres responsable de las acciones que tomes en función de la evaluación. Para la integración más simple, puedes establecer umbrales en transactionRisk para que contribuyan 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 de tu sistema existente. Dado 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 desarrollado.

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 fricción adicional. Los límites que debes seleccionar dependen de las necesidades de tu empresa. A continuación, se incluyen 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% Solicitar verificación adicional, como 2FA, antes de aceptar la transacción
Media 0.7 1% Envía la transacción a revisión manual
Alta 0.9 0.1% Rechazar transacción

¿Qué sigue?