- Żądanie HTTP
- Treść żądania
- Treść odpowiedzi
- RequestHeader
- Wersja
- StandardCard
- AvsData
- ResponseHeader
- CardNetworkResult
- Sieć
- AvsResult
- VerificationResult
- CvnResult
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( |
Pola | |
---|---|
requestHeader |
WYMAGANE: wspólny nagłówek dla wszystkich żądań. |
standardCard |
WYMAGANE: dane o karcie płatniczej użytkownika. |
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( |
Pola | |
---|---|
responseHeader |
WYMAGANE: wspólny nagłówek wszystkich odpowiedzi. |
cardNetworkResult |
WYMAGANE: wynik wydania autoryzacji w sieci kart. |
avsResult |
OPCJONALNIE: wynik weryfikacji pól adresu wysłanych w prośbie. To pole jest wymagane, jeśli w żądaniu ustawiono atrybut |
cvnResult |
WYMAGANE: wynik weryfikacji kodu CVN wysłanego w prośbie. Jeśli w żądaniu nie określono numeru CVN, należy podać wartość |
RequestHeader
Obiekt nagłówka zdefiniowany we wszystkich żądaniach wysyłanych do serwera.
Zapis JSON | |
---|---|
{
"requestId": string,
"requestTimestamp": string,
"userLocale": string,
"protocolVersion": {
object( |
Pola | |
---|---|
requestId |
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 |
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 |
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 |
protocolVersion |
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 |
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 |
WYMAGANE: wersja podrzędna. Oznacza to istotne poprawki błędów. |
revision |
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 |
WYMAGANE: główny numer rachunku bankowego karty (PAN) zapisany zwykłym tekstem. |
expiryDate |
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 |
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 |
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 |
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 |
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 |
OPCJONALNIE: kod pocztowy na potrzeby rozliczeń użytkownika. |
countryCode |
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 |
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( |
Pola | |
---|---|
network |
WYMAGANE: sieć, z której pochodzi kod wyniku. |
iso8583Result |
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 |
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 |
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( |
Pola | |
---|---|
rawAvsResult |
WYMAGANE: nieprzetworzona wartość AVS zwrócona z sieci karty. |
streetAddress |
WYMAGANE: wynik weryfikacji żądania Jeśli w żądaniu pole nie zostało ustawione, ta wartość powinna mieć wartość „NOT_SENT”. |
localityName |
WYMAGANE: wynik weryfikacji żądania Jeśli w żądaniu pole nie zostało ustawione, ta wartość powinna mieć wartość „NOT_SENT”. |
administrativeAreaName |
WYMAGANE: wynik weryfikacji żądania Jeśli w żądaniu pole nie zostało ustawione, ta wartość powinna mieć wartość „NOT_SENT”. |
postalCodeNumber |
WYMAGANE: wynik weryfikacji żądania Jeśli w żądaniu pole nie zostało ustawione, ta wartość powinna mieć wartość „NOT_SENT”. |
countryCode |
WYMAGANE: wynik weryfikacji żą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”. |