欺诈防范信号
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
为 REJECTED
、rejectionInfo
为 INELIGIBLE
作为响应,同时在 SubmitOrderResponseMessage
中提供相应的错误说明。
如果交易看起来合法,请照常处理订单。
结算地址验证
为了减少欺诈行为,您可以在向您的 PSP 的付款交易请求中添加账单邮寄地址。SubmitOrderRequestMessage
中会返回 billingAddress。
- 在结账响应中将 CardParameters.billingAddressRequired 设置为
true
,以要求用户输入其帐单邮寄地址。 - 设置 CardParameters.billingAddressParameters 以定义必填字段。建议设置
{"format":"MIN"}
,让用户使用起来更方便。 - 请添加完整的 billingAddress 或仅添加 billingAddress.postalCode,以便在与 PSP 的付款交易过程中进行验证。
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
错误。