Method: card.verifycard

Sprawdza, czy karta użytkownika jest prawidłowa.

Ta metoda jest wywoływana przez Google w celu weryfikacji danych karty użytkownika i sprawdzenia, czy można jej używać do płatności. To połączenie nie powoduje przeniesienia żadnych pieniędzy. Na koncie użytkownika nie powinny być też wprowadzane żadne trwałe zmiany.

Przykładowe żądanie wygląda tak:


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

Przykładowa odpowiedź wygląda tak:


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

Żądanie HTTP

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

Adres URL używa składni transkodowania gRPC.

Treść żądania

Treść żądania zawiera dane o następującej strukturze:

Zapis JSON
{
  "requestHeader": {
    object(RequestHeader)
  },
  "standardCard": {
    object(StandardCard)
  },
  "avsData": {
    object(AvsData)
  }
}
Pola
requestHeader

object(RequestHeader)

WYMAGANE: wspólny nagłówek dla wszystkich żądań.

standardCard

object(StandardCard)

WYMAGANE: dane o karcie płatniczej użytkownika.

avsData

object(AvsData)

OPCJONALNIE: adres użytkownika do zweryfikowania przez AVS.

Treść odpowiedzi

W przypadku powodzenia treść żądania zawiera dane o następującej strukturze:

Obiekt odpowiedzi dla metody card.verifycard hostowanej przez integratora płatności.

Zapis JSON
{
  "responseHeader": {
    object(ResponseHeader)
  },
  "cardNetworkResult": {
    object(CardNetworkResult)
  },
  "avsResult": {
    object(AvsResult)
  },
  "cvnResult": enum(CvnResult)
}
Pola
responseHeader

object(ResponseHeader)

WYMAGANE: wspólny nagłówek wszystkich odpowiedzi.

cardNetworkResult

object(CardNetworkResult)

WYMAGANE: wynik wydania autoryzacji w sieci kart.

avsResult

object(AvsResult)

OPCJONALNIE: wynik weryfikacji pól adresu wysłanych w prośbie.

To pole jest wymagane, jeśli w żądaniu ustawiono atrybut addressVerificationSystemData.

cvnResult

enum(CvnResult)

WYMAGANE: wynik weryfikacji kodu CVN wysłanego w prośbie. Jeśli w żądaniu nie określono numeru CVN, należy podać wartość NOT_SENT.

RequestHeader

Obiekt nagłówka zdefiniowany we wszystkich żądaniach wysyłanych do serwera.

Zapis JSON
{
  "requestId": string,
  "requestTimestamp": string,
  "userLocale": string,
  "protocolVersion": {
    object(Version)
  }
}
Pola
requestId

string

WYMAGANE: unikalny identyfikator tego żądania.

Jest to ciąg o maksymalnej długości 100 znaków, który zawiera tylko znaki „a–z”, „A–Z”, „0–9”, „:”, „-” i „_”.

requestTimestamp

string (int64 format)

WYMAGANE: sygnatura czasowa tego żądania wyrażona w milisekundach od początku epoki. Odbiorca powinien sprawdzić, czy ta sygnatura czasowa to ±60 sekund „teraz”. Ta sygnatura czasowa żądania nie jest idempotentna przy ponownych próbach.

userLocale
(deprecated)

string

OPCJONALNY: 2 lub 3-literowy kod języka ISO 639-2 alfa 3, po którym może występować łącznik, a następnie kod kraju ISO 3166-1 alfa-2, np. „pt”, „pt-BR”, „fil” lub „fil-PH”. Ułatwia to wykorzystanie pól user_message w odpowiedzi.

protocolVersion

object(Version)

WYMAGANE: wersja tego żądania.

Wersja

Obiekt wersji, który jest uporządkowaną formą klasycznej struktury wersji a.b.c. Główne wersje tego samego numeru muszą być zgodne. Pamiętaj, że drobne zmiany i zmiany mogą się zmieniać często i bez uprzedzenia. Integrator musi obsługiwać wszystkie żądania dotyczące tej samej wersji głównej.

Zapis JSON
{
  "major": number,
  "minor": number,
  "revision": number
}
Pola
major

number

WYMAGANE: wersja główna. Jeśli żądania zgodności różnią się w zależności od wersji, nie ma gwarancji, że będą one zgodne.

minor

number

WYMAGANE: wersja podrzędna. Oznacza to istotne poprawki błędów.

revision

number

