Indicadores de prevenção de fraudes
O Google pode fornecer outras informações do cliente do usuário quando enviar
SubmitOrderRequest
. Use essas informações para evitar transações fraudulentas na sua integração.
Como ler sinais de prevenção contra fraudes
Quando seu projeto estiver ativado para receber outros indicadores de prevenção contra fraudes, os
cabeçalhos SubmitOrderRequest
vão conter informações sobre o cliente do usuário,
em vez de servidores do Google. Os cabeçalhos das solicitações contêm 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 fraudes
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 de cliente do usuário não forem suficientes para evitar fraudes, entre em contato com o Google para discutir soluções alternativas.
Como lidar com transações fraudulentas durante o atendimento do pedido
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 orderState
de
REJECTED
e rejectionInfo
de INELIGIBLE
, além de 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 fraudes, 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 de compra para exigir que o usuário insira o endereço de faturamento. - Defina CardParameters.billingAddressParameters para os campos obrigatórios. É recomendável definir
{"format":"MIN"}
para reduzir o atrito para os 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 CEP está incorreto, retorne um exemplo de resposta SubmitOrderResponseMessage
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" } } } ] } } } ] } } }
Retornar o tipo PAYMENT_DECLINED
rejectionInfo exibe 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 dos Alertas de erro do pedido.