Method: card.verifycard

Xác minh thẻ của người dùng để xem thẻ đó có hợp lệ hay không.

Google gọi phương thức này để xác minh thông tin về thẻ của người dùng và kiểm tra xem thẻ đó có thể dùng để thanh toán hay không. Cuộc gọi này không chuyển bất kỳ khoản tiền nào và sẽ không có thay đổi vĩnh viễn nào đối với tài khoản của người dùng.

Yêu cầu mẫu sẽ có dạng như sau:


{
  "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"
  }
}

Phản hồi mẫu sẽ có dạng như sau:


{
  "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"
}

Yêu cầu HTTP

POST https://card-verification-service.google.com/v1/card/verifycard

URL sử dụng cú pháp Chuyển mã gRPC.

Nội dung yêu cầu

Nội dung yêu cầu chứa dữ liệu có cấu trúc sau:

Biểu diễn dưới dạng JSON
{
  "requestHeader": {
    object(RequestHeader)
  },
  "standardCard": {
    object(StandardCard)
  },
  "avsData": {
    object(AvsData)
  }
}
Các trường
requestHeader

object(RequestHeader)

REQUIRED: Tiêu đề chung cho tất cả các yêu cầu.

standardCard

object(StandardCard)

BẮT BUỘC: Dữ liệu về thẻ thanh toán của người dùng.

avsData

object(AvsData)

KHÔNG BẮT BUỘC: Địa chỉ của người dùng sẽ được AVS xác minh.

Nội dung phản hồi

Nếu thành công, phần nội dung phản hồi sẽ chứa dữ liệu có cấu trúc sau:

Đối tượng phản hồi cho phương thức card.verifycard được lưu trữ bởi Nhà tích hợp thanh toán.

Biểu diễn dưới dạng JSON
{
  "responseHeader": {
    object(ResponseHeader)
  },
  "cardNetworkResult": {
    object(CardNetworkResult)
  },
  "avsResult": {
    object(AvsResult)
  },
  "cvnResult": enum(CvnResult)
}
Các trường
responseHeader

object(ResponseHeader)

REQUIRED: Tiêu đề chung cho tất cả các câu trả lời.

cardNetworkResult

object(CardNetworkResult)

BẮT BUỘC: Kết quả của việc cấp lệnh uỷ quyền trên mạng thẻ.

avsResult

object(AvsResult)

KHÔNG BẮT BUỘC: Kết quả của việc xác minh các trường địa chỉ được gửi trong yêu cầu.

Trường này là bắt buộc nếu bạn đã đặt addressVerificationSystemData trong yêu cầu.

cvnResult

enum(CvnResult)

REQUIRED: Kết quả xác minh CVN được gửi trong yêu cầu. Nếu bạn không đặt CVN theo yêu cầu, thì giá trị này phải là NOT_SENT.

RequestHeader

Đối tượng tiêu đề được xác định trên tất cả các yêu cầu được gửi đến máy chủ.

Biểu diễn dưới dạng JSON
{
  "requestId": string,
  "requestTimestamp": string,
  "userLocale": string,
  "protocolVersion": {
    object(Version)
  }
}
Các trường
requestId

string

REQUIRED: Giá trị nhận dạng duy nhất của yêu cầu này.

Đây là chuỗi có độ dài tối đa 100 ký tự và chỉ chứa các ký tự "a-z", "A-Z", "0-9", ":", "-" và "_".

requestTimestamp

string (int64 format)

BẮT BUỘC: Dấu thời gian của yêu cầu này được thể hiện dưới dạng mili giây kể từ thời gian bắt đầu của hệ thống. Bộ nhận phải xác minh rằng dấu thời gian này là ± 60 giây của "hiện tại". Dấu thời gian yêu cầu này không giống nhau khi thử lại.

userLocale
(deprecated)

string

KHÔNG BẮT BUỘC: Mã ngôn ngữ gồm hai hoặc ba chữ cái theo ISO 639-2 Alpha-3 (không bắt buộc) theo sau là dấu gạch nối và mã quốc gia theo tiêu chuẩn ISO 3166-1 Alpha-2, ví dụ: 'pt', 'pt-BR', 'fil' hoặc 'fil-PH'. Dùng công cụ này để giúp thúc đẩy các trường user_message trong phản hồi.

protocolVersion

object(Version)

REQUIRED: Phiên bản của yêu cầu này.

Phiên bản

Đối tượng phiên bản là một dạng cấu trúc của cấu trúc phiên bản a.b.c cổ điển. Các phiên bản chính của cùng một số sẽ đảm bảo tương thích. Lưu ý rằng các nội dung sửa đổi nhỏ và nội dung sửa đổi có thể thay đổi thường xuyên mà không cần thông báo trước. Trình tích hợp phải hỗ trợ tất cả các yêu cầu cho cùng một phiên bản lớn.

Biểu diễn dưới dạng JSON
{
  "major": number,
  "minor": number,
  "revision": number
}
Các trường
major

