Method: card.verifycard

Проверяет карту пользователя, чтобы убедиться, что она действительна.

Этот метод вызывается Google для проверки данных карты пользователя и проверки возможности использования карты для платежей. Этот вызов не переносит никаких денег, и в учетной записи пользователя не должно быть никаких постоянных изменений.

Пример запроса выглядит так:


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

Пример ответа выглядит так:


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

HTTP-запрос

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

URL-адрес использует синтаксис транскодирования gRPC .

Тело запроса

Тело запроса содержит данные следующей структуры:

JSON-представление
{
  "requestHeader": {
    object(RequestHeader)
  },
  "standardCard": {
    object(StandardCard)
  },
  "avsData": {
    object(AvsData)
  }
}
Поля
requestHeader

object( RequestHeader )

ОБЯЗАТЕЛЬНО : общий заголовок для всех запросов.

standardCard

object( StandardCard )

ОБЯЗАТЕЛЬНО : Данные о платежной карте пользователя.

avsData

object( AvsData )

НЕОБЯЗАТЕЛЬНО : адрес пользователя, который должен быть проверен AVS.

Тело ответа

В случае успеха тело ответа содержит данные следующей структуры:

Объект ответа для метода card.verifycard, размещенного в Интеграторе платежей.

JSON-представление
{
  "responseHeader": {
    object(ResponseHeader)
  },
  "cardNetworkResult": {
    object(CardNetworkResult)
  },
  "avsResult": {
    object(AvsResult)
  },
  "cvnResult": enum(CvnResult)
}
Поля
responseHeader

object( ResponseHeader )

ОБЯЗАТЕЛЬНО : общий заголовок для всех ответов.

cardNetworkResult

object( CardNetworkResult )

ОБЯЗАТЕЛЬНО : результат авторизации в карточной сети.

avsResult

object( AvsResult )

НЕОБЯЗАТЕЛЬНО : результат проверки полей адреса, отправленных в запросе.

Это поле является обязательным, если в запросе был указан addressVerificationSystemData .

cvnResult

enum( CvnResult )

ОБЯЗАТЕЛЬНО : результат проверки CVN, отправленного в запросе. Если CVN не был установлен в запросе, это значение должно быть NOT_SENT .

Заголовок запроса

Объект заголовка, который определяется для всех запросов, отправляемых на сервер.

JSON-представление
{
  "requestId": string,
  "requestTimestamp": string,
  "userLocale": string,
  "protocolVersion": {
    object(Version)
  }
}
Поля
requestId

string

ОБЯЗАТЕЛЬНО : уникальный идентификатор этого запроса.

Это строка максимальной длиной 100 символов, содержащая только символы «az», «AZ», «0-9», «:», «-» и «_».

requestTimestamp

string ( int64 format)

ОБЯЗАТЕЛЬНО : временная метка этого запроса, представленная в миллисекундах с начала эпохи. Получатель должен убедиться, что эта временная метка составляет ± 60 секунд от «сейчас». Эта временная метка запроса не является идемпотентной при повторных попытках.

userLocale
(deprecated)

string

ДОПОЛНИТЕЛЬНО : двух- или трехбуквенный код языка ISO 639-2 Alpha 3, за которым может следовать дефис и код страны ISO 3166-1 Alpha-2, например, «pt», «pt-BR», «fil» или 'фил-PH'. Используйте это, чтобы управлять полями user_message в ответе.

protocolVersion

object( Version )

ОБЯЗАТЕЛЬНО : версия этого запроса.

Версия

Объект версии, который представляет собой структурированную форму классической структуры версий abc . Совместимость основных версий одного и того же номера гарантирована. Обратите внимание, что второстепенные и исправленные версии могут изменяться часто и без предварительного уведомления. Интегратор должен поддерживать все запросы на одну и ту же основную версию.

JSON-представление
{
  "major": number,
  "minor": number,
  "revision": number
}
Поля
major

number

ТРЕБУЕТСЯ : Основная версия. Это отмечено для запросов совместимости с разными версиями, совместимость которых не гарантируется.

minor

number

ТРЕБУЕТСЯ : Дополнительная версия. Это означает существенные исправления ошибок.

revision

number

