Indicadores de prevención de fraudes
Google puede proporcionar información adicional del cliente del usuario cuando enviamos SubmitOrderRequest
. Puedes usar esta información para evitar transacciones fraudulentas en tu integración.
Cómo leer los indicadores de prevención de fraudes
Cuando tu proyecto esté habilitado para recibir indicadores adicionales de prevención de fraudes, los encabezados SubmitOrderRequest
contendrán información sobre el cliente del usuario en lugar de los servidores de Google. Los encabezados de la solicitud contendrán la siguiente información:
Dirección IP: La dirección IP del cliente del usuario está disponible como la primera IP en el campo
x-forwarded-for
. Esta dirección está en formato IPv4 o IPv6, según lo determine la configuración del cliente del usuario.Usuario-agente: La cadena de usuario-agente se almacena en el campo
user-agent
con el sufijo "Google-ActionsOnGoogle/1.0". Ten en cuenta que es posible que este campo no se propague según el dispositivo del usuario y si realizó un pedido por voz.
A continuación, se muestra un fragmento del encabezado HTTP SubmitOrderRequest
cuando la prevención de fraudes está habilitada:
X-Forwarded-For: 72.00.123.12,66.111.12.123, 169.254.1.1 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36,gzip(gfe),gzip(gfe) Google-ActionsOnGoogle/1.0
Si la información del cliente del usuario no es suficiente para realizar la prevención de fraudes, comunícate con tu contacto de Google para analizar otras soluciones.
Cómo controlar las transacciones fraudulentas durante la entrega
En función de la dirección IP del usuario y la información del usuario-agente proporcionada en SubmitOrderRequest
, usa tu algoritmo interno de prevención de fraudes para determinar si la transacción es legítima.
Si la transacción parece ser fraudulenta, responde con un orderState
de REJECTED
y un rejectionInfo
de INELIGIBLE
, junto con una descripción de error adecuada en SubmitOrderResponseMessage
.
Si la transacción parece ser legítima, procesa el pedido como de costumbre.
Validación de la dirección de facturación
Para reducir el fraude, puedes incluir la dirección de facturación en la solicitud de transacción de pago a tu PSP. billingAddress se muestra en SubmitOrderRequestMessage
.
- Establece CardParameters.billingAddressRequired en
true
en la respuesta de confirmación de la compra para solicitarle al usuario que ingrese su dirección de facturación. - Establece CardParameters.billingAddressParameters para definir los campos obligatorios. Se recomienda configurar
{"format":"MIN"}
para reducir la fricción de los usuarios. - Incluye la billingAddress completa o solo billingAddress.postalCode para la validación como parte de la transacción de pago con tu PSP.
Ejemplo de googleProvidedPaymentOptions:
{ "facilitationSpecification": "{\"apiVersion\":2,\"apiVersionMinor\":0,\"merchantInfo\":{\"merchantId\":\"Merchant ID\",\"merchantName\":\"Merchant Name\"},\"allowedPaymentMethods\":[{\"type\":\"CARD\",\"parameters\":{\"allowedAuthMethods\":[\"PAN_ONLY\"],\"allowedCardNetworks\":[\"VISA\",\"AMEX\",\"MASTERCARD\"],\"billingAddressRequired\":true,\"billingAddressParameters\":{\"format\":\"MIN\"}},\"tokenizationSpecification\":{\"type\":\"PAYMENT_GATEWAY\",\"parameters\":{\"gateway\":\"stripev2\",\"gatewayMerchantId\":\"stripe_pk_live_key\"}}}]}" }
Si la PSP responde que la dirección o el código postal son incorrectos, debes mostrar una respuesta SubmitOrderResponseMessage
de ejemplo similar.
Ejemplo de respuesta
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "structuredResponse": { "orderUpdate": { "actionOrderId": "sample_action_order_id", "orderState": { "state": "REJECTED", "label": "Order rejected" }, "updateTime": "2017-05-10T02:30:00.000Z", "rejectionInfo": { "type": "PAYMENT_DECLINED", "reason": "Invalid zipcode" }, "orderManagementActions": [ { "type": "CUSTOMER_SERVICE", "button": { "title": "Contact customer service", "openUrlAction": { "url": "mailto:support@example.com" } } }, { "type": "EMAIL", "button": { "title": "Email restaurant", "openUrlAction": { "url": "mailto:person@example.com" } } }, { "type": "CALL", "button": { "title": "Call restaurant", "openUrlAction": { "url": "tel:+16505554679" } } }, { "type": "VIEW_DETAILS", "button": { "title": "View order", "openUrlAction": { "url": "https://orderview.partner.com?orderid=sample_action_order_id" } } } ] } } } ] } } }
Si devuelves el tipo PAYMENT_DECLINED
rejectionInfo, se mostrará un mensaje y se le permitirá al usuario actualizar la dirección de facturación o elegir otra forma de pago. Los errores PAYMENT_DECLINED
se excluyen en Enviar alertas de errores de pedido.