Method: getOrderDetails

获取向 Google 合作伙伴收取最终用户费用基础的订单。

如果端点在处理请求时遇到错误,来自此端点的响应将是 ErrorResponse 类型。

如果此方法没有返回 HTTP 200,则对此查询的响应可能为空。如果包含明确说明的 ErrorResponse 可用于帮助攻击者了解其他集成商的付款集成商账号标识符,则响应正文为空。在这些情况下,如果签名密钥不匹配、未找到付款集成商标识符或加密密钥未知,此方法将返回正文为空的 HTTP 404。如果可以验证请求签名,则会在响应正文中返回有关错误的其他信息。

示例请求如下所示:


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 1,
      "revision": 0
    },
    "requestId": "HsKv5pvtQKTtz7rdcw1YqE",
    "requestTimestamp": "1519996751331"
  },
  "paymentIntegratorAccountId": "IntegratorFakeAccount",
  "orderLookupCriteria": {
    "googleTransactionReferenceNumberCriteria": {
      "googleTransactionReferenceNumber": "714545417102363157911822",
      "authorizationCode": "111111"
    }
  },
  "requestOriginator": {
    "organizationId": "ISSUER_256",
    "organizationDescription": "Community Bank of Some City"
  }
}

示例响应如下所示:


{
  "responseHeader": {
    "responseTimestamp": "1519996752221"
  },
  "result": "SUCCESS",
  "order": {
    "timestamp": "1517992525972",
    "orderId": "UPG.DEFC.X6F4.MEOM.CDWF",
    "currencyCode": "USD",
    "subTotalAmount": "399000000",
    "totalAmount": "459000000",
    "taxes": [],
    "items": [
      {
        "description": "YouTube TV membership",
        "merchant": "fake org",
        "googleProductName": "YouTube TV",
        "quantity": "1",
        "totalPrice": "399000000"
      },
      {
        "description": "Showtime",
        "merchant": "fake org",
        "googleProductName": "YouTube TV",
        "quantity": "1",
        "totalPrice": "6000000"
      }
    ]
  }
}

HTTP 请求

POST https://vgw.googleapis.com/secure-serving/gsp/v1/getOrderDetails/:PIAID

请求正文

请求正文中包含结构如下的数据:

JSON 表示法
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "orderLookupCriteria": {
    object (OrderLookupCriteria)
  },
  "requestOriginator": {
    object (RequestOriginator)
  }
}
字段
requestHeader

object (RequestHeader)

必需:所有请求的通用标头。

paymentIntegratorAccountId

string

必需:付款集成商账号标识符,用于标识调用者以及此互动的相关合同限制。

orderLookupCriteria

object (OrderLookupCriteria)

必需:指明要查询的顺序的条件。

requestOriginator

object (RequestOriginator)

可选:发起此请求的组织或组织子群组的相关信息(如果集成商是代表其他组织致电给我们)。

响应正文

getOrderDetails 方法的响应载荷。

如果成功,响应正文将包含结构如下的数据:

JSON 表示法
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "result": enum (GetOrderDetailsResultCode),
  "order": {
    object (Order)
  }
}
字段
responseHeader

object (ResponseHeader)

必需:所有响应的通用标头。

result

enum (GetOrderDetailsResultCode)

必需:此调用的结果。

order

object (Order)

可选:付款订单的相关信息。(当且仅当 result 为 SUCCESS 时才显示。)

RequestHeader

在发送到服务器的所有请求中定义的标头对象。

JSON 表示法
{
  "requestId": string,
  "requestTimestamp": string,
  "userLocale": string,
  "protocolVersion": {
    object (Version)
  }
}
字段
requestId

string

必需:此请求的唯一标识符。

这是一个字符串,长度上限为 100 个字符,且仅包含字符“a-z”、“A-Z”、“0-9”、“:”、“-”和“_”。

requestTimestamp

string (int64 format)

必需:此请求的时间戳,以从公元纪年开始计算的毫秒数表示。接收方应验证此时间戳是否为“现在”的 ±60 秒。此请求时间戳在重试时不遵循幂等原则。

userLocale
(deprecated)

string

已弃用:由两个或三个字母组成的 ISO 639-2 Alpha 3 语言代码,后面可加上连字符和 ISO 3166-1 Alpha-2 国家/地区代码,例如“pt”、“pt-BR”、“fil”或“fil-PH”。使用此方法来帮助确定响应中的 userMessage 字段。

protocolVersion

object (Version)

必需:此请求的版本。

版本

Version 对象,它是传统版 a.b.c 版本结构的结构化形式。同一版本号的主要版本保证是兼容的。请注意,次要和修订可能会频繁更改,恕不另行通知。集成商必须支持针对同一主要版本的所有请求。

JSON 表示法
{
  "major": integer,
  "minor": integer,
  "revision": integer
}
字段
major

integer

必需:主要版本。针对与不同版本的兼容性请求进行标记,不保证兼容。

minor

integer

必需:次要版本。这表示存在重大问题修复。

revision

integer

必需:次要版本。这表示修复了一些小 bug。

OrderLookupCriteria

订单查询条件。

JSON 表示法
{

  // Union field criteria can be only one of the following:
  "dcb3CorrelationId": string,
  "arnCriteria": {
    object (ArnCriteria)
  },
  "googleTransactionReferenceNumberCriteria": {
    object (GoogleTransactionReferenceNumberCriteria)
  }
  // End of list of possible types for union field criteria.
}
字段

