Сигналы предотвращения мошенничества
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
исключены из оповещений об ошибках отправки заказов .