Предотвращение мошенничества

Сигналы предотвращения мошенничества

Google может предоставить дополнительную информацию о клиенте пользователя при отправке SubmitOrderRequest . Вы можете использовать эту информацию, чтобы предотвратить мошеннические транзакции в вашей интеграции.

Как считывать сигналы предотвращения мошенничества

Если ваш проект включен для получения дополнительных сигналов предотвращения мошенничества, заголовки SubmitOrderRequest будут содержать информацию о клиенте пользователя, а не о серверах Google. Заголовки запроса будут содержать следующую информацию:

  • IP-адрес: IP-адрес пользовательского клиента доступен в качестве первого IP-адреса в поле x-forwarded-for . Этот адрес имеет формат IPV4 или IPV6, в зависимости от конфигурации пользовательского клиента.

  • Пользовательский агент: строка пользовательского агента хранится в поле user-agent с суффиксом «Google-ActionsOnGoogle/1.0». Обратите внимание, что это поле может не заполняться в зависимости от устройства пользователя и того, разместил ли он заказ голосом.

Ниже приведен фрагмент HTTP-заголовка SubmitOrderRequest , когда включена защита от мошенничества:

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

Если информации о клиенте пользователя недостаточно для предотвращения мошенничества, обратитесь к своему контактному лицу в Google, чтобы обсудить альтернативные решения.

Как бороться с мошенническими транзакциями во время исполнения

На основе IP-адреса пользователя и информации об агенте пользователя, предоставленной в SubmitOrderRequest , используйте внутренний алгоритм предотвращения мошенничества, чтобы определить, является ли транзакция законной.

Если транзакция выглядит мошеннической, отправьте в ответ orderState REJECTED и rejectionInfo INELIGIBLE вместе с соответствующим описанием ошибки в SubmitOrderResponseMessage .

Если транзакция кажется законной, обработайте заказ как обычно.

Проверка платежного адреса

Чтобы уменьшить количество случаев мошенничества, вы можете включить платежный адрес в запрос платежной транзакции на ваш PSP. BillingAddress возвращается в SubmitOrderRequestMessage .

  • Установите для CardParameters.billingAddressRequired значение true в ответе на оформление заказа, чтобы пользователь мог ввести свой платежный адрес.
  • Установите CardParameters.billingAddressParameters , чтобы определить обязательные поля. Рекомендуется установить {"format":"MIN"} чтобы уменьшить неудобства для пользователей.
  • Включите полный BillingAddress или только BillingAddress.postalCode для проверки в рамках платежной транзакции с вашим PSP.

Пример 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\"}}}]}"
}

Если PSP отвечает, что адрес или почтовый индекс неверен, вам следует вернуть аналогичный пример ответа SubmitOrderResponseMessage .

  {
   
"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"
                                       
}
                                   
}
                               
}
                           
]
                       
}
                   
}
               
}
           
]
       
}
   
}
}
     

Возврат типа RejectionInfo PAYMENT_DECLINED отображает сообщение и позволяет пользователю обновить адрес выставления счета или выбрать другой способ оплаты. Ошибки PAYMENT_DECLINED исключены из оповещений об ошибках отправки заказов .