사기 예방

사기 방지 신호

Google은 SubmitOrderRequest를 전송할 때 추가 사용자 클라이언트 정보를 제공할 수 있습니다. 이 정보를 사용하여 통합에서 사기 거래를 방지할 수 있습니다.

사기 방지 신호를 읽는 방법

프로젝트에서 추가 사기 방지 신호를 수신하도록 설정된 경우 SubmitOrderRequest 헤더에 Google 서버 대신 사용자 클라이언트에 관한 정보가 포함됩니다. 요청 헤더에는 다음 정보가 포함됩니다.

  • IP 주소: 사용자 클라이언트의 IP 주소는 x-forwarded-for 필드의 첫 번째 IP로 사용할 수 있습니다. 이 주소는 사용자 클라이언트의 구성에 따라 IPV4 또는 IPV6 형식입니다.

  • 사용자 에이전트: 사용자 에이전트 문자열은 user-agent 필드에 'Google-ActionsOnGoogle/1.0' 접미사로 저장됩니다. 사용자의 기기와 음성으로 주문했는지에 따라 이 필드가 채워지지 않을 수 있습니다.

다음은 사기 방지가 사용 설정된 경우의 SubmitOrderRequest HTTP 헤더 스니펫입니다.

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 담당자에게 연락하여 대체 솔루션을 논의하세요.

처리 중에 발생한 허위 거래 처리 방법

SubmitOrderRequest에 제공된 사용자의 IP 주소와 사용자 에이전트 정보를 기반으로 내부 사기 방지 알고리즘을 사용하여 거래가 적법한지 확인합니다.

거래가 사기인 것으로 보이는 경우 orderState REJECTEDrejectionInfo INELIGIBLE로 응답하고 SubmitOrderResponseMessage에 적절한 오류 설명을 포함합니다.

거래가 합법적으로 보이는 경우 평소와 같이 주문을 처리합니다.

청구서 수신 주소 유효성 검사

사기를 줄이기 위해 PSP에 대한 결제 거래 요청에 결제 주소를 포함할 수 있습니다. billingAddressSubmitOrderRequestMessage에 반환됩니다.

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 오류는 주문 오류 제출 알림에서 제외됩니다.