- HTTP 请求
- 请求正文
- 响应正文
- RequestHeader
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- 版本
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- StandardCard
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- AvsData
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- ResponseHeader
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- CardNetworkResult
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- 网络
- AvsResult
<ph type="x-smartling-placeholder">
- </ph>
- JSON 表示法
- VerificationResult
- CvnResult
验证用户的银行卡以查看其是否有效。
Google 会调用此方法来验证用户卡的详细信息,以及确认该卡是否可用于付款。此通话不会转移任何款项,用户的账号也应该不会发生永久性更改。
示例请求如下所示:
{
"requestHeader": {
"protocolVersion": {
"major": 1,
"minor": 0,
"revision": 0
},
"requestId": "ZWNobyB0cmFuc2FjdGlvbg",
"requestTimestamp": "1481855969503"
},
"standardCard": {
"accountNumber": "4123456789101112",
"expiryDate": "01/2020",
"cvn": "123"
},
"avsData": {
"streetAddress": "123 Main St APT #200",
"localityName": "Springfield",
"administrativeAreaName": "CO",
"countryCode": "US"
}
}
示例响应如下所示:
{
"responseHeader": {
"responseTimestamp": "1481855970403",
},
"cardNetworkResult": {
"network": "VISA",
"iso8583Result": "00",
"rawNetworkResult": "00"
},
"avsResult": {
"rawAvsResult": "B",
"streetAddress": "MATCH",
"localityName": "MATCH",
"administrativeAreaName": "MATCH",
"postalCodeNumber": "NOT_SENT",
"countryCode": "SKIPPED"
},
"cvnResult": "MATCH"
}
HTTP 请求
POST https://card-verification-service.google.com/v1/card/verifycard
网址采用 gRPC 转码语法。
请求正文
请求正文中包含结构如下的数据:
JSON 表示法 | |
---|---|
{ "requestHeader": { object( |
字段 | |
---|---|
requestHeader |
必需:所有请求的通用标头。 |
standardCard |
必需:有关用户支付卡的数据。 |
avsData |
可选:要由 AVS 验证的用户地址。 |
响应正文
如果成功,响应正文将包含结构如下的数据:
付款集成商托管的 card.verifycard 方法的响应对象。
JSON 表示法 | |
---|---|
{ "responseHeader": { object( |
字段 | |
---|---|
responseHeader |
必需:所有响应的通用标头。 |
cardNetworkResult |
必需:在支付卡网络上签发授权的结果。 |
avsResult |
可选:验证请求中发送的地址字段的结果。 如果在请求中设置了 |
cvnResult |
必需:对请求中发送的 CVN 的验证结果。如果请求中未设置 CVN,则此值应为 |
RequestHeader
在发送到服务器的所有请求中定义的标头对象。
JSON 表示法 | |
---|---|
{
"requestId": string,
"requestTimestamp": string,
"userLocale": string,
"protocolVersion": {
object( |
字段 | |
---|---|
requestId |
必需:此请求的唯一标识符。 这是一个字符串,长度上限为 100 个字符,且仅包含字符“a-z”、“A-Z”、“0-9”、“:”、“-”和“_”。 |
requestTimestamp |
必需:此请求的时间戳,以从公元纪年开始计算的毫秒数表示。接收方应验证此时间戳是否为“现在”的 ±60 秒。此请求时间戳在重试时不遵循幂等原则。 |
userLocale |
可选:由两个或三个字母组成的 ISO 639-2 Alpha 3 语言代码,后面可视需要加上连字符和 ISO 3166-1 Alpha-2 国家/地区代码,例如“pt”、“pt-BR”、“fil”或“fil-PH”。使用此方法来帮助确定响应中的 |
protocolVersion |
必需:此请求的版本。 |
版本
Version 对象,它是传统版 a.b.c
版本结构的结构化形式。同一版本号的主要版本保证是兼容的。请注意,次要和修订可能会频繁更改,恕不另行通知。集成商必须支持针对同一主要版本的所有请求。
JSON 表示法 | |
---|---|
{ "major": number, "minor": number, "revision": number } |
字段 | |
---|---|
major |
必需:主要版本。针对与不同版本的兼容性请求进行标记,不保证兼容。 |
minor |
必需:次要版本。这表示存在重大问题修复。 |
revision |
必需:次要版本。这表示修复了一些小 bug。 |
StandardCard
卡片的标准表示法
JSON 表示法 | |
---|---|
{ "accountNumber": string, "expiryDate": string, "cvn": string } |
字段 | |
---|---|
accountNumber |
必需:卡的主账号 (PAN)(采用纯文本格式)。 |
expiryDate |
可选:卡的失效日期,采用 MM/YYYY 格式。可选,因为特定地区的某些卡没有失效日期。 |
cvn |
可选:如果 Google 收集了用户 CVN 码,则会在此处提供该 CVN 码,并应予以验证。 |
AvsData
包含要由 AVS 验证的地址字段。
JSON 表示法 | |
---|---|
{ "streetAddress": string, "localityName": string, "administrativeAreaName": string, "postalCodeNumber": string, "countryCode": string } |
字段 | |
---|---|
streetAddress |
可选:用户账单邮寄地址的街道地址。如果用户提供了多行用于输入街道地址(例如,一行用于输入公寓号),这些行会用空格串联起来。 |
localityName |
可选:此术语不太准确,但通常是指地址的城市/城镇部分。对于没有明确定义 locality 或者其无法很好地对应这个结构的区域,应将 localityName 留空并使用 address_line。 示例:美国的城市、意大利的市镇、英国的邮镇。 |
administrativeAreaName |
可选:此国家/地区中用户的账单邮寄地址的顶级行政区划。 示例:美国州、意大利地区、英国构成国、日本都道府县 如果国家/地区 == US,则此值应为 2 个字符的美国州缩写。 |
postalCodeNumber |
可选:用户的账单邮寄地址邮政编码。 |
countryCode |
可选:用户账单邮寄地址的国家/地区代码,采用 ISO-3166-1 Alpha-2 格式。 |
ResponseHeader
在从服务器发送的所有响应中定义的标头对象。
JSON 表示法 | |
---|---|
{ "responseTimestamp": string } |
字段 | |
---|---|
responseTimestamp |
必需:此响应的时间戳,以自纪元以来的毫秒数表示。接收方应验证此时间戳是否为“现在”的 ±60 秒。 |
CardNetworkResult
包含某个广告联盟以及来自该广告联盟的原始结果代码。
JSON 表示法 | |
---|---|
{
"network": enum( |
字段 | |
---|---|
network |
必需:结果代码的来源网络。 |
iso8583Result |
必需:网络返回的 ISO-8583 返回代码。 如果网络使用自己的响应代码格式,集成商必须将这些响应代码映射到 ISO-8583 返回代码。 |
rawNetworkResult |
必需:从网络返回的原始值。使用 ISO-8583 返回代码的影音平台在此字段中和 |
网络
定义了可能返回了 rawResult
的支付卡网络。
枚举 | |
---|---|
UNKNOWN_NETWORK |
无法识别网络 |
NETWORK_NOT_INVOLVED |
如果拒绝并非来自网络(例如,如果集成商在购买交易通过支付卡网络发送之前就拒绝了购买交易),请使用此值。 |
AMEX |
AMEX 网络 |
COMPROCARD |
COMPROCARD 网络 |
DANKORT |
DANKORT 网络 |
DINACARD |
DINACARD 网络 |
DINERS_CLUB |
DINERS_CLUB 广告联盟 |
DISCOVER |
Google 探索网络 |
EFTPOS |
EFTPOS 网络 |
ELO |
ELO 网络 |
ENROUTE |
ENROUTE 网络 |
FELICA |
FELICA 网络 |
GE_CAPITAL |
GE_CAPITAL 网络 |
HIPERCARD |
HIPERCARD 网络 |
ID |
ID 广告网络 |
INTERAC |
INTERAC 网络 |
JCB |
JCB 网络 |
LASER |
激光网络 |
MAESTRO |
MAESTRO 网络 |
MASTERCARD |
MASTERCARD 网络 |
PPT |
PPT 网络 |
QUICPAY |
QUICPAY 网络 |
RUPAY |
RUPAY 网络 |
SBERCARD |
SBERCARD 网络 |
SOLO |
SOLO 网络 |
SYNCHRONY |
SYNCHRONY 网络 |
UNIONPAY |
UNIONPAY 网络 |
VISA |
VISA 网络 |
AvsResult
验证请求中提供的地址字段的结果。
所有字段均为必填字段,因为我们希望每个字段都有显式结果,而不是将缺少某个字段作为隐含结果。
JSON 表示法 | |
---|---|
{ "rawAvsResult": string, "streetAddress": enum( |
字段 | |
---|---|
rawAvsResult |
必需:从支付卡网络返回的原始 AVS 值。 |
streetAddress |
必需:验证请求的 如果请求中未设置该字段,则此值应为“NOT_SENT”。 |
localityName |
必需:验证请求的 如果请求中未设置该字段,则此值应为“NOT_SENT”。 |
administrativeAreaName |
必需:验证请求的 如果请求中未设置该字段,则此值应为“NOT_SENT”。 |
postalCodeNumber |
必需:验证请求的 如果请求中未设置该字段,则此值应为“NOT_SENT”。 |
countryCode |
必需:验证请求的 如果请求中未设置该字段,则此值应为“NOT_SENT”。 |
VerificationResult
枚举 | |
---|---|
UNKNOWN_AVS_MATCH |
切勿设置此默认值! |
NOT_SENT |
Google 未发送此字段,因此无法对其执行任何操作。 |
MATCH |
Google 将该字段发送给集成商,并通过 AVS 进行了检查,结果与预期值相符。 |
MISMATCH |
Google 将该字段发送给集成商,并通过 AVS 进行了检查,但与预期值不符。 |
SKIPPED |
Google 将该字段发送给集成商,但集成商未检查该字段。 |
NOT_SPECIFIED |
Google 将该字段发送给集成商,集成商通过 AVS 检查该字段,但 AVS 结果代码未提供足够的信息供集成商知道该字段是否与预期值匹配。 |
CvnResult
对请求中提供的 CVN 的验证结果。
枚举 | |
---|---|
UNKNOWN_CVN_RESULT |
切勿设置此默认值! |
NOT_SENT |
Google 未提供 CVN,因此无法进行验证。 |
NOT_VERIFIED |
Google 发送了 CVN,但未经验证。对应的代码为广告联盟结果代码“F” |
MATCH |
Google 发送了 CVN,它已经过验证且匹配。对应的代码为广告联盟结果代码“M”。 |
MISMATCH |
Google 发送了 CVN 码,它已经过验证,但不匹配。对应的广告联盟结果代码为“N”。 |