Proteger las transacciones de pago con la prevención de fraudes

En esta página se describe cómo proteger eficazmente las transacciones de pago frente a ataques como el carding, el fraude con instrumentos robados y el fraude de pago por robo de cuentas mediante la prevención de fraudes de reCAPTCHA.

reCAPTCHA Fraud Prevention te ayuda a proteger las transacciones de pago identificando ataques manuales dirigidos e intentos de fraude a gran escala. Entrena automáticamente modelos de comportamiento y transacciones para identificar eventos que probablemente sean fraudulentos y que puedan dar lugar a una disputa o una devolución de cargo si se aceptan.

Como parte de estos modelos, reCAPTCHA Fraud Prevention examina las señales de las transacciones para detectar fraudes. Por ejemplo, una serie de intentos de compra con precios bajos podría indicar un ataque de carding. En la respuesta, recibirá puntuaciones de riesgo de diferentes tipos de fraude, que podrá usar para enviar la transacción a una revisión manual o bloquear directamente las transacciones suficientemente sospechosas.

Para configurar la prevención de fraudes de reCAPTCHA, sigue estos pasos:

  1. Prepara tu entorno.

  2. Habilita reCAPTCHA Fraud Prevention en tu Google Cloud proyecto.

  3. Elige Integración de frontend para incorporar automáticamente las señales del dispositivo frontend o Integración solo con API si prefieres no integrar el frontend.

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

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

  4. Envía una solicitud a la API create assessment desde tu backend con datos de transacción. Para ello, utiliza la integración de frontend o la integración solo con API que hayas elegido anteriormente.

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

  5. Determina la siguiente acción que deben realizar los usuarios en función de las puntuaciones.

    Puede permitir la transacción, solicitar una verificación adicional, derivarla para que se revise manualmente o bloquearla.

Antes de empezar

  1. Si no has usado reCAPTCHA antes, haz lo siguiente:

    1. Configura reCAPTCHA en tu Google Cloud proyecto.

    2. Crea una clave de reCAPTCHA basada en puntuaciones.

  2. Si vas a llevar a cabo una integración de frontend, comprueba que tu entorno admita tokens de más de 8 kB, ya que la prevención de fraude de reCAPTCHA podría usar tokens más grandes.

Habilitar reCAPTCHA Fraud Prevention

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

    Ir a reCAPTCHA

  2. Comprueba que el nombre de tu proyecto aparece en el selector de recursos.

    Si no ves el nombre de tu proyecto, haz clic en el selector de recursos y, a continuación, selecciona tu proyecto.

  3. Haz clic en Configuración.

  4. En el panel Prevención de fraude, haga clic en Configurar.

  5. Haz clic en el interruptor Habilitar y, a continuación, en Guardar.

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

Usar Fraud Prevention con una integración frontend de reCAPTCHA ayuda a protegerse contra ataques de carding y transacciones fraudulentas. Para empezar a detectar ataques, instala una clave de reCAPTCHA basada en puntuación en cada página del flujo de usuario de pago. Esto incluye la interfaz en la que un usuario revisa su carrito, selecciona su método de pago y completa la compra. Una vez que el usuario haya seleccionado una opción en cada paso, llama a grecaptcha.enterprise.execute() para generar un token. Para saber cómo instalar claves basadas en una puntuación y llamar a execute(), consulta Instalar claves basadas en una 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 probar este código en JSFiddle haciendo clic en el icono <> situado 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: crear evaluaciones con datos de transacciones

Para recibir veredictos de fraude en los pagos, cree evaluaciones con Transaction Data (Datos de transacción) mediante los campos adicionales del método projects.assessments.create (proyectos.evaluaciones.crear).

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, le recomendamos que añada campos opcionales como email, phone_number y billing_address.

Para recibir una evaluación de prevención de fraude con integración frontend, debe cumplirse uno de los siguientes requisitos:

{
  "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 señales adicionales.

Para saber cómo crear evaluaciones, consulta Crear una evaluación para tu sitio web. Es posible que reCAPTCHA Fraud Prevention use tokens más grandes, así que comprueba 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 API: crear evaluaciones con datos de transacciones

.

Para recibir veredictos de fraude de pagos, cree evaluaciones con Transaction Data (Datos de transacción) mediante los campos adicionales del método projects.assessments.create (proyectos.evaluaciones.crear).

Como la integración solo con la API de reCAPTCHA genera una evaluación de prevención de fraudes usando únicamente los datos de transacción que proporciones, debes proporcionar al menos lo siguiente:

  1. Dirección de facturación regionCode y postalCode.
  2. Datos de transacción paymentMethod.
  3. Una de las 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 de información posible y que también envíes señales adicionales.

Interpretar evaluaciones

Cuando empieces a enviar los datos de las transacciones, recibirás las evaluaciones como respuesta JSON con el componente fraudPreventionAssessment en riskAnalysis.

A continuación, se muestra un ejemplo de respuesta:

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

La respuesta que recibas incluirá una puntuación y códigos de motivo, si procede. Cuanto más alta sea la puntuación, más probable será que la transacción sea fraudulenta y arriesgada. Cuanto más baja sea la puntuación, más probable será 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 arriesgada, mientras que 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 lleves a cabo en función de la evaluación. Para la integración más sencilla, puedes definir umbrales en transactionRisk para contribuir a tu decisión. Por ejemplo, puede contribuir a enviar a una revisión manual o a rechazar directamente las transacciones fraudulentas. También puedes usar la puntuación en tus propios flujos de trabajo contra el fraude o como parte de las reglas de tu sistema. Como reCAPTCHA examina señales únicas 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 contenedor de puntuación se calibra con 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 umbrales que debe seleccionar dependen de las necesidades de su empresa. A continuación se muestran algunos ejemplos de cómo puedes usar la puntuación transactionRisk:

Tolerancia al riesgo Umbral recomendado Tasa máxima de falsos positivos Ejemplo de uso
Bajo 0,5 5 % Requerir una verificación adicional, como la autenticación de dos factores, antes de aceptar la transacción
Medio 0,7 1 % Enviar una transacción a revisión manual
Alta 0,9 0,1 % Rechazar transacción

Siguientes pasos