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 更精细的控制措施。当调用方是来自多个外部客户端的中间服务提供商时,此 API 尤其有用。

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 中所指定货币的微单位表示。