JSON 响应对象

本参考内容介绍了可在您的应用中使用的 Google Pay API 响应对象选项。响应对象是由 Google Pay API 客户端方法返回的对象。

PaymentData

此为 Google 在付款人批准付款后返回的响应对象。

PaymentDataRequest.PaymentDataRequest.PaymentDataRequest.
属性 类型 是否始终存在 说明
apiVersion 数值 是 主要 API 版本。响应中的值与
apiVersionMinor 数值 是 次要 API 版本。响应中的值与
paymentMethodData PaymentMethodData 是 所选支付方式的相关数据。
email 字符串 否 如果 emailRequired 在 PaymentDataRequest.如果另一个请求将此属性设置为 true,则不会产生任何影响。
shippingAddress 地址 否 如果 shippingAddressRequired 在

示例

针对 Google Pay API 版本 2.0 的此示例响应显示了在 Google Pay 付款表格中选择的 CARD 付款方式,并为 example 网关生成了支付方式令牌。

{
  "apiVersion": 2,
  "apiVersionMinor": 0,
  "paymentMethodData": {
    "type": "CARD",
    "description": "Visa •••• 1234",
    "info": {
      "cardNetwork": "VISA",
      "cardDetails": "1234",
      "cardFundingSource": "CREDIT"
    },
    "tokenizationData": {
      "type": "PAYMENT_GATEWAY",
      "token": "examplePaymentMethodToken"
    }
  }
}

PaymentMethodData

此对象可为所选支付方式提供数据。

属性 类型 是否始终存在 说明
type 字符串 是 在 Google Pay 付款表中选择了 PaymentMethod type。
description 字符串 是

面向用户的消息,用于说明此交易所使用的支付方式。

info 对象 是 此属性的值取决于返回的支付方式 type。对于 CARD,请参阅 CardInfo。
tokenizationData PaymentMethodTokenizationData 否 所选支付方式的付款标记化数据。

示例

此示例响应显示了在 Google Pay 付款表格中选择的 CARD 付款方式如何为 example 网关生成付款方式令牌。

{
  "type": "CARD",
  "description": "Visa •••• 1234",
  "info": {
    "cardNetwork": "VISA",
    "cardDetails": "1234"
  },
  "tokenizationData": {
    "type": "PAYMENT_GATEWAY",
    "token": "examplePaymentMethodToken"
  }
}

CardInfo

此对象可提供所选支付卡的相关信息。

属性 类型 是否始终存在 说明
cardDetails 字符串 是 支付卡的详细信息。此值通常是所选付款账号的后四位数。
assuranceDetails AssuranceDetailsSpecifications 是 如果 CardParameters。
cardNetwork 字符串 是

所选款项的支付卡网络。返回的值与 CardParameters.

此支付卡网络值不应向买家显示。但可在需要买家支付卡的详细信息时使用。例如,客户服务人员可使用此值来确定买家为其交易所使用的卡。若要向用户显示相关说明,请使用 PaymentMethodData 的 description 属性。

