- 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
- 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.
Phương thức này được Google gọi để xác minh thông tin chi tiết về thẻ của người dùng và để xem liệu thẻ đó có thể dùng để thanh toán hay không. Cuộc gọi này không chuyển tiền 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"
}
}
Câu trả lờ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( |
Trường | |
---|---|
requestHeader |
BẮT BUỘC: 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 Payment Integrator card.verifycard được lưu trữ.
Biểu diễn dưới dạng JSON | |
---|---|
{ "responseHeader": { object( |
Trường | |
---|---|
responseHeader |
BẮT BUỘC: Tiêu đề chung cho tất cả câu trả lời. |
cardNetworkResult |
BẮT BUỘC: Kết quả của việc cấp phép trên mạng lưới 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. Đây là trường bắt buộc nếu bạn đã đặt |
cvnResult |
BẮT BUỘC: 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 gửi đến máy chủ.
Biểu diễn dưới dạng JSON | |
---|---|
{
"requestId": string,
"requestTimestamp": string,
"userLocale": string,
"protocolVersion": {
object( |
Trường | |
---|---|
requestId |
BẮT BUỘC: 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 là 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 biểu thị dưới dạng mili giây kể từ thời gian bắt đầu của hệ thống. Trình nhận phải xác minh rằng dấu thời gian này dài 60 giây so với "hiện tại". Dấu thời gian yêu cầu này không đồng đều sau khi thử lại. |
userLocale |
KHÔNG BẮT BUỘC: Mã ngôn ngữ ISO 639-2 Alpha 3 gồm hai hoặc ba chữ cái (không bắt buộc) theo sau là dấu gạch nối và mã quốc gia theo ISO 3166-1 Alpha-2, ví dụ: "pt", "pt-BR", "fil" hoặc "fil-PH". Sử dụng mã này để giúp điều khiển các trường |
protocolVersion |
BẮT BUỘC: Phiên bản của yêu cầu này. |
Phiên bản
Đối tượng Version (phiên bản) là một dạng có cấu trúc của cấu trúc phiên bản a.b.c
cũ. Các phiên bản chính của cùng một số điện thoại được đảm bảo sẽ tương thích. Xin lưu ý rằng các bản sửa đổi và bản sửa đổi nhỏ 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 chính.
Biểu diễn dưới dạng JSON | |
---|---|
{ "major": number, "minor": number, "revision": number } |
Trường | |
---|---|
major |
BẮT BUỘC: Phiên bản lớn. Giá trị 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 và không đảm bảo sẽ tương thích. |
minor |
BẮT BUỘC: Phiên bản nhỏ. Điều này cho thấy 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
Hình ảnh đại 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 } |
Trường | |
---|---|
accountNumber |
BẮT BUỘC: 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, thì bạn sẽ thấy CVN ở đâ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 } |
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 cho số căn hộ), các dòng này sẽ được nối với nhau bằng dấu cách. |
localityName |
KHÔNG BẮT BUỘC: Đây là một cụm từ không rõ ràng, nhưng thường đề cập đến phần thành phố/thị trấn của một địa chỉ. Ở các khu vực trên thế giới nơi các địa phương không được xác định 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 localityName và sử dụng address_line. Ví dụ: Thành phố ở Hoa Kỳ, xã CNTT, thị trấn có bưu điện của Vương quốc Anh. |
administrativeAreaName |
KHÔNG BẮT BUỘC: Phân khu hành chính cấp cao nhất của quốc gia này đối với địa chỉ thanh toán của người dùng. Ví dụ: Tiểu bang ở Hoa Kỳ, khu vực CNTT, quốc gia cấu thành ở Vương quốc Anh, tỉnh Nhật Bản Khi quốc gia == Hoa Kỳ, đây được kỳ vọng là chữ viết tắt gồm 2 ký tự của Tiểu bang 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ả các phản hồi gửi từ máy chủ.
Biểu diễn dưới dạng JSON | |
---|---|
{ "responseTimestamp": string } |
Trường | |
---|---|
responseTimestamp |
BẮT BUỘC: Dấu thời gian của phản hồi này được biểu thị dưới dạng mili giây kể từ thời gian bắt đầu của hệ thống. Trình nhận phải xác minh rằng dấu thời gian này dài 60 giây so với "hiện tại". |
CardNetworkResult
Chứa một mạng và mã kết quả thô từ mạng đó.
Biểu diễn dưới dạng JSON | |
---|---|
{
"network": enum( |
Trường | |
---|---|
network |
BẮT BUỘC: Mạng nơi chứa mã kết quả. |
iso8583Result |
BẮT BUỘC: Mã trả về theo tiêu chuẩn ISO-8583 do mạng lưới trả về. Nếu mạng sử dụng định dạng mã phản hồi riêng thì đơn vị tích hợp phải liên kết các mã phản hồi đó với mã trả về theo ISO-8583. |
rawNetworkResult |
BẮT BUỘC: Giá trị thô được mạng trả về. Mạng đã sử dụng mã trả lại 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 |
Hãy sử dụng giá trị này nếu khoản thanh toán bị từ chối không xuất phát từ mạng lưới, chẳng hạn như nếu đơn vị tích hợp từ chối giao dịch mua trước khi giao dịch đó được gửi qua mạng lưới thẻ. |
AMEX |
Mạng AMEX |
COMPROCARD |
Mạng COMPROCARD |
DANKORT |
Mạng DANKORT |
DINACARD |
Mạng DINACARD |
DINERS_CLUB |
Mạng DINERS_CLUB |
DISCOVER |
Mạng KHÁM PHÁ |
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 mã nhận dạng |
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 ĐỒNG BỘ |
UNIONPAY |
Mạng UNIONPAY |
VISA |
Mạng VISA |
AvsResult
Kết quả của việc 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 ta 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 nào là kết quả ngụ ý.
Biểu diễn dưới dạng JSON | |
---|---|
{ "rawAvsResult": string, "streetAddress": enum( |
Trường | |
---|---|
rawAvsResult |
BẮT BUỘC: Giá trị AVS thô được trả về từ mạng thẻ. |
streetAddress |
BẮT BUỘC: Kết quả xác minh Nếu trường không được đặt trong yêu cầu, giá trị này phải là "NOT_SENT". |
localityName |
BẮT BUỘC: Kết quả xác minh Nếu trường không được đặt trong yêu cầu, giá trị này phải là "NOT_SENT". |
administrativeAreaName |
BẮT BUỘC: Kết quả xác minh Nếu trường không được đặt trong yêu cầu, giá trị này phải là "NOT_SENT". |
postalCodeNumber |
BẮT BUỘC: Kết quả xác minh Nếu trường không được đặt trong yêu cầu, giá trị này phải là "NOT_SENT". |
countryCode |
BẮT BUỘC: Kết quả xác minh Nếu trường không được đặt trong yêu cầu, 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 bạn không thể làm gì được. |
MATCH |
Google đã gửi trường này đến đối tác tích hợp và hệ thống đã kiểm tra trường này thông qua AVS và kết quả khớp với giá trị dự kiến. |
MISMATCH |
Google đã gửi trường này cho đối tác tích hợp và trường đó đã được kiểm tra thông qua AVS nhưng không khớp với giá trị dự kiến. |
SKIPPED |
Google đã gửi trường này cho đơn vị tích hợp nhưng đơn vị tích hợp không kiểm tra trường đó. |
NOT_SPECIFIED |
Google đã gửi trường này đến đơn vị tích hợp và đối tác 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 để đối tác 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 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 CVN nên chúng tôi không thể xác minh thông tin này. |
NOT_VERIFIED |
Google đã gửi CVN nhưng không đượ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, số này đã được xác minh và kết quả trùng khớp. Kết quả này tương ứng với mã kết quả mạng là "M". |
MISMATCH |
Google đã gửi CVN, số này đã đượ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". |