ТРЕБУЕТСЯ : Дополнительная версия. Это означает исправление мелких ошибок.

Стандартная карта

Стандартное представление карты

JSON-представление
{
  "accountNumber": string,
  "expiryDate": string,
  "cvn": string
}
Поля
accountNumber

string

ОБЯЗАТЕЛЬНО : Основной номер счета (PAN) карты в текстовом виде.

expiryDate

string

НЕОБЯЗАТЕЛЬНО : дата истечения срока действия карты в формате ММ/ГГГГ. Необязательно, поскольку некоторые карты в определенных регионах не имеют срока действия.

cvn

string

НЕОБЯЗАТЕЛЬНО : если Google получил CVN от пользователя, он указан здесь и должен быть проверен.

AvsData

Содержит поля адреса, которые должны быть проверены AVS.

JSON-представление
{
  "streetAddress": string,
  "localityName": string,
  "administrativeAreaName": string,
  "postalCodeNumber": string,
  "countryCode": string
}
Поля
streetAddress

string

НЕОБЯЗАТЕЛЬНО : почтовый адрес платежного адреса пользователя. Если пользователь предоставил несколько строк для ввода своего адреса (например, строку для номера квартиры), строки объединяются пробелами.

localityName

string

НЕОБЯЗАТЕЛЬНО : это довольно расплывчатый термин, но обычно он относится к части адреса, посвященной городу. В регионах мира, где населенные пункты не определены четко или плохо вписываются в эту структуру (например, Япония и Китай), оставьте localityName пустым и используйте адресную_строку.

Примеры: город в США, ИТ-коммуна, почтовый город Великобритании.

administrativeAreaName

string

НЕОБЯЗАТЕЛЬНО : административное подразделение верхнего уровня этой страны для платежного адреса пользователя.

Примеры: штат США, ИТ-регион, государство, входящее в состав Великобритании, префектура Японии.

Когда страна == США, ожидается, что это будет двухсимвольная аббревиатура штата США.

postalCodeNumber

string

НЕОБЯЗАТЕЛЬНО : почтовый индекс пользователя для выставления счетов.

countryCode

string

НЕОБЯЗАТЕЛЬНО : код страны платежного адреса пользователя в формате ISO-3166-1 Alpha-2.

Заголовок ответа

Объект заголовка, который определяется во всех ответах, отправленных с сервера.

JSON-представление
{
  "responseTimestamp": string
}
Поля
responseTimestamp

string ( int64 format)

ОБЯЗАТЕЛЬНО : временная метка этого ответа, представленная в миллисекундах с момента начала. Получатель должен убедиться, что эта временная метка составляет ± 60 секунд от «сейчас».

КардНетворкРезультат

Содержит сеть и необработанный код результата из этой сети.

JSON-представление
{
  "network": enum(Network),
  "iso8583Result": string,
  "rawNetworkResult": string
}
Поля
network

enum( Network )

ОБЯЗАТЕЛЬНО : сеть, из которой получен код результата.

iso8583Result

string

ОБЯЗАТЕЛЬНО : код возврата ISO-8583, возвращаемый сетью.

Если сеть использует собственный формат кода ответа, интегратор должен сопоставить эти коды ответа с кодами возврата ISO-8583.

rawNetworkResult

string

ОБЯЗАТЕЛЬНО : необработанное значение, возвращенное из сети. Сети, которые используют коды возврата ISO-8583, уже будут иметь одно и то же значение в этом поле и в iso8583Result . Это поле используется для информирования системы управления рисками Google и наиболее полезно для сетей, использующих собственные коды ответов.

Сеть

Определяет возможные карточные сети, которые могли вернуть rawResult .

