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 orderState
là REJECTED
và rejectionInfo
là INELIGIBLE
, 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
.
- Đặt CardParameters.billingAddressRequired thành
true
trong phản hồi thanh toán để yêu cầu người dùng nhập địa chỉ thanh toán. - Đặt CardParameters.billingAddressParameters để xác định các trường bắt buộc. Bạn nên đặt
{"format":"MIN"}
để giảm sự phiền hà cho người dùng. - Thêm billingAddress đầy đủ hoặc chỉ billingAddress.postalCode để xác thực trong giao dịch thanh toán với PSP.
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ự.
Ví dụ về phản hồi
{ "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.