将客户的账号与付款处理方关联到所添加的 Google 付款方式。
帐号关联发生在集成商对用户进行身份验证后。通过服务器到服务器调用来实现关联,该调用包含关联身份验证流程的 requestId
(authenticationRequestId
)、associationId
和 googlePaymentToken
(GPT)。付款处理方应将 associationId
和 googlePaymentToken
与客户的帐号相关联,以进行身份验证。GPT 用于发起付款。在重新进行身份验证调用期间会使用 associationId
来标识要进行身份验证的帐号。
如果集成商在其他关联期间已经看到了 Google 发送的 associationId
或 googlePaymentToken
,则会抛出错误。
如果端点在处理请求时遇到错误,来自此端点的响应正文的类型应为
。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 |
REQUIRED:如果我们希望集成商提供与该帐号关联的地址,则为 true。 |
googlePaymentToken |
必需:Google 用于向付款处理方发起购买交易的令牌。 这是一个最大长度为 100 个字符的字符串。 |
associationId |
必需:此关联的标识符。此标识符由 Google 创建,会在重新进行身份验证流程中发送,用于确定应对哪个帐号进行身份验证。 这是一个最大长度为 100 个字符的字符串。 |
联合字段
|
|
authenticationRequestId |
可选:此调用之前的身份验证请求的 |
otpVerification |
可选:验证通过 |
响应正文
关联帐号方法的响应对象。
如果成功,响应正文将包含结构如下的数据:
JSON 表示法 |
---|
{ "responseHeader": { object ( |
字段 | |
---|---|
responseHeader |
必需:所有响应的通用标头。 |
paymentIntegratorAssociateAccountId |
必需:此标识符特定于集成商,由集成商生成。它仅用于调试目的,以识别此调用。这是集成商通过哪种标识符获知此次调用。 |
tokenExpirationTime |
可选:令牌过期后的毫秒数(自新纪元起)。使用 |
accountId |
必需:用户在集成商处拥有的帐号 ID。这些信息用于评估 Google 风险,以便了解帐号重复使用和帐号关系,以及 Google 客户运营代理帮助客户诊断问题。此标识符应是用户可识别的(例如,用户知道此 ID,因为此 ID 显示在他们的对账单上或用户登录帐号后显示在网站上)。 此值必须在帐号有效期内是不变的。 |
userMessage |
已弃用:当结果不是 |
userInformation |
必需:集成商知道并且将与 Google 分享的有关此客户的用户信息。用于风险信息和解决预填充问题。 |
result |
必需:此关联的结果。 |
联合字段
|
|
accountNickname |
可选:用户出于显示目的而知道此帐号的字符串。这是帐号别名的后缀。例如电话号码的后四位数字。Google 将在界面中指明这只是昵称的后缀。 。此值将显示在购买流程等界面中,以便用户区分付款方式。 |
fullAccountNickname |
可选:用户出于显示目的而知道此帐号的字符串。与 此值将显示在购买流程等界面中,以便用户区分付款方式。 |
UserInformation
用于保存用户相关信息的结构。
JSON 表示法 |
---|
{ "name": string, "addressLine": [ string ], "localityName": string, "administrativeAreaName": string, "postalCodeNumber": string, "countryCode": string, "phone": string, "emailAddress": string } |
字段 | |
---|---|
name |
可选:客户的全名。 |
addressLine[] |
可选:此字段用于保存非结构化地址文本。 |
localityName |
可选:这是一个模糊的术语,但通常是指地址中的城市/城镇部分。对于没有明确定义市行政区或者其无法很好地对应到此结构的地区(例如日本和中国),请将 localityName 留空并使用 addressLine。 示例:美国城市、意大利市、英国邮政区域。 |
administrativeAreaName |
可选:此国家/地区的顶级行政区。“示例:美国的州、IT 区、中国的省、日本的县。” |
postalCodeNumber |
可选:尽管名称为“postalCodeNumber”,但值通常都是字母数字。例如:“94043”“SW1W”“SW1W 9TQ”。 |
countryCode |
可选:客户地址的国家/地区代码,应为 ISO-3166-1 Alpha-2。 |
phone |
可选:客户的电话号码。 |
emailAddress |
可选:客户的电子邮件地址。 |
AssociateAccountResultCode
关联账号的结果代码。
枚举 | |
---|---|
UNKNOWN_RESULT |
切勿设置此默认值! |
SUCCESS |
关联成功。 |
USER_AUTHENTICATION_FAILED |
尽管系统返回了账号身份验证文件包,但用户身份验证失败了。 |
NOT_ELIGIBLE |
用户的账号无法使用此服务。 |
OTP_NOT_MATCHED |
动态密码与集成商发送的动态密码不一致。 |
OTP_ALREADY_USED |
动态密码已使用。 |
OTP_LIMIT_REACHED |
用户请求或尝试验证的动态密码过多。 |
OTP_EXPIRED |
动态密码已过期。 |