Biện pháp chống lừa đảo

Tín hiệu chống gian lận

Google có thể cung cấp thêm thông tin về ứng dụng của người dùng khi chúng tôi gửi SubmitOrderRequest. Bạn có thể sử dụng thông tin này để ngăn chặn các giao dịch gian lận trong quá trình tích hợp.

Cách đọc tín hiệu chống gian lận

Khi dự án của bạn được bật để nhận thêm các tín hiệu ngăn chặn gian lận, tiêu đề SubmitOrderRequest sẽ chứa thông tin về ứng dụng của người dùng thay vì máy chủ của Google. Tiêu đề yêu cầu sẽ chứa các thông tin sau:

  • Địa chỉ IP: Địa chỉ IP của ứng dụng khách của người dùng có sẵn dưới dạng IP đầu tiên trong trường x-forwarded-for. Địa chỉ này ở định dạng IPV4 hoặc IPV6 theo cấu hình của ứng dụng khách của người dùng.

  • Tác nhân người dùng: Chuỗi tác nhân người dùng được lưu trữ trong trường user-agent với hậu tố "Google-ActionsOnGoogle/1.0". Xin lưu ý rằng trường này có thể không được điền tuỳ thuộc vào thiết bị của người dùng và liệu họ có đặt hàng bằng giọng nói hay không.

Dưới đây là đoạn mã của tiêu đề HTTP SubmitOrderRequest khi tính năng ngăn chặn hành vi gian lận được bật:

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

Nếu thông tin về ứng dụng của người dùng không đủ để bạn thực hiện biện pháp ngăn chặn hành vi gian lận, hãy liên hệ với đầu mối liên hệ của Google để thảo luận về các giải pháp thay thế.

Cách xử lý giao dịch gian lận trong quá trình thực hiện đơn hàng

Dựa trên địa chỉ IP của người dùng và thông tin về tác nhân người dùng được cung cấp trong SubmitOrderRequest, hãy sử dụng thuật toán nội bộ để ngăn chặn hành vi gian lận nhằm xác định xem giao dịch có hợp lệ hay không.

Nếu giao dịch có vẻ gian lận, hãy trả lời bằng orderStateREJECTEDrejectionInfoINELIGIBLE, cùng với nội dung mô tả lỗi thích hợp trong SubmitOrderResponseMessage.

Nếu giao dịch có vẻ hợp lệ, hãy xử lý đơn đặt hàng như bình thường.

Xác thực địa chỉ thanh toán

Để giảm tình trạng gian lận, bạn có thể thêm địa chỉ thanh toán vào yêu cầu giao dịch thanh toán cho PSP. billingAddress được trả về trong SubmitOrderRequestMessage.

Ví dụ về 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\"}}}]}"
}

Nếu PSP phản hồi rằng địa chỉ hoặc mã bưu chính không chính xác, bạn nên trả về một phản hồi SubmitOrderResponseMessage mẫu tương tự.

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

Việc trả về loại PAYMENT_DECLINED rejectionInfo sẽ hiển thị một thông báo và cho phép người dùng cập nhật địa chỉ thanh toán hoặc chọn một phương thức thanh toán khác. Lỗi PAYMENT_DECLINED sẽ không được đưa vào Gửi thông báo lỗi đơn đặt hàng.