billingAddress 地址 否 与所提供支付方式相关联的账单邮寄地址(如果在 CardParameters.
cardFundingSource 字符串 是

所选支付方式的卡片资金来源。

  • UNKNOWN
  • CREDIT
  • DEBIT
  • PREPAID

示例

此示例显示了 Visa 网络中的卡。

{
  "cardNetwork": "VISA",
  "cardDetails": "1234",
  "cardFundingSource": "CREDIT",
  "assuranceDetails": {
    "cardHolderAuthenticated": false,
    "accountVerified": true
  }
}

AssuranceDetailsSpecifications

此对象可提供对返回的付款凭据执行了何种验证的相关信息,以便应用适当的付款方式风险检查。

姓名 类型 说明
accountVerified 布尔值 如果为 true,则表示已对返回的付款凭据执行了 Cardholder 所有权验证。
cardHolderAuthenticated 布尔值

如果为 true,则表示已对返回的付款凭据执行了身份验证和识别 (ID&V)。

如果为 false,则可以执行与卡交易相同的基于风险的身份验证。这种基于风险的身份验证可以包括但不限于使用 3D Secure 协议的加步验证(如果适用)。

即使您不使用 assuranceDetails 字段,也可以接收和处理响应对象。如需接收此对象,请在 Request 对象的 CardParameters。

PaymentMethodTokenizationData

此对象可提供支付方式的标记化数据。

属性 类型 是否始终存在 说明
type 字符串 是 要应用于所选付款方式的令牌化类型。此值与 PaymentMethodTokenizationSpecification。
token 字符串 否

生成的支付方式支付标记。

  • PAYMENT_GATEWAY: JSON 对象字符串,其中包含由您的网关签发的待付款令牌。
  • DIRECT: protocolVersion、signature 和 signedMessage,用于解密。如需了解详情,请参阅 支付方式令牌结构 。

示例

此示例显示了为 example 网关准备的令牌化响应。

{
  "type": "PAYMENT_GATEWAY",
  "token": "examplePaymentMethodToken"
}

PaymentAuthorizationResult

此对象可提供付款授权结果的相关信息。

属性 类型 必要性 说明
transactionState 字符串 必需 交易状态可根据以下某个商家结果解析:
  • SUCCESS
  • ERROR
error PaymentDataError 可选 当需要重试付款时,在用户的付款表格中呈现的错误。

示例

以下示例显示了处理付款后的付款结果返回值:

{
  "transactionState": "ERROR",
  "error": {
    "reason": "PAYMENT_DATA_INVALID",
    "message": "Cannot pay with payment credentials",
    "intent": "PAYMENT_AUTHORIZATION"
  }
}

PaymentDataError

属性 类型 必要性 说明
reason 字符串 必需

预定义的错误原因列表:

  • PAYMENT_DATA_INVALID
  • SHIPPING_ADDRESS_INVALID
  • SHIPPING_ADDRESS_UNSERVICEABLE
  • SHIPPING_OPTION_INVALID
  • OTHER_ERROR
message 字符串 必需 用户在对话框中看到的错误消息。
intent 字符串 必填

错误的 intent。

  • PAYMENT_AUTHORIZATION
  • SHIPPING_ADDRESS
  • SHIPPING_OPTION

示例

此示例显示了要在付款表格中呈现的错误 intent 和消息。

{
  "error": {
    "reason": "SHIPPING_OPTION_INVALID",
    "message": "This shipping option is invalid for the given address",
    "intent": "SHIPPING_OPTION"
  }
}

地址

此对象可提供所请求邮政地址的相关信息。所有属性均为字符串。

地址可以采用 MIN、FULL 和 FULL-ISO3166 格式返回。下表列出了每种格式的属性。

属性 地址格式 说明
name MIN、FULL、FULL-ISO3166 收件人的全名。
postalCode MIN,FULL,FULL-ISO3166 邮政编码。
countryCode MIN,FULL,FULL-ISO3166 ISO 3166-1 alpha-2 国家/地区代码。
phoneNumber MIN,FULL,FULL-ISO3166 如果 phoneNumberRequired 在 PaymentDataRequest.
address1 FULLFULL-ISO3166 地址的第一行。
address2 FULLFULL-ISO3166 地址的第二行。
address3 FULLFULL-ISO3166 地址的第三行。
locality FULLFULL-ISO3166 城市、城镇、社区或郊区。
administrativeArea FULLFULL-ISO3166 国家/地区行政区,例如州或省。
sortingCode FULLFULL-ISO3166 分拣编码
iso3166AdministrativeArea FULL-ISO3166 与 administrativeArea 对应的 ISO 3166-2 行政区代码。

示例

此示例显示了一个包含多行街道地址数据的美国 FULL-ISO3166 格式地址。

{
  "name": "John Doe",
  "address1": "c/o Google LLC",
  "address2": "1600 Amphitheatre Pkwy",
  "address3": "Building 40",
  "locality": "Mountain View",
  "administrativeArea": "CA",
  "countryCode": "US",
  "postalCode": "94043",
  "sortingCode": ""
  "iso3166AdministrativeArea": "US-CA"
}

IntermediatePaymentData

如果在付款表格中更改了送货地址或运费选项,则 Google Pay API onPaymentDataChanged() 输入会返回此对象。

属性 类型 必要性 说明
callbackTrigger 字符串 可选

说明付款数据回调函数被调用的原因。

  • INITIALIZE
  • SHIPPING_ADDRESS
  • SHIPPING_OPTION
shippingAddress IntermediateAddress 可选 在付款表格中选择的地址。
shippingOptionData SelectionOptionData 可选 在付款表格中选择的运费选项。

示例

此示例显示了从 Google Pay API 返回的中间负载。

{
  "callbackTrigger": "SHIPPING_ADDRESS",
  "shippingAddress": {
    "administrativeArea": "NY",
    "countryCode": "US",
    "locality": "New York",
    "postalCode": "10011"
  },
  "shippingOptionData": {
    "id": "shipping-001"
  }
}

IntermediateAddress

中间地址包含经过修订的送货地址(不含街道级地址行或收件人姓名),以便在用户授权付款之前计算适用的税费和运费。

属性 类型 必要性 说明
administrativeArea 字符串 必需 国家/地区行政区,例如州或省。
countryCode 字符串 必需 ISO 3166-1 alpha-2 国家/地区代码。
locality 字符串 必需 城市、城镇、社区或郊区。
postalCode 字符串 必需 基于国家/地区的已遮盖邮政编码。对于加拿大和英国,此编码仅包含前三个字符。对于美国,此编码包含前 5 位数字。
iso3166AdministrativeArea 字符串 可选 与 administrativeArea 对应的 ISO 3166-2 行政区代码。仅当送货地址格式为 FULL-ISO3166 时才会显示。

示例

此示例显示了您在付款表格中选择的地址。

{
  "administrativeArea": "NY",
  "countryCode": "US",
  "locality": "New York",
  "postalCode": "10011"
  "iso3166AdministrativeArea": "US-NY"
}

SelectionOptionData

属性 类型 必要性 说明
id 字符串 必填 与 SelectionOption.id 匹配

示例

此示例显示了在付款表格中选择的运费选项。

{
  "id": "shipping-001"
}