- HTTP 要求
- 要求主體
- 回應主體
- RequestHeader
- 版本
- StandardCard
- AvsData
- ResponseHeader
- CardNetworkResult
- 網路
- AvsResult
- 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 |
OPTIONAL:要由 AVS 驗證的使用者地址。 |
回應主體
如果成功,回應主體即會包含具有以下結構的資料:
付款整合商代管 card.verifycard 方法的回應物件。
JSON 表示法 | |
---|---|
{ "responseHeader": { object( |
欄位 | |
---|---|
responseHeader |
必要項目:所有回應的通用標頭。 |
cardNetworkResult |
必要項目:透過發卡機構核發授權的結果。 |
avsResult |
選用:驗證要求中傳送的地址欄位後的結果。 如果要求中已設定 |
cvnResult |
必要項目:驗證要求中傳送的 CVN 結果。如果要求中並未設定 CVN,則這個值應為 |
RequestHeader
針對傳送至伺服器的所有要求所定義的標頭物件。
JSON 表示法 | |
---|---|
{
"requestId": string,
"requestTimestamp": string,
"userLocale": string,
"protocolVersion": {
object( |
欄位 | |
---|---|
requestId |
必要項目:這項要求的專屬 ID。 這是一個長度上限為 100 個字元的字串,並且只包含「a-z」、「A-Z」、「0-9」、「:」、「-」和「_」等字元。 |
requestTimestamp |
必要項目:這項要求的時間戳記,以 Epoch 紀元時間起算的毫秒為單位。接收端應驗證這個時間戳記是否為「現在」的 ±60 秒。重試時,此要求時間戳記並不是冪等的。 |
userLocale |
選用:由兩或三個字母組成的 ISO 639-2 Alpha 3 語言代碼,您可以視需要在後面加上連字號和 ISO 3166-1 Alpha-2 國家/地區代碼,例如「pt」、「pt-BR」、「fil」或「fil-PH」。請使用這個屬性來驅動回應中的 |
protocolVersion |
必要項目:此要求的版本。 |
版本
版本物件是傳統版 a.b.c
版本結構的結構化格式。相同數字的主要版本保證能夠相容。請注意,輕微和修訂可能經常變更,恕不另行通知。整合商必須支援相同主要版本的所有要求。
JSON 表示法 | |
---|---|
{ "major": number, "minor": number, "revision": number } |
欄位 | |
---|---|
major |
必要項目:主要版本。標示為不同版本的廣告素材不保證能夠相容。 |
minor |
必要項目:子版本。這代表重大錯誤修正。 |
revision |
必要項目:子版本。這代表小錯誤修正。 |
StandardCard
卡片的標準表示法
JSON 表示法 | |
---|---|
{ "accountNumber": string, "expiryDate": string, "cvn": string } |
欄位 | |
---|---|
accountNumber |
必要項目:卡片的主要帳號 (PAN) (純文字)。 |
expiryDate |
選用:卡片的到期日,格式為 MM/YYYY。選用,因為某些區域中的特定卡片沒有到期日。 |
cvn |
選用:如果 Google 從這裡提供的使用者收集 CVN,應進行驗證。 |
AvsData
包含需要 AVS 驗證的地址欄位。
JSON 表示法 | |
---|---|
{ "streetAddress": string, "localityName": string, "administrativeAreaName": string, "postalCodeNumber": string, "countryCode": string } |
欄位 | |
---|---|
streetAddress |
選用:使用者帳單地址的街道地址。如果使用者提供多行輸入街道地址 (例如公寓號碼的一行),則線條會與空格串連。 |
localityName |
選填:這是模糊字詞,但通常是指地址的縣市/鄉鎮部分。如果是國家/地區未明確定義縣市,或是縣市不適用此結構 (例如日本和中國),請將 localityName 留空,並使用 address_line。 範例:美國城市、義大利市、英國郵鎮。 |
administrativeAreaName |
選用:根據使用者帳單地址在這個國家/地區的頂層行政區。 例如:美國各州、義大利區域、英國組成國家/地區、日本都/道/府/縣 如果國家/地區 == US,則會是美國各州的 2 個字元縮寫。 |
postalCodeNumber |
OPTIONAL:使用者的帳單郵遞區號。 |
countryCode |
選用:使用者帳單地址的國家/地區代碼,採用 ISO-3166-1 Alpha-2 格式。 |
ResponseHeader
從伺服器傳送的所有回應中定義的標頭物件。
JSON 表示法 | |
---|---|
{ "responseTimestamp": string } |
欄位 | |
---|---|
responseTimestamp |
必要項目:此回應的時間戳記,以 Epoch 紀元時間起算的毫秒為單位。接收端應驗證這個時間戳記是否為「現在」的 ±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 Network |
DINACARD |
DINACARD 網路 |
DINERS_CLUB |
DINERS_CLUB 網路 |
DISCOVER |
探索網路 |
EFTPOS |
EFTPOS 網絡 |
ELO |
ELO 網路 |
ENROUTE |
ENROUTE 網路 |
FELICA |
FELICA 網路 |
GE_CAPITAL |
GE_CAPITAL 網路 |
HIPERCARD |
HIPERCARD 網路 |
ID |
識別網路 |
INTERAC |
INTERAC 網路 |
JCB |
JCB Network |
LASER |
LASER 網路 |
MAESTRO |
MAESTRO Network |
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 傳送,且已通過驗證且相符。此值對應於網路結果代碼「M」。 |
MISMATCH |
信用卡驗證碼是由 Google 傳送,但已通過驗證,但不相符。此值對應網路結果代碼「N」。 |