Protege las transacciones de pago con la Prevención de fraudes

En esta página, se describe cómo proteger de manera eficaz las transacciones de pago contra ataques, como el carding, el fraude con instrumentos robados y el fraude en los pagos por apropiación de cuentas, con la Prevención de fraudes de reCAPTCHA.

La Prevención de fraudes de reCAPTCHA 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 reclamos o contracargos si se aceptan.

Como parte de estos modelos, la prevención de fraudes de reCAPTCHA examina los indicadores de transacciones para permitir la detección de fraudes. 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 prevención de fraudes de reCAPTCHA, debes completar los siguientes pasos:

  1. Prepara el entorno.

  2. Habilita la prevención de fraudes de reCAPTCHA en tu Google Cloud proyecto.

  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 transacción obligatorios y no requiere 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 para el 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, derivarla a una revisión manual o bloquearla.

Antes de comenzar

  1. Si no conoces 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 la Prevención de fraude de reCAPTCHA podría usar tokens más grandes.

Habilita la prevención de fraudes de reCAPTCHA

  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 Prevención de fraudes, 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 prevención de fraudes con una integración de frontend de reCAPTCHA ayuda a proteger contra ataques de uso ilegítimo de tarjetas 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.

Se requiere uno de los siguientes elementos para recibir una evaluación de prevención de fraude con integración de frontend:

{
  "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. Es posible que la Prevención de fraude de reCAPTCHA use 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 prevención de fraude usando solo los datos de la transacción 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.

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

{
  "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 probablemente 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% Enviar la transacción a revisión manual
Alta 0.9 0.1% Rechazar transacción

¿Qué sigue?