Sygnały zapobiegania oszustwom
Google może przekazać dodatkowe informacje o kliencie użytkownika, gdy wysyłamy SubmitOrderRequest
. Możesz wykorzystać te informacje, aby zapobiec oszustwom w ramach integracji.
Jak odczytywać sygnały zapobiegania oszustwom
Gdy Twój projekt będzie otrzymywać dodatkowe sygnały zapobiegania oszustwom, nagłówki SubmitOrderRequest
będą zawierać informacje o kliencie użytkownika zamiast o serwerach Google. Nagłówki żądania zawierają te informacje:
Adres IP: adres IP klienta użytkownika jest dostępny jako pierwszy adres IP w polu
x-forwarded-for
. Adres ten jest w formacie IPV4 lub IPV6, zgodnie z konfiguracją klienta użytkownika.Klient użytkownika: ciąg znaków klienta użytkownika jest przechowywany w polu
user-agent
z przyrostkiem „Google-ActionsOnGoogle/1.0”. Pamiętaj, że to pole może nie zostać wypełnione w zależności od urządzenia użytkownika i od tego, czy złożył on zamówienie za pomocą głosu.
Poniżej znajduje się fragment nagłówka HTTP SubmitOrderRequest
, gdy zapobieganie oszustwom jest włączone:
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
Jeśli informacje o kliencie użytkownika nie wystarczą do zapobiegania oszustwom, skontaktuj się z osobą kontaktową w Google, aby omówić alternatywne rozwiązania.
Jak postępować z nieuczciwymi transakcjami podczas realizacji
Na podstawie adresu IP użytkownika i informacji o użytkowniku zawartych w SubmitOrderRequest
użyj wewnętrznego algorytmu zapobiegania oszustwom, aby ustalić, czy transakcja jest legalna.
Jeśli transakcja wydaje się być oszukańcza, odpowiedz z wartością orderState
w REJECTED
i wartością INELIGIBLE
w INELIGIBLE
oraz odpowiednim opisem błędu w SubmitOrderResponseMessage
.rejectionInfo
Jeśli transakcja wydaje się być legalna, przetwórz zamówienie w zwykły sposób.
Weryfikacja adresu rozliczeniowego
Aby ograniczyć oszustwa, możesz dołączyć adres rozliczeniowy do żądania transakcji płatniczej wysyłanego do dostawcy usług płatniczych. Właściwość billingAddress jest zwracana w formacie SubmitOrderRequestMessage
.
- Aby wymagać od użytkownika podania adresu rozliczeniowego, ustaw parametr CardParameters.billingAddressRequired na
true
w odpowiedzi na proces płatności. - Ustaw element CardParameters.billingAddressParameters, aby zdefiniować wymagane pola. Zalecamy ustawienie wartości
{"format":"MIN"}
, aby zmniejszyć tarcie dla użytkowników. - W ramach transakcji płatniczej z dostawcą usług płatniczych (PSP) podaj pełny adres billingAddress lub tylko billingAddress.postalCode na potrzeby weryfikacji.
Przykład 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\"}}}]}" }
Jeśli PSP odpowie, że adres lub kod pocztowy jest nieprawidłowy, zwracaj podobny przykład odpowiedzi SubmitOrderResponseMessage
.
Przykładowa odpowiedź
{ "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" } } } ] } } } ] } } }
Zwrócenie typu PAYMENT_DECLINED
rejectionInfo powoduje wyświetlenie wiadomości i umożliwia użytkownikowi zaktualizowanie adresu rozliczeniowego lub wybranie innej formy płatności. Błędy PAYMENT_DECLINED
są wykluczone z alertów dotyczących błędów przesyłania zamówień.