number

BẮT BUỘC: Phiên bản lớn. Thuộc tính này được đánh dấu cho các yêu cầu về khả năng tương thích với nhiều phiên bản nhưng không đảm bảo sẽ tương thích.

minor

number

BẮT BUỘC: Phiên bản nhỏ. Điều này biểu thị các bản sửa lỗi quan trọng.

revision

number

BẮT BUỘC: Phiên bản nhỏ. Điều này biểu thị các bản sửa lỗi nhỏ.

StandardCard

Biểu diễn tiêu chuẩn của một thẻ

Biểu diễn dưới dạng JSON
{
  "accountNumber": string,
  "expiryDate": string,
  "cvn": string
}
Các trường
accountNumber

string

REQUIRED: Số tài khoản chính (PAN) của thẻ ở dạng văn bản thuần tuý.

expiryDate

string

KHÔNG BẮT BUỘC: Ngày hết hạn của thẻ ở định dạng MM/YYYY. Không bắt buộc vì một số thẻ nhất định ở một số khu vực không có ngày hết hạn.

cvn

string

KHÔNG BẮT BUỘC: Nếu Google đã thu thập CVN từ người dùng, mã đó được cung cấp tại đây và cần được xác minh.

AvsData

Chứa các trường địa chỉ sẽ được AVS xác minh.

Biểu diễn dưới dạng JSON
{
  "streetAddress": string,
  "localityName": string,
  "administrativeAreaName": string,
  "postalCodeNumber": string,
  "countryCode": string
}
Các trường
streetAddress

string

KHÔNG BẮT BUỘC: Địa chỉ đường phố trong địa chỉ thanh toán của người dùng. Khi người dùng cung cấp nhiều dòng để nhập địa chỉ đường phố của họ (ví dụ: một dòng số căn hộ), các dòng sẽ được nối bằng dấu cách.

localityName

string

KHÔNG BẮT BUỘC: Đây là một thuật ngữ không rõ ràng, nhưng thường đề cập đến phần thành phố/thị trấn trong một địa chỉ. Ở các khu vực trên thế giới nơi các địa phương không được định nghĩa rõ hoặc không phù hợp với cấu trúc này (ví dụ: Nhật Bản và Trung Quốc), hãy để trống LOCALName và sử dụng address_line.

Ví dụ: Thành phố ở Hoa Kỳ, khu CNTT, thị trấn có bưu điện ở Vương quốc Anh.

administrativeAreaName

string

KHÔNG BẮT BUỘC: Đơn vị hành chính cấp cao nhất của quốc gia này cho địa chỉ thanh toán của người dùng.

Ví dụ: Tiểu bang của Hoa Kỳ, khu vực CNTT, quốc gia cấu thành của Vương quốc Anh, tỉnh Nhật Bản

Khi quốc gia == Hoa Kỳ, đây sẽ là tên viết tắt gồm 2 ký tự cho Tiểu bang của Hoa Kỳ.

postalCodeNumber

string

KHÔNG BẮT BUỘC: Mã bưu chính thanh toán của người dùng.

countryCode

string

KHÔNG BẮT BUỘC: Mã quốc gia trong địa chỉ thanh toán của người dùng ở định dạng ISO-3166-1 Alpha-2.

ResponseHeader

Đối tượng tiêu đề được xác định trên tất cả phản hồi gửi từ máy chủ.

Biểu diễn dưới dạng JSON
{
  "responseTimestamp": string
}
Các trường
responseTimestamp

string (int64 format)

REQUIRED: Dấu thời gian của phản hồi này được thể hiện dưới dạng mili giây kể từ thời gian bắt đầu của hệ thống. Bộ nhận phải xác minh rằng dấu thời gian này là ± 60 giây của "hiện tại".

CardNetworkResult

Chứa một mạng và một mã kết quả thô từ mạng đó.

Biểu diễn dưới dạng JSON
{
  "network": enum(Network),
  "iso8583Result": string,
  "rawNetworkResult": string
}
Các trường
network

enum(Network)

REQUIRED: Mạng cho mã kết quả.

iso8583Result

string

BẮT BUỘC: Mã trả về ISO-8583 do mạng trả về.

Nếu mạng sử dụng định dạng mã phản hồi riêng, đơn vị tích hợp phải ánh xạ các mã phản hồi đó với mã trả về ISO-8583.

rawNetworkResult

string

REQUIRED: Giá trị thô được mạng trả về. Những mạng sử dụng mã trả lại hàng theo tiêu chuẩn ISO-8583 sẽ có cùng giá trị trong trường này và trong iso8583Result. Trường này được dùng để thông báo cho công cụ phát hiện rủi ro của Google và hữu ích nhất đối với các mạng sử dụng mã phản hồi riêng.

Mạng

Xác định các mạng thẻ có thể đã trả về rawResult.

