מניעת הונאות

אותות למניעת הונאות

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.

אם נראה שהעסקה חוקית, עבד את ההזמנה כרגיל.

אימות כתובת לחיוב

כדי למנוע הונאה, תוכלו לכלול את הכתובת לחיוב בבקשה של ספק שירותי התשלום שאתם משלמים. השדה billingAddress מוחזר בשדה SubmitOrderRequestMessage.

  • צריך להגדיר את הערך CardParameters.billingAddressRequired כ-true בתגובה לתשלום בקופה כדי לחייב את המשתמש להזין כתובת לחיוב.
  • מגדירים את CardParameters.billingAddressParameters כדי להגדיר את שדות החובה. מומלץ להגדיר את {"format":"MIN"} כדי להקל על המשתמשים.
  • כחלק מעסקאות התשלום עם ספק שירותי התשלום, צריך לכלול את הכתובת המלאה של billingAddress או רק את billingAddress.postalCode לאימות.

דוגמה ל-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"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            ]
        }
    }
}
      

אם תחזירו את הסוג PAYMENT_DECLINED rejectionInfo, המשתמש יוכל לעדכן את הכתובת לחיוב או לבחור אמצעי תשלום אחר. שגיאות מסוג PAYMENT_DECLINED לא כלולות בקטע שליחת התראות על שגיאות בהזמנה.