联合字段 criteria

criteria 只能是下列其中一项:

dcb3CorrelationId

string

根据 Google 生成的唯一标识付款的 DCB 相关 ID 进行查找。此值由 Google 生成,并在 Auth 调用期间发送给运营商代扣付款集成商。

arnCriteria

object (ArnCriteria)

根据收单机构参考编号 (ARN) 进行查找。

googleTransactionReferenceNumberCriteria

object (GoogleTransactionReferenceNumberCriteria)

根据 Google 交易参考号进行查询。

ArnCriteria

基于收单机构参考编号 (ARN) 的付款查询条件。

JSON 表示法
{
  "acquirerReferenceNumber": string,
  "authorizationCode": string
}
字段
acquirerReferenceNumber

string

必需:可唯一标识付款的收单机构参考编号 (ARN)。长度必须为 23 位数。

authorizationCode

string

必需:交易的授权代码。

GoogleTransactionReferenceNumberCriteria

基于 Google 生成的交易参考编号的付款查询条件。

JSON 表示法
{
  "googleTransactionReferenceNumber": string,
  "authorizationCode": string
}
字段
googleTransactionReferenceNumber

string

必需:Google 生成的交易参考编号,用于唯一标识付款。

authorizationCode

string

必需:交易的授权代码。

RequestOriginator

发起此请求的组织或组织子群组的相关信息。这样一来,Google 就能发现问题或滥用行为,并在比 paymentIntegratorAccountId 更精细的级别实施控制。如果调用方是从多个外部客户端获取请求的中间服务提供商,此标识符尤其有用。

JSON 表示法
{
  "organizationId": string,
  "organizationDescription": string
}
字段
organizationId

string

必需:发起该请求的公司、组织或组织群组的标识符。在此 paymentIntegratorAccountId 中必须是唯一的。

organizationDescription

string

必需:组织的简单易懂的名称或说明,用于简化 Google 员工与集成商之间就该组织的沟通。

ResponseHeader

在从服务器发送的所有响应中定义的标头对象。

JSON 表示法
{
  "responseTimestamp": string
}
字段
responseTimestamp

string (int64 format)

必需:此响应的时间戳,以自纪元以来的毫秒数表示。接收方应验证此时间戳是否为“现在”的 ±60 秒。

GetOrderDetailsResultCode

getOrderDetails 方法调用的结果。

枚举
GET_ORDER_DETAILS_RESULT_CODE_UNKNOWN 切勿设置此默认值!
SUCCESS 已找到订单并将其退回。
ORDER_CANNOT_BE_RETURNED

请求的订单已存在,但无法返回。原因包括应订单所有者要求移除订单的情况。

PAYMENT_TOO_OLD 找到了请求的付款,但由于该付款的存在时间限制,未提供订单详细信息。
PAYMENT_NOT_FOUND 找不到请求的付款。
NO_ADDITIONAL_DETAILS 已找到请求的付款,但无法查看订单详情。

订单

订单的相关信息。

JSON 表示法
{
  "timestamp": string,
  "orderId": string,
  "currencyCode": string,
  "subTotalAmount": string,
  "totalAmount": string,
  "items": [
    {
      object (Item)
    }
  ],
  "taxes": [
    {
      object (Tax)
    }
  ]
}
字段
timestamp

string (int64 format)

可选:表示下单时间的时间戳,以从公元纪年开始计算的毫秒数表示。只适用于部分订单类型。

orderId

string

可选:唯一标识此订单的字符串。只适用于部分订单类型。

currencyCode

string

可选:此订单中所有金额的 ISO 4217 货币代码(由 3 个字母组成)。只适用于部分订单类型。

subTotalAmount

string (Int64Value format)

可选:此订单的税前总金额,以 order.currencyCode 中所指定货币的微单位表示。等于 SUM(items.totalPrice)。只适用于部分订单类型。

totalAmount

string (Int64Value format)

可选:此订单的总金额(含税),以 order.currencyCode 中所指定货币的微单位表示。等于 subTotalAmount + SUM(taxes.amount)。只适用于部分订单类型。

items[]

object (Item)

必需:此订单所含商品的列表。

taxes[]

object (Tax)

可选:此订单中的税费列表。

订单中商品的相关信息。

JSON 表示法
{
  "description": string,
  "merchant": string,
  "quantity": string,
  "totalPrice": string,
  "googleProductName": string
}
字段
description

string

可选:所购商品的说明。只适用于部分订单类型。

merchant

string

必需:商品的卖方、音乐人或制作者。

quantity

string (Int64Value format)

可选:此商品的订购数量。

如果整数数量不适用于该产品(例如,计量供给的产品可能含有小数数量),则此字段会被省略。

totalPrice

string (Int64Value format)

可选:此商品的总价格,以 order.currencyCode 中指定的货币的微单位表示。如果填充了 quantity,则反映的是整个商品的总价。只适用于部分订单类型。

googleProductName

string

必需:商品的 Google 产品服务的名称。

税费

适用于此订单的税费信息。

JSON 表示法
{
  "description": string,
  "amount": string
}
字段
description

string

必需:税费说明。

amount

string (Int64Value format)

必需:税费金额,以 order.currencyCode 中所指定货币的微单位表示。