- Yêu cầu HTTP
- Nội dung yêu cầu
- Nội dung phản hồi
- RequestHeader
- Phiên bản
- StandardCard (Thẻ chuẩn)
- AvsData
- ResponseHeader
- CardNetworkResult
- Mạng
- AvsResult
- VerificationResult
- CvnResult
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( |
Các trường | |
---|---|
requestHeader |
REQUIRED: Tiêu đề chung cho tất cả các yêu cầu. |
standardCard |
BẮT BUỘC: Dữ liệu về thẻ thanh toán của người dùng. |
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( |
Các trường | |
---|---|
responseHeader |
REQUIRED: Tiêu đề chung cho tất cả các câu trả lời. |
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 |
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 |
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à |
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( |
Các trường | |
---|---|
requestId |
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 |
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 |
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 |
protocolVersion |
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 |
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 |
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 |
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 |
REQUIRED: Số tài khoản chính (PAN) của thẻ ở dạng văn bản thuần tuý. |
expiryDate |
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 |
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 |
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 |
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 |
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 |
KHÔNG BẮT BUỘC: Mã bưu chính thanh toán của người dùng. |
countryCode |
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 |
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( |
Các trường | |
---|---|
network |
REQUIRED: Mạng cho mã kết quả. |
iso8583Result |
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 |
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 |
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( |
Các trường | |
---|---|
rawAvsResult |
REQUIRED: Giá trị AVS thô được trả về từ mạng thẻ. |
streetAddress |
REQUIRED: Kết quả xác minh 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 |
REQUIRED: Kết quả xác minh 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 |
REQUIRED: Kết quả xác minh 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 |
REQUIRED: Kết quả xác minh 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 |
REQUIRED: Kết quả xác minh 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". |