Перечисления
UNKNOWN_NETWORK Сеть не распозналась
NETWORK_NOT_INVOLVED Используйте это значение, если отказ поступил не от сети, например, если интегратор отклонил покупку еще до того, как она была отправлена ​​в карточную сеть.
AMEX Сеть AMEX
COMPROCARD Сеть КОМПРОКАРД
DANKORT Сеть ДАНКОРТ
DINACARD Сеть ДИНАКАРД
DINERS_CLUB Сеть DINERS_CLUB
DISCOVER ОТКРОЙТЕ Сеть
EFTPOS Сеть ЕФТПОС
ELO Сеть ЭЛО
ENROUTE Сеть ENROUTE
FELICA Сеть ФЕЛИКА
GE_CAPITAL Сеть GE_CAPITAL
HIPERCARD Сеть ГИПЕРКАРТ
ID Идентификатор сети
INTERAC Сеть ИНТЕРАК
JCB Сеть JCB
LASER ЛАЗЕРНАЯ Сеть
MAESTRO Сеть МАЭСТРО
MASTERCARD Сеть МАСТЕРКАРД
PPT Сеть PPT
QUICPAY Сеть QUICPAY
RUPAY Сеть РУПЕЙ
SBERCARD Сеть СБЕРКАРТ
SOLO СОЛО Сеть
SYNCHRONY Сеть СИНХРОНИЯ
UNIONPAY Сеть UNIONPAY
VISA Сеть ВИЗА

AvsResult

Результат проверки полей адреса, указанных в запросе.

Все поля являются обязательными, поскольку мы хотим получить явный результат для каждого поля, а не полагаться на отсутствие поля как на подразумеваемый результат.

JSON-представление
{
  "rawAvsResult": string,
  "streetAddress": enum(VerificationResult),
  "localityName": enum(VerificationResult),
  "administrativeAreaName": enum(VerificationResult),
  "postalCodeNumber": enum(VerificationResult),
  "countryCode": enum(VerificationResult)
}
Поля
rawAvsResult

string

ОБЯЗАТЕЛЬНО : необработанное значение AVS, возвращенное из карточной сети.

streetAddress

enum( VerificationResult )

ОБЯЗАТЕЛЬНО : результат проверки streetAddress , отправленного в поле addressVerificationSystemData запроса.

Если поле не было задано в запросе, это значение должно быть «NOT_SENT».

localityName

enum( VerificationResult )

ОБЯЗАТЕЛЬНО : результат проверки localityName , отправленного в поле addressVerificationSystemData запроса.

Если поле не было задано в запросе, это значение должно быть «NOT_SENT».

administrativeAreaName

enum( VerificationResult )

ОБЯЗАТЕЛЬНО : результат проверки administrativeAreaName , отправленного в поле addressVerificationSystemData запроса.

Если поле не было задано в запросе, это значение должно быть «NOT_SENT».

postalCodeNumber

enum( VerificationResult )

ОБЯЗАТЕЛЬНО : результат проверки postalCodeNumber , отправленного в поле addressVerificationSystemData запроса.

Если поле не было задано в запросе, это значение должно быть «NOT_SENT».

countryCode

enum( VerificationResult )

ОБЯЗАТЕЛЬНО : результат проверки countryCode , отправленного в поле addressVerificationSystemData запроса.

Если поле не было задано в запросе, это значение должно быть «NOT_SENT».

Результат проверки

Перечисления
UNKNOWN_AVS_MATCH Никогда не устанавливайте это значение по умолчанию!
NOT_SENT Google не отправил это поле, поэтому с ним ничего нельзя было сделать.
MATCH Google отправил поле интегратору, оно было проверено через AVS и оказалось, что оно соответствует ожидаемому значению.
MISMATCH Google отправил поле интегратору, оно было проверено через AVS, но не соответствовало ожидаемому значению.
SKIPPED Google отправил поле интегратору, но интегратор не проверил его.
NOT_SPECIFIED Google отправил поле интегратору, и интегратор проверил поле через AVS, но код результата AVS не предоставляет интегратору достаточно информации, чтобы узнать, соответствует ли поле ожидаемому значению.

CvnResult

Результат проверки CVN, указанный в запросе.

Перечисления
UNKNOWN_CVN_RESULT Никогда не устанавливайте это значение по умолчанию!
NOT_SENT Google не предоставил CVN, поэтому его невозможно проверить.
NOT_VERIFIED Google отправил CVN, но он не был проверен. Это соответствует сетевому коду результата «F».
MATCH Google отправил CVN, он был проверен и совпал. Это соответствует сетевому коду результата «М».
MISMATCH Google отправил CVN, он был проверен, но не совпал. Это соответствует сетевому коду результата «N».