En esta página, se describe cómo proteger de forma eficaz las transacciones de pago contra ataques, como el uso de tarjetas, el fraude con instrumentos robados y el fraude en los pagos por apropiación de cuentas mediante la prevención de fraudes de reCAPTCHA Enterprise.
La prevención de fraudes de reCAPTCHA Enterprise te ayuda a proteger las transacciones de pago mediante la identificación de ataques manuales dirigidos y de intentos de fraude a gran escala. Entrena automáticamente modelos de transacciones y comportamientos para identificar eventos que probablemente sean fraudulentos y que puedan dar lugar a una disputa o una devolución del cargo si se aceptan.
Como parte de estos modelos, la prevención de fraudes de reCAPTCHA Enterprise examina los indicadores de transacción para habilitar la detección de fraudes. Por ejemplo, una serie de intentos de compra con precios bajos puede indicar un ataque de tarjetas. En la respuesta, recibirás puntuaciones de riesgo para diferentes tipos de fraude, que puedes usar a fin de enviar la transacción a una revisión manual o bloquear directamente transacciones lo suficientemente sospechosas.
Para configurar la prevención de fraudes de reCAPTCHA Enterprise, completa los siguientes pasos:
Instala reCAPTCHA Enterprise en tu frontend de pago.
Crea evaluaciones con datos de transacciones.
Anota las evaluaciones con eventos de transacción.
Interpretar las respuestas para tomar medidas ante posibles fraudes
Antes de comenzar
Revisa la información de precios para la prevención de fraudes de reCAPTCHA Enterprise.
Confirma que tu integración admita tokens de más de 8 KB. Es posible que la prevención de fraudes de reCAPTCHA Enterprise use tokens más grandes, así que confirma que se envíen en solicitudes POST en lugar de GET, y en el cuerpo, no en un encabezado.
Instala reCAPTCHA Enterprise en tu frontend de pagos
Para comenzar a detectar ataques, instala una clave basada en la puntuación 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 haga su selección en cada paso, llama a grecaptcha.enterprise.execute()
para generar un token. Para aprender a instalar claves basadas en puntuaciones y llamar a execute()
, consulta Cómo instalar claves basadas en puntuaciones.
En el siguiente ejemplo, se muestra cómo integrar una clave basada en puntuaciones 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>
Crea una evaluación con datos de transacciones
Para habilitar los veredictos de fraude de pago, crea evaluaciones con datos de transacciones mediante los campos adicionales en el método projects.assessments.create. Para que puedas usar esta función, Google debe habilitarla en tu organización. Para solicitar acceso a esta función, comunícate con nosotros.
La integración más simple incluye el ID de transacción, la forma de pago, la moneda y el valor de la transacción.
{ "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, } } }
Los siguientes campos son opcionales, pero recomendamos proporcionarlos para mejorar la calidad de la detección de fraudes.
{ "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, "shipping_value": 7.99, "shipping_address": { "recipient": "name1 name2", "address": "123 Street Name", "address": "Apt 1", "locality": "Sunnyvale", "administrative_area": "CA", "region_code": "USA", "postal_code": "123456" }, "billing_address": { "recipient": "name1 name2", "address": "123 Street Name", "address": "Apt 1", "locality": "Sunnyvale", "administrative_area": "CA", "region_code": "USA", "postal_code": "123456" }, "user": { "account_id": "abcde12345", "creation_ms": 1650000000000, "email": "user@example.com", "email_verified": true, "phone_number": "+16502530000", "phone_verified" false }, "merchant": { "account_id": "abcde12345", "creation_ms": 1650000000000, "email": "user@example.com", "email_verified": true, "phone_number": "+16502530000", "phone_verified": false }, "items": { "name": "first item", "value": 19.99, "quantity": 1, "merchant_account_id": "abcde12345", }, "items": { "name": "second item", "value": 19.99, "quantity": 1, "merchant_account_id": "abcde12345", }, "gateway_info": { "name": "google", "gateway_response_code": "SUCCESS", "avs_response_code": "Y", "cvv_response_code": "Y", } } } }
Si deseas obtener información para crear evaluaciones, consulta Crea una evaluación para tu sitio web.
Anota evaluaciones con eventos de transacción
Para obtener el mejor rendimiento, la prevención de fraudes de reCAPTCHA Enterprise necesita visibilidad de los eventos del ciclo de vida de los pagos para las transacciones. Por lo tanto, debes enviar anotaciones para las evaluaciones que creaste con los datos de transacciones. Por ejemplo, debes proporcionar la información de la transacción a Prevención de fraudes de reCAPTCHA Enterprise como un evento de transacción en las siguientes situaciones:
El proveedor de pagos acepta o rechaza la transacción.
El comercio emite un reembolso.
La entidad emisora de pagos envía un reembolso
Para obtener más información sobre cómo enviar anotaciones, consulta Anota evaluaciones.
Te recomendamos que realices estas solicitudes automáticamente como parte de la lógica correspondiente en tu sistema cuando los datos estén disponibles, como cuando cambia el estado de una transacción.
Después de crear una evaluación con los datos de transacciones incluidos,
la Prevención de fraudes de reCAPTCHA Enterprise muestra un veredicto y un
assessment_id
. Anota la evaluación con eventos de transacción en las siguientes etapas importantes del ciclo de vida de pago cuando se produzcan:
Tipo de evento | Descripción | Ejemplo del motivo | Ejemplo de valor |
---|---|---|---|
MERCHANT_APPROVE | MERCHANT_DENY |
Cuando decidas si la transacción debe poder continuar. | IN_HOUSE |
No disponible |
AUTHORIZATION | AUTHORIZATION_DECLINE |
Cuando envías la transacción para que se procese, la entidad emisora de la tarjeta decide si permite que se realice. | 82 (un código de motivo significa que el CVV era incorrecto) |
No disponible |
CHARGEBACK |
Cuando se devuelven los cargos de la transacción. | Card Reported Stolen |
20 (que representa una devolución del cargo parcial de 20 unidades monetarias) |
Junto con el tipo de evento CHARGEBACK
, incluye el código del motivo de la devolución del cargo que
proporciona la entidad emisora de la tarjeta mediante el campo reason
. Además, incluye el importe monetario que se cobró en el campo value
si la transacción se cobró de forma parcial.
En el campo reason
del evento de transacción, incluye términos aclaratorios para proporcionar más contexto sobre el motivo del evento o proporciona códigos de motivo que se obtienen directamente de la red de pagos o la entidad emisora de la tarjeta. Estos términos y códigos difieren según el tipo de evento.
En la siguiente tabla, se especifica la lista completa de tipos de eventos de transacción:
Motivo de la anotación | Descripción |
---|---|
MERCHANT_APPROVE |
Indica que el comercio aprobó la transacción. Los motivos correspondientes pueden incluir términos como IN_HOUSE , ACCERTIFY , CYBERSOURCE o MANUAL_REVIEW .
|
MERCHANT_DENY |
Indica que la transacción se rechazó y se concluyó debido a riesgos
detectados por el comercio. Los motivos correspondientes pueden incluir términos como IN_HOUSE , ACCERTIFY , CYBERSOURCE o MANUAL_REVIEW .
|
MANUAL_REVIEW |
Indica que una persona está evaluando la transacción debido a sospechas o riesgos. |
AUTHORIZATION |
Indica que se realizó correctamente el intento de autorización con la entidad emisora de la tarjeta. |
AUTHORIZATION_DECLINE |
Indica que falló el intento de autorización con la entidad emisora de la tarjeta. Los motivos pueden ser el 54 de Visa, que indica que la tarjeta está vencida, o el 82 , que indica que el CVV es incorrecto.
|
PAYMENT_CAPTURE |
Indica que la transacción se completó porque se liquidaron los fondos. |
PAYMENT_CAPTURE_DECLINE |
Indica que no se pudo completar la transacción porque no se liquidaron los fondos. |
CANCEL |
Indica que se canceló la transacción. Especifica el motivo de la cancelación. Por ejemplo, INSUFFICIENT_INVENTORY .
|
CHARGEBACK_INQUIRY |
Indica que el comercio recibió una consulta de devolución del cargo debido a un fraude por la transacción y que solicita información adicional antes de que se emita oficialmente una devolución del cargo por fraude y se envíe una notificación formal de devolución del cargo. |
CHARGEBACK_ALERT |
Indica que el comercio recibió una alerta de devolución del cargo debido a un fraude por la transacción. Se inicia el proceso de resolución de la disputa sin involucrar a la red de pagos. |
FRAUD_NOTIFICATION |
Indica que el banco emisor del instrumento de pago envía una notificación de fraude para la transacción porque parece que la transacción es fraudulenta. Recomendamos incluir datos de TC40 o SAFE en el campo reason para este tipo de evento. En el caso de las devoluciones de cargos parciales, te recomendamos que incluyas un importe en el campo value .
|
CHARGEBACK |
Indica que la red de pagos le informa al comercio que la transacción ingresó al proceso de devolución del cargo debido a un fraude. Los ejemplos de código de motivo incluyen 6005 y 6041 de Descubre. En el caso de las devoluciones de cargos parciales, te recomendamos que incluyas un importe en el campo value .
|
CHARGEBACK_REPRESENTMENT |
Indica que la transacción ingresó al proceso de devolución del cargo debido a un fraude y que el comercio eligió participar. Algunos ejemplos de motivos incluyen 6005 y 6041 de Descubre. En el caso de las devoluciones de cargos parciales, te recomendamos que incluyas un importe en el campo value .
|
CHARGEBACK_REVERSE |
Indica que la transacción tuvo una devolución del cargo por fraude que era ilegítima y, como resultado, se revirtió. En el caso de las devoluciones de cargos parciales, te recomendamos que incluyas un importe en el campo value .
|
REFUND_REQUEST |
Indica que el comercio recibió un reembolso por una transacción
completada. En el caso de los reembolsos parciales, te recomendamos que incluyas un importe en el campo value . Ejemplo del motivo: FRAUD .
|
REFUND_DECLINE |
Indica que el comercio recibió una solicitud de reembolso por esta
transacción, pero la rechazó. En el caso de los reembolsos parciales, te recomendamos que incluyas un importe en el campo value . Ejemplo del motivo:
FRAUD .
|
REFUND |
Indica que el comercio reembolsó la transacción completada. En el caso de los reembolsos parciales, te recomendamos que incluyas un importe en el campo value . Ejemplo del motivo: PROACTIVE_FRAUD .
|
REFUND_REVERSE |
Indica que el comercio reembolsó la transacción completada y que se revirtió. En el caso de los reembolsos parciales, te recomendamos que incluyas un importe en el campo value .
|
En el siguiente ejemplo, se muestra una carga útil de anotación que contiene un evento de transacción. Para obtener más detalles, consulta Anota evaluaciones.
POST https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate { "transaction_event": { "event_type": "CHARGEBACK", "reason": "Card Reported Stolen", "value": 20 } }
Interpreta las evaluaciones
Después de comenzar a enviar los datos de la transacción, verás el componente fraudPreventionAssessment
en la respuesta riskAnalysis
.
El componente fraudPreventionAssessment
incluye una puntuación de riesgo de la transacción y varias puntuaciones de fraude que identifican diferentes tipos de ataques.
La puntuación transactionRisk
de Prevención de fraudes de reCAPTCHA Enterprise
varía
de 0.0 a 1.0, lo que resume el riesgo asociado con esta transacción de los
siguientes componentes. La puntuación de riesgo de 0.0 indica que el riesgo es bajo y que la transacción es probable que sea legítima, y 1.0 indica que el riesgo es alto y que la interacción es probablemente fraudulenta.
Si instalas la prevención de fraudes de reCAPTCHA Enterprise y agregas
el componente TransactionData
, obtendrás acceso al valor cardTestingVerdict
, que detecta adversarios mediante el uso de tu sitio web para probar listas de instrumentos robados o información de fuerza bruta. Cuando tienen éxito, esto genera
pérdidas para tu empresa.
También obtienes acceso al valor behavioralTrustVerdict
, que indica la confianza de una sesión en función de los indicadores de comportamiento en tu sitio y en Internet. Esta puntuación es particularmente útil si usas un motor de fraude existente y deseas reducir los falsos positivos. Dado que esta puntuación incluye información única y ortogonal en la detección convencional basada en datos de transacciones, es eficaz para agregar confianza en ciertas transacciones neutrales o que de otra manera serían riesgosas.
Después de enviar eventos de ciclo de vida, incluida la información de devolución del cargo, obtienes acceso al valor stolenInstrumentVerdict
. Esto detecta ataques, incluso a muy baja escala, que probablemente sean fraudulentos, según las señales que reCAPTCHA Enterprise analiza en la transacción y el comportamiento del usuario en la red de millones de sitios web.
El acceso a las puntuaciones adicionales (riesgo de instrumento robado, riesgo de prueba de tarjetas) se habilita después de una revisión de seguridad. Comunícate con nuestro equipo de ventas para iniciar la revisión de seguridad.
En el siguiente bloque, se muestra un ejemplo de respuesta con los valores transactionRisk
, cardTestingVerdict
, stolenInstrumentVerdict
y behavioralTrustVerdict
.
"riskAnalysis": { "score": "BOT_SCORE" } "fraudPreventionAssessment": { "transactionRisk": 0.9, "stolenInstrumentVerdict": { "risk": 0.7 }, "cardTestingVerdict": { "risk": 1.0 } "behavioralTrustVerdict": { "trust": 0.0 } }
Tú eres responsable de las acciones que realices en función de la evaluación.
Para la integración más simple, puedes establecer umbrales en el nivel superior transactionRisk
para contribuir a tu decisión. Por ejemplo, puede contribuir al envío de una revisión manual o a rechazar directamente las posibles transacciones fraudulentas. También puedes usar estas puntuaciones en tus propios flujos de trabajo de fraude o como parte de las reglas con tu sistema existente. Debido a que reCAPTCHA Enterprise
examina diferentes indicadores y tiene una visibilidad de comportamiento distinta, puedes
esperar un valor incremental incluso con un motor de detección ya maduro.
¿Qué sigue?
- Para obtener más información sobre las funciones de protección de las cuentas de usuario, consulta Funciones de protección de las cuentas de usuario.