Enum
UNKNOWN_NETWORK Không nhận dạng được mạng
NETWORK_NOT_INVOLVED Sử dụng giá trị này nếu việc từ chối không xuất phát từ mạng, chẳng hạn như nếu nhà tích hợp từ chối giao dịch mua trước khi giao dịch được gửi đi trên mạng thẻ.
AMEX Mạng AMEX
COMPROCARD Mạng COMPROCARD
DANKORT Mạng DANKORT
DINACARD Mạng DINACARD
DINERS_CLUB Mạng DINERS_CLUB
DISCOVER KHÁM PHÁ mạng
EFTPOS Mạng EFTPOS
ELO Mạng ELO
ENROUTE Mạng ENRoute
FELICA Mạng FELICA
GE_CAPITAL Mạng GE_CAPITAL
HIPERCARD Mạng HIPERCARD
ID Mạng ID
INTERAC Mạng InterAC
JCB Mạng JCB
LASER Mạng LASER
MAESTRO Mạng MAESTRO
MASTERCARD Mạng MASTERCARD
PPT Mạng PPT
QUICPAY Mạng QUICPAY
RUPAY Mạng RUPAY
SBERCARD Mạng SBERCARD
SOLO Mạng SOLO
SYNCHRONY Mạng SYNCHRONY
UNIONPAY Mạng UNIONPAY
VISA Mạng VISA

AvsResult

Kết quả xác minh các trường địa chỉ đã cung cấp trong yêu cầu.

Tất cả các trường đều là bắt buộc vì chúng tôi muốn có kết quả rõ ràng cho từng trường thay vì dựa vào việc không có trường làm kết quả ngụ ý.

Biểu diễn dưới dạng JSON
{
  "rawAvsResult": string,
  "streetAddress": enum(VerificationResult),
  "localityName": enum(VerificationResult),
  "administrativeAreaName": enum(VerificationResult),
  "postalCodeNumber": enum(VerificationResult),
  "countryCode": enum(VerificationResult)
}
Các trường
rawAvsResult

string

REQUIRED: Giá trị AVS thô được trả về từ mạng thẻ.

streetAddress

enum(VerificationResult)

REQUIRED: Kết quả xác minh streetAddress gửi trong trường addressVerificationSystemData của yêu cầu.

Nếu trường này không được đặt trong yêu cầu thì giá trị này phải là "NOT_SENT".

localityName

enum(VerificationResult)

REQUIRED: Kết quả xác minh localityName gửi trong trường addressVerificationSystemData của yêu cầu.

Nếu trường này không được đặt trong yêu cầu thì giá trị này phải là "NOT_SENT".

administrativeAreaName

enum(VerificationResult)

REQUIRED: Kết quả xác minh administrativeAreaName gửi trong trường addressVerificationSystemData của yêu cầu.

Nếu trường này không được đặt trong yêu cầu thì giá trị này phải là "NOT_SENT".

postalCodeNumber

enum(VerificationResult)

REQUIRED: Kết quả xác minh postalCodeNumber gửi trong trường addressVerificationSystemData của yêu cầu.

Nếu trường này không được đặt trong yêu cầu thì giá trị này phải là "NOT_SENT".

countryCode

enum(VerificationResult)

REQUIRED: Kết quả xác minh countryCode gửi trong trường addressVerificationSystemData của yêu cầu.

Nếu trường này không được đặt trong yêu cầu thì giá trị này phải là "NOT_SENT".

VerificationResult

Enum
UNKNOWN_AVS_MATCH Đừng bao giờ đặt giá trị mặc định này!
NOT_SENT Google không gửi trường này nên không thể xử lý được.
MATCH Google đã gửi trường này đến đơn vị tích hợp và trường này đã được kiểm tra qua AVS và kết quả là khớp với giá trị dự kiến.
MISMATCH Google đã gửi trường này đến đơn vị tích hợp và trường này đã được kiểm tra qua AVS nhưng không khớp với giá trị dự kiến.
SKIPPED Google đã gửi trường đó đến đơn vị tích hợp nhưng nhà tích hợp không kiểm tra trường đó.
NOT_SPECIFIED Google đã gửi trường đó đến đơn vị tích hợp và nhà tích hợp đã kiểm tra trường thông qua AVS, nhưng mã kết quả AVS không cung cấp đủ thông tin để đơn vị tích hợp biết liệu trường đó có khớp với giá trị dự kiến hay không.

CvnResult

Kết quả xác minh số CVN được cung cấp trong yêu cầu.

Enum
UNKNOWN_CVN_RESULT Đừng bao giờ đặt giá trị mặc định này!
NOT_SENT Google không cung cấp mã CVN nên không xác minh được.
NOT_VERIFIED Google đã gửi CVN nhưng số này chưa được xác minh. Mã này tương ứng với mã kết quả mạng là "F"
MATCH Google đã gửi CVN, đã được xác minh và khớp. Mã này tương ứng với mã kết quả mạng là "M".
MISMATCH Google đã gửi CVN, đã được xác minh, nhưng không khớp. Mã này tương ứng với mã kết quả mạng là "N".