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 应用身份验证、Web 身份验证或使用 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

已弃用:当结果不是 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

可选:这是一个模糊的术语,但通常是指地址中的城市/城镇部分。对于没有明确定义市行政区或者其无法很好地对应到此结构的地区(例如日本和中国),请将 localityName 留空并使用 addressLine。

示例:美国城市、意大利市、英国邮政区域。

administrativeAreaName

string

可选:此国家/地区的顶级行政区。“示例:美国的州、IT 区、中国的省、日本的县。”

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 动态密码已过期。