WYMAGANE: wersja podrzędna. Oznacza to poprawki drobnych błędów.

StandardCard

Standardowa reprezentacja karty

Zapis JSON
{
  "accountNumber": string,
  "expiryDate": string,
  "cvn": string
}
Pola
accountNumber

string

WYMAGANE: główny numer rachunku bankowego karty (PAN) zapisany zwykłym tekstem.

expiryDate

string

OPCJONALNIE: data ważności karty w formacie MM/RRRR. Opcjonalny, ponieważ niektóre karty w określonych regionach nie mają daty ważności.

cvn

string

OPCJONALNIE: jeśli Google pobrał kod CVN od użytkownika, ten numer jest podawany w tym miejscu i należy go zweryfikować.

AvsData

Zawiera pola adresu do zweryfikowania przez AVS.

Zapis JSON
{
  "streetAddress": string,
  "localityName": string,
  "administrativeAreaName": string,
  "postalCodeNumber": string,
  "countryCode": string
}
Pola
streetAddress

string

OPCJONALNIE: adres pocztowy w adresie rozliczeniowym użytkownika. Jeśli użytkownik wprowadzi wiele wierszy adresu (np. numer mieszkania), są one połączone spacjami.

localityName

string

OPCJONALNE: jest to termin przybliżony, ale ogólnie odnoszą się do miejscowości lub miejscowości w adresie. W regionach świata, w których miejscowości nie są dobrze zdefiniowane lub nie pasują do tej struktury (np. w Japonii i Chinach), pozostaw pole localityName puste, a wpisz wiersz_adresu.

Przykłady: USA, gmina IT, poczta polska.

administrativeAreaName

string

OPCJONALNIE: jednostka organizacyjna najwyższego poziomu w przypadku adresu rozliczeniowego użytkownika.

Przykłady: stan USA, region IT, kraj brytyjski, prefektura Japonii

Gdy kraj = USA, powinien być to 2-znakowy skrót nazwy stanu USA.

postalCodeNumber

string

OPCJONALNIE: kod pocztowy na potrzeby rozliczeń użytkownika.

countryCode

string

OPCJONALNIE: kod kraju adresu rozliczeniowego użytkownika w formacie ISO-3166-1 alfa-2.

ResponseHeader

Obiekt nagłówka, który jest zdefiniowany we wszystkich odpowiedziach wysyłanych z serwera.

Zapis JSON
{
  "responseTimestamp": string
}
Pola
responseTimestamp

string (int64 format)

WYMAGANE: sygnatura czasowa tej odpowiedzi wyrażona w milisekundach od początku epoki. Odbiorca powinien sprawdzić, czy ta sygnatura czasowa to ±60 sekund „teraz”.

CardNetworkResult

Zawiera sieć i nieprzetworzony kod z tej sieci.

Zapis JSON
{
  "network": enum(Network),
  "iso8583Result": string,
  "rawNetworkResult": string
}
Pola
network

enum(Network)

WYMAGANE: sieć, z której pochodzi kod wyniku.

iso8583Result

string

WYMAGANE: kod ISO-8583 zwrócony przez sieć.

Jeśli sieć używa własnego formatu kodu odpowiedzi, integrator musi zmapować te kody na kody zwrotne ISO-8583.

rawNetworkResult

string

WYMAGANE: nieprzetworzona wartość zwrócona z sieci. Sieci, które używają kodów zwrotów ISO-8583, będą już miały tę samą wartość w tym polu i w polu iso8583Result. To pole służy do informowania programu wykrywającego zagrożenia Google i jest najbardziej przydatne w sieciach, które używają własnych kodów odpowiedzi.

Sieć

Określa możliwe sieci kart, które mogły zwrócić wartość rawResult.

Wartości w polu enum
UNKNOWN_NETWORK Nie rozpoznano sieci
NETWORK_NOT_INVOLVED Użyj tej wartości, jeśli odrzucenie nie pochodzi z sieci, np. jeśli integrator odrzucił zakup, zanim jeszcze został wysłany do sieci karty.
AMEX Sieć AMEX
COMPROCARD Sieć COMPROCARD
DANKORT Sieć DANKORT
DINACARD Sieć DINACARD
DINERS_CLUB Sieć DINERS_CLUB
DISCOVER Sieć DISCOVER
EFTPOS Sieć EFTPOS
ELO Sieć ELO
ENROUTE Sieć ENROUTE
FELICA Sieć FELICA
GE_CAPITAL Sieć GE_CAPITAL
HIPERCARD Sieć HIPERCARD
ID Identyfikator sieci
INTERAC Sieć INTERAC
JCB Sieć JCB
LASER Sieć LASER
MAESTRO Sieć MAESTRO
MASTERCARD Sieć MASTERCARD
PPT Sieć PPT
QUICPAY Sieć QUICPAY
RUPAY Sieć RUPAY
SBERCARD Sieć SBERCARD
SOLO Sieć SOLO
SYNCHRONY Sieć SYNCHRONY
UNIONPAY Sieć UNIONPAY
VISA Sieć VISA

