Indicadores de prevenção contra fraudes
O Google pode fornecer mais informações do cliente do usuário quando enviamos
SubmitOrderRequest
. Use essas informações para evitar transações
fraudulentas na sua integração.
Como ler os indicadores de prevenção de fraudes
Quando seu projeto estiver ativado para receber outros indicadores de prevenção de fraude, os cabeçalhos SubmitOrderRequest
vão conter informações sobre o cliente do usuário, e não sobre os servidores do Google. Os cabeçalhos de solicitação vão conter as seguintes
informações:
Endereço IP:o endereço IP do cliente do usuário está disponível como o primeiro IP no campo
x-forwarded-for
. Esse endereço está no formato IPV4 ou IPV6, conforme determinado pela configuração do cliente do usuário.User agent:a string do user agent é armazenada no campo
user-agent
com um sufixo "Google-ActionsOnGoogle/1.0". Esse campo pode não ser preenchido dependendo do dispositivo do usuário e se ele fez um pedido por voz.
Confira abaixo um snippet do cabeçalho HTTP SubmitOrderRequest
quando a prevenção de fraude
está ativada:
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
Se as informações do cliente do usuário não forem suficientes para você realizar a prevenção de fraudes, entre em contato com seu contato do Google para discutir soluções alternativas.
Como lidar com transações fraudulentas durante a entrega
Com base no endereço IP do usuário e nas informações do user-agent fornecidas no
SubmitOrderRequest
, use seu algoritmo interno de prevenção de fraudes para determinar
se a transação é legítima.
Se a transação parecer fraudulenta, responda com uma orderState
de
REJECTED
e uma rejectionInfo
de INELIGIBLE
, junto com uma descrição de erro
adequada no SubmitOrderResponseMessage
.
Se a transação parecer legítima, processe o pedido normalmente.
Validação do endereço de faturamento
Para reduzir a fraude, inclua o endereço de faturamento na solicitação de transação de pagamento para seu PSP. O billingAddress é retornado no
SubmitOrderRequestMessage
.
- Defina CardParameters.billingAddressRequired como
true
na resposta de finalização da compra para exigir que o usuário insira o endereço de faturamento. - Defina CardParameters.billingAddressParameters para definir os
campos obrigatórios. É recomendável definir
{"format":"MIN"}
para reduzir a fricção dos usuários. - Inclua o billingAddress completo ou apenas o billingAddress.postalCode para validação como parte da transação de pagamento com seu PSP.
Exemplo 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\"}}}]}" }
Se o PSP responder que o endereço ou código postal está incorreto, você vai precisar
retornar uma resposta SubmitOrderResponseMessage
de exemplo semelhante.
Exemplo de resposta
{ "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" } } } ] } } } ] } } }
O retorno do tipo PAYMENT_DECLINED
rejectionInfo mostra uma
mensagem e permite que o usuário atualize o endereço de faturamento ou escolha outra
forma de pagamento. Os erros PAYMENT_DECLINED
são excluídos em Enviar alertas de erro de
pedido.