Method: associateAccount

将客户的账号与付款处理方相关联,与要添加的 Google 付款方式相关联。

账号关联在集成商验证用户身份后发生。关联是通过服务器到服务器的调用发生的,其中包含关联的身份验证流程的 requestId (authenticationRequestId)、associationIdgooglePaymentToken (GPT)。付款处理方应将 associationIdgooglePaymentToken 与客户账号相关联,以进行身份验证。GPT 用于发起付款。在重新验证调用期间会使用 associationId 来标识要进行身份验证的账号。

如果 Google 发送集成商在其他关联期间已经看到过的 associationIdgooglePaymentToken,则会抛出错误。

如果端点在处理请求时遇到错误,此端点的响应正文应为 ErrorResponse 类型。

示例请求如下所示:


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 0,
      "revision": 0
    },
    "requestId": "cmVxdWVzdDE",
    "requestTimestamp": "1481899949606"
 },
 "googlePaymentToken": "ZXhhbXBsZSB1bmlxdWUgcGF5bWVudCB0b2tlbiB2YWx1ZQ__",
 "authenticationRequestId": "bnAxdWTydDX==",
 "associationId": "LmddbXBsZSByZWZlcmVuY2UgdG9rZW4gdmFsdWU_",
 "provideUserInformation": true
}

示例响应如下所示:


  {
  "responseHeader": {
    "responseTimestamp": "1481899949611"
  },
  "paymentIntegratorAssociateAccountId": "xx77df88934hfd",
  "accountId": "1234-5678-91",
  "accountNickname": "***-91",
  "tokenExpirationTime": "0",
  "userInformation": {
    "name": "Example Customer",
    "addressLine": ["123 Main St"],
    "localityName": "Springfield",
    "administrativeAreaName": "CO",
    "postalCodeNumber": "80309",
    "countryCode": "US"
  },
  "result": "SUCCESS"
}

HTTP 请求

POST https://www.integratorhost.example.com/v1/associateAccount

请求正文

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

JSON 表示法
{
  "requestHeader": {
    object (RequestHeader)
  },
  "provideUserInformation": boolean,
  "googlePaymentToken": string,
  "associationId": string,

  // Union field account_verification can be only one of the following:
  "authenticationRequestId": string,
  "otpVerification": {
    object (OtpVerification)
  }
  // End of list of possible types for union field account_verification.
}
字段
requestHeader

object (RequestHeader)

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

provideUserInformation

boolean

REQUIRED:如果我们希望集成商提供与此账号关联的地址,则为 true。

googlePaymentToken

string

必需:Google 将用于向付款处理方发起购买交易的令牌。

这是一个字符串,长度上限为 100 个字符。

associationId

string

必需:此关联的标识符。此标识符由 Google 创建,并在重新进行身份验证流程中发送,用于标识应该对哪个账号进行身份验证。

这是一个字符串,长度上限为 100 个字符。

联合字段 account_verification

account_verification 只能是下列其中一项:

authenticationRequestId

string

可选:此调用之前身份验证请求的 requestId。此标识符由 Google 在身份验证流程中生成。仅当用户通过 Android 应用身份验证、网络身份验证或使用 authenticationResultNotification 的异步身份验证方法时,此字段才会显示。

otpVerification

object (OtpVerification)

可选:验证通过 sendOtp 生成的动态密码所需的数据。仅当用户经过 sendOtp 路径时,此字段才会显示。

响应正文

关联账号方法的响应对象。

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

JSON 表示法
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "paymentIntegratorAssociateAccountId": string,
  "tokenExpirationTime": string,
  "accountId": string,
  "userMessage": string,
  "userInformation": {
    object (UserInformation)
  },
  "result": enum (AssociateAccountResultCode),

  // Union field account_names can be only one of the following:
  "accountNickname": string,
  "fullAccountNickname": string
  // End of list of possible types for union field account_names.
}
字段
responseHeader

object (ResponseHeader)

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

paymentIntegratorAssociateAccountId

string

必需:此标识符专供集成商使用,由集成商生成。它仅用于调试目的,以便识别此调用。这是集成商知道此调用的标识符。

tokenExpirationTime

string (int64 format)

可选:从公元纪年开始计算的令牌过期时间(以毫秒为单位)。使用 0 表示令牌不会过期。

accountId

string

必需:用户在集成商处拥有的账号 ID。这样做有助于 Google 了解账号重用情况和账号关系,并协助 Google 客户服务专员协助客户诊断问题。此标识符应便于用户识别(例如,用户知道此 ID,因为此 ID 显示在他们的对账单上,或在用户登录账号后显示在网站上)。

此值在账号生命周期内不得更改。

userMessage
(deprecated)

string

DEPRECATED:结果不是 SUCCESS 时要向用户显示的结果的说明。

userInformation

object (UserInformation)

必需:集成商了解并将与 Google 分享的有关此客户的用户信息。用于提供风险信息和解决预填充问题。

result

enum (AssociateAccountResultCode)

必需:此关联的结果。

联合字段 account_names

account_names 只能是下列其中一项:

accountNickname

string

可选:出于显示目的而用户知道此账号的字符串。这是账号昵称的后缀。例如电话号码的最后四位数。Google 会在界面中指明这只是昵称的后缀。

此值将显示在购买流程等界面中,以便用户区分不同的付款方式。

fullAccountNickname

string

可选:出于显示目的而用户知道此账号的字符串。与 accountNickname 不同,这是完整的账号昵称。例如,56565-56501 表示电话号码,sally@sample-email.com 表示电子邮件身份。

此值将显示在购买流程等界面中,以便用户区分不同的付款方式。

UserInformation

包含用户相关信息的结构。

JSON 表示法
{
  "name": string,
  "addressLine": [
    string
  ],
  "localityName": string,
  "administrativeAreaName": string,
  "postalCodeNumber": string,
  "countryCode": string,
  "phone": string,
  "emailAddress": string
}
字段
name

string

可选:客户的全名。

addressLine[]

string

可选:包含非结构化地址文本。

localityName

string

可选:此术语不太准确,但通常是指地址的城市/城镇部分。对于没有明确定义 locality 或者其无法很好地对应这个结构的区域,应将 localityName 留空并使用 addressLine。

示例:美国的城市、意大利的市镇、英国的邮镇。

administrativeAreaName

string

可选:此国家/地区的顶级行政区划示例:美国的州、意大利的地区、中国的省、日本的都道府县。”

postalCodeNumber

string

可选:虽然名称如此,但 postalCodeNumber 值通常是字母数字。例如:“94043”、“SW1W”、“SW1W 9TQ”。

countryCode

string

可选:客户地址的国家/地区代码,应为 ISO-3166-1 Alpha-2。

phone

string

可选:客户的电话号码。

emailAddress

string

可选:客户的电子邮件地址。

AssociateAccountResultCode

关联账号的结果代码。

枚举
UNKNOWN_RESULT 切勿设置此默认值!
SUCCESS 关联成功。
USER_AUTHENTICATION_FAILED 即使系统返回了账号身份验证包,用户身份验证也失败了。
NOT_ELIGIBLE 用户的账号无法使用此服务。
OTP_NOT_MATCHED 动态密码与集成商发送的内容不符。
OTP_ALREADY_USED 动态密码已被使用。
OTP_LIMIT_REACHED 用户请求或尝试验证的动态密码过多。
OTP_EXPIRED 动态密码已过期。