AvsResult

Wynik weryfikacji pól adresowych podanych w prośbie.

Wszystkie pola są wymagane, ponieważ chcemy uzyskać dla każdego pola jawny wynik, a nie polegać na braku pola jako wynik domniemany.

Zapis JSON
{
  "rawAvsResult": string,
  "streetAddress": enum(VerificationResult),
  "localityName": enum(VerificationResult),
  "administrativeAreaName": enum(VerificationResult),
  "postalCodeNumber": enum(VerificationResult),
  "countryCode": enum(VerificationResult)
}
Pola
rawAvsResult

string

WYMAGANE: nieprzetworzona wartość AVS zwrócona z sieci karty.

streetAddress

enum(VerificationResult)

WYMAGANE: wynik weryfikacji żądania streetAddress wysłanego w polu addressVerificationSystemData żądania.

Jeśli w żądaniu pole nie zostało ustawione, ta wartość powinna mieć wartość „NOT_SENT”.

localityName

enum(VerificationResult)

WYMAGANE: wynik weryfikacji żądania localityName wysłanego w polu addressVerificationSystemData żądania.

Jeśli w żądaniu pole nie zostało ustawione, ta wartość powinna mieć wartość „NOT_SENT”.

administrativeAreaName

enum(VerificationResult)

WYMAGANE: wynik weryfikacji żądania administrativeAreaName wysłanego w polu addressVerificationSystemData żądania.

Jeśli w żądaniu pole nie zostało ustawione, ta wartość powinna mieć wartość „NOT_SENT”.

postalCodeNumber

enum(VerificationResult)

WYMAGANE: wynik weryfikacji żądania postalCodeNumber wysłanego w polu addressVerificationSystemData żądania.

Jeśli w żądaniu pole nie zostało ustawione, ta wartość powinna mieć wartość „NOT_SENT”.

countryCode

enum(VerificationResult)

WYMAGANE: wynik weryfikacji żądania countryCode wysłanego w polu addressVerificationSystemData żądania.

Jeśli w żądaniu pole nie zostało ustawione, ta wartość powinna mieć wartość „NOT_SENT”.

VerificationResult

Wartości w polu enum
UNKNOWN_AVS_MATCH Nigdy nie ustawiaj tej wartości domyślnej.
NOT_SENT To pole nie zostało wysłane przez Google, więc nic nie można z nim zrobić.
MATCH Pole zostało wysłane przez Google do integratora i zostało sprawdzone przez AVS. Jego zawartość była zgodna z oczekiwaną wartością.
MISMATCH Pole zostało wysłane przez Google do integratora i zostało sprawdzone przez AVS, ale nie było zgodne z oczekiwaną wartością.
SKIPPED Firma Google wysłała pole do integratora, ale go nie sprawdził.
NOT_SPECIFIED Google wysłało pole do integratora i sprawdził je przez AVS, ale kod wyniku AVS nie dostarcza wystarczającej ilości informacji, by integrator mógł ustalić, czy pole odpowiada oczekiwanej wartości.

CvnResult

Wynik weryfikacji numeru CVN podanego w prośbie.

Wartości w polu enum
UNKNOWN_CVN_RESULT Nigdy nie ustawiaj tej wartości domyślnej.
NOT_SENT Nie otrzymaliśmy numeru CVN, dlatego nie możemy go zweryfikować.
NOT_VERIFIED Wysłaliśmy kod CVN, ale nie został on zweryfikowany. Odpowiada to kodowi wyniku sieci „F”.
MATCH Wysłaliśmy kod CVN, został on zweryfikowany i pasował. Odpowiada to kodowi wyniku sieci „M”.
MISMATCH Wysłaliśmy kod CVN, który został zweryfikowany, ale nie jest poprawny. Odpowiada to kodowi wyniku sieci o wartości „N”.