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:
Habilita reCAPTCHA Fraud Prevention en tu Google Cloud proyecto.
-
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.
-
En la respuesta de la solicitud de la API create assessment, reCAPTCHA proporciona una puntuación del riesgo de la transacción y un código de motivo adicional (por ejemplo,
suspected_carding
), si procede. Determina la siguiente acción para tus usuarios en función de las puntuaciones.
Puedes permitir la transacción, pedir una verificación adicional, enviarla a una revisión manual o bloquearla.
Antes de empezar
Si no has usado reCAPTCHA antes, haz lo siguiente:
Asegúrate de que tu entorno admite tokens de más de 8 kB, ya que es posible que la prevención de fraude de reCAPTCHA use tokens más grandes.
Habilitar reCAPTCHA Fraud Prevention
En la Google Cloud consola, ve a la página reCAPTCHA.
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.
Haz clic en
Configuración.En el panel Prevención de fraude, haga clic en Configurar.
Haz clic en el interruptor Habilitar y, a continuación, en Guardar.
Instalar reCAPTCHA en el frontend de pago
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 experimentar con 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>
Crear evaluaciones con datos de transacciones
Para habilitar los veredictos de fraude en los pagos, crea evaluaciones con datos de transacciones mediante los campos adicionales del método projects.assessments.create.
La integración más sencilla incluye transaction_id
, payment_method
, card_bin
y value
. Para mejorar la calidad de la detección, le recomendamos que añada campos opcionales, como email
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": "USA", "postal_code": "123456" } } } }
Para mejorar la calidad de las puntuaciones, le recomendamos que envíe 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, por lo que debes asegurarte de que la solicitud se envíe en una solicitud POST en lugar de GET, y en el cuerpo, no en un encabezado.
Interpretar evaluaciones
Cuando empieces a enviar los datos de las transacciones, recibirás las evaluaciones como una respuesta JSON con el componente fraudPreventionAssessment
en riskAnalysis
.
A continuación, se muestra un ejemplo de respuesta:
{ "event": {.... .... } ..... .... .... "riskAnalysis": { "score": "0.5" "reasons": SUSPECTED_CARDING } "fraudPreventionAssessment": { "transactionRisk": 0.9, } }
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 que te ayuden a tomar decisiones. Por ejemplo, puede contribuir a enviar a una revisión manual o 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 pueden 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
- Para mejorar la calidad de la detección de fraudes, consulte información sobre las señales adicionales.
- Para anotar evaluaciones, consulte Anotar evaluaciones con eventos de transacción.