Method: card.verifycard

Verifica la tarjeta de un usuario para comprobar si es válida.

Google llama a este método para verificar los detalles de la tarjeta de un usuario y ver si se puede usar para realizar pagos. Esta llamada no transfiere dinero y no debería haber cambios permanentes en la cuenta del usuario.

A continuación, se muestra una solicitud de ejemplo:


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

Una respuesta de ejemplo se ve de la siguiente manera:


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

Solicitud HTTP

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

La URL usa la sintaxis de la transcodificación gRPC.

Cuerpo de la solicitud

El cuerpo de la solicitud contiene datos con la siguiente estructura:

Representación JSON
{
  "requestHeader": {
    object(RequestHeader)
  },
  "standardCard": {
    object(StandardCard)
  },
  "avsData": {
    object(AvsData)
  }
}
Campos
requestHeader

object(RequestHeader)

REQUIRED: Encabezado común para todas las solicitudes

standardCard

object(StandardCard)

OBLIGATORIO: Incluye los datos de la tarjeta de pago del usuario.

avsData

object(AvsData)

OPCIONAL: Es la dirección del usuario que verificará AVS.

Cuerpo de la respuesta

Si se ejecuta correctamente, el cuerpo de la respuesta contendrá datos con la siguiente estructura:

Objeto de respuesta para el método card.verifycard alojado en Payment Integrator.

Representación JSON
{
  "responseHeader": {
    object(ResponseHeader)
  },
  "cardNetworkResult": {
    object(CardNetworkResult)
  },
  "avsResult": {
    object(AvsResult)
  },
  "cvnResult": enum(CvnResult)
}
Campos
responseHeader

object(ResponseHeader)

REQUIRED: Encabezado común para todas las respuestas

cardNetworkResult

object(CardNetworkResult)

REQUIRED: Es el resultado de la emisión de la autorización en la red de tarjetas.

avsResult

object(AvsResult)

OPCIONAL: Es el resultado de verificar los campos de dirección que se enviaron en la solicitud.

Este campo es obligatorio si se configuró addressVerificationSystemData en la solicitud.

cvnResult

enum(CvnResult)

REQUIRED: Es el resultado de la verificación del CVN que se envió en la solicitud. Si no se estableció el CVN en la solicitud, este valor debe ser NOT_SENT.

RequestHeader

Es un objeto de encabezado que se define en todas las solicitudes que se envían al servidor.

Representación JSON
{
  "requestId": string,
  "requestTimestamp": string,
  "userLocale": string,
  "protocolVersion": {
    object(Version)
  }
}
Campos
requestId

string

REQUIRED: Identificador único de esta solicitud

Es una cadena que tiene una longitud máxima de 100 caracteres y solo contiene los caracteres "a-z", "A-Z", "0-9", ":", "-" y "_".

requestTimestamp

string (int64 format)

REQUIRED: Es la marca de tiempo de esta solicitud representada como milisegundos desde el ciclo de entrenamiento. El receptor debe verificar que esta marca de tiempo sea de ± 60 segundos del “ahora”. Esta marca de tiempo de la solicitud no es idempotente luego de los reintentos.

userLocale
(deprecated)

string

OPCIONAL: Un código de idioma ISO 639-2 alfa 3 de dos o tres letras, opcionalmente, seguido de un guion y un código de país ISO 3166-1 alfa-2, p.ej., "pt", "pt-BR", "fil" o "fil-PH". Úsalo para controlar los campos user_message de la respuesta.

protocolVersion

object(Version)

REQUIRED: Es la versión de esta solicitud.

Versión

Objeto de versión que es una forma estructurada de la estructura de la versión clásica de a.b.c. Se garantiza la compatibilidad de las versiones principales que tengan la misma cantidad. Ten en cuenta que las revisiones y menores pueden cambiar con frecuencia y sin previo aviso. El integrador debe admitir todas las solicitudes de la misma versión principal.

Representación JSON
{
  "major": number,
  "minor": number,
  "revision": number
}
Campos
major

number

REQUIRED: Versión principal. Esto se marca para que las solicitudes de compatibilidad con diferentes versiones no sean compatibles.

minor

number

REQUIRED: Versión secundaria. Esto denota correcciones de errores importantes.

revision

number

REQUIRED: Versión secundaria. Esto denota correcciones de errores menores.

StandardCard

La representación estándar de una tarjeta

Representación JSON
{
  "accountNumber": string,
  "expiryDate": string,
  "cvn": string
}
Campos
accountNumber

string

OBLIGATORIO: El número de cuenta principal (PAN) de la tarjeta en texto sin formato.

expiryDate

string

OPCIONAL: Es la fecha de vencimiento de la tarjeta en formato MM/AAAA. Opcional porque algunas tarjetas en ciertas regiones no tienen fecha de vencimiento.

cvn

string

OPCIONAL: Si Google recopiló el CVN del usuario, se proporciona aquí y se debe verificar.

AvsData

Contiene campos de dirección que deben verificar AVS.

Representación JSON
{
  "streetAddress": string,
  "localityName": string,
  "administrativeAreaName": string,
  "postalCodeNumber": string,
  "countryCode": string
}
Campos
streetAddress

string

OPCIONAL: Es la dirección de la dirección de facturación del usuario. Cuando el usuario proporciona varias líneas para ingresar su dirección (por ejemplo, una línea para el número de departamento), las líneas se concatenan con espacios.

localityName

string

OPCIONAL: Es un término aproximado, pero generalmente hace referencia a la parte de una dirección que corresponde a la ciudad o el pueblo. En regiones del mundo donde las localidades no están bien definidas o no se ajustan bien a esta estructura (por ejemplo, Japón y China), deja localityName vacío y usa address_line.

Ejemplos: ciudad de EE.UU., comuna de Italia o ciudad postal en el Reino Unido.

administrativeAreaName

string

OPCIONAL: Es la subdivisión administrativa de nivel superior de este país para la dirección de facturación del usuario.

Ejemplos: Estado de EE.UU., región de TI, nación constituyente del Reino Unido, prefectura de Japón

Cuando país == EE.UU., se espera que sea la abreviatura de 2 caracteres del estado de EE.UU.

postalCodeNumber

string

OPCIONAL: El código postal de facturación del usuario.

countryCode

string

OPCIONAL: Es el código de país de la dirección de facturación del usuario en formato ISO-3166-1 Alfa-2.

ResponseHeader

Es un objeto de encabezado que se define en todas las respuestas que se envían desde el servidor.

Representación JSON
{
  "responseTimestamp": string
}
Campos
responseTimestamp

string (int64 format)

REQUIRED: Marca de tiempo de esta respuesta representada como milisegundos desde el ciclo de entrenamiento. El receptor debe verificar que esta marca de tiempo sea de ± 60 segundos del “ahora”.

CardNetworkResult

Contiene una red y un código de resultado sin procesar de esa red.

Representación JSON
{
  "network": enum(Network),
  "iso8583Result": string,
  "rawNetworkResult": string
}
Campos
network

enum(Network)

REQUIRED: Es la red de la que provino el código de resultado.

iso8583Result

string

OBLIGATORIO: Es el código de retorno ISO-8583 que muestra la red.

Si la red usa su propio formato de código de respuesta, el integrador debe asignar esos códigos de respuesta a los códigos de retorno ISO-8583.

rawNetworkResult

string

REQUIRED: El valor sin procesar que muestra la red. Las redes que usan códigos de retorno ISO-8583 ya tendrán el mismo valor en este campo y en iso8583Result. Este campo se utiliza para informar al motor de riesgos de Google y es muy útil para las redes que utilizan sus propios códigos de respuesta.

Red

Define las redes de tarjetas posibles que podrían haber mostrado el rawResult.

Enumeraciones
UNKNOWN_NETWORK No se reconoció la red
NETWORK_NOT_INVOLVED Usa este valor si el rechazo no provino de la red, por ejemplo, si el integrador rechazó la compra antes de que se envíe a la red de la tarjeta.
AMEX Red AMEX
COMPROCARD Red COMPROCARD
DANKORT Red DANKORT
DINACARD Red DINACARD
DINERS_CLUB Red DINERS_CLUB
DISCOVER Red DISCOVER
EFTPOS Red de EFTPOS
ELO Red ELO
ENROUTE Red ENROUTE
FELICA Red FELICA
GE_CAPITAL Red GE_CAPITAL
HIPERCARD Red HIPERCARD
ID Red de ID
INTERAC Red INTERAC
JCB Red JCB
LASER Red LÁSER
MAESTRO Red MAESTRO
MASTERCARD Red MASTERCARD
PPT Red PPT
QUICPAY Red QUICPAY
RUPAY Red RUPAY
SBERCARD Red SBERCARD
SOLO Red SOLO
SYNCHRONY Red SYNCHRONY
UNIONPAY Red UNIONPAY
VISA VISA Network

AvsResult

Es el resultado de la verificación de los campos de dirección proporcionados en la solicitud.

Todos los campos son obligatorios porque queremos un resultado explícito para cada campo en lugar de depender de la ausencia de un campo como resultado implícito.

Representación JSON
{
  "rawAvsResult": string,
  "streetAddress": enum(VerificationResult),
  "localityName": enum(VerificationResult),
  "administrativeAreaName": enum(VerificationResult),
  "postalCodeNumber": enum(VerificationResult),
  "countryCode": enum(VerificationResult)
}
Campos
rawAvsResult

string

REQUIRED: Es el valor de AVS sin procesar que muestra la red de tarjetas.

streetAddress

enum(VerificationResult)

OBLIGATORIO: Es el resultado de verificar el streetAddress enviado en el campo addressVerificationSystemData de la solicitud.

Si el campo no se configuró en la solicitud, este valor debe ser "NOT_SENT".

localityName

enum(VerificationResult)

OBLIGATORIO: Es el resultado de verificar el localityName enviado en el campo addressVerificationSystemData de la solicitud.

Si el campo no se configuró en la solicitud, este valor debe ser "NOT_SENT".

administrativeAreaName

enum(VerificationResult)

OBLIGATORIO: Es el resultado de verificar el administrativeAreaName enviado en el campo addressVerificationSystemData de la solicitud.

Si el campo no se configuró en la solicitud, este valor debe ser "NOT_SENT".

postalCodeNumber

enum(VerificationResult)

OBLIGATORIO: Es el resultado de verificar el postalCodeNumber enviado en el campo addressVerificationSystemData de la solicitud.

Si el campo no se configuró en la solicitud, este valor debe ser "NOT_SENT".

countryCode

enum(VerificationResult)

OBLIGATORIO: Es el resultado de verificar el countryCode enviado en el campo addressVerificationSystemData de la solicitud.

Si el campo no se configuró en la solicitud, este valor debe ser "NOT_SENT".

VerificationResult

Enumeraciones
UNKNOWN_AVS_MATCH No establezcas nunca este valor predeterminado.
NOT_SENT Google no envió este campo, por lo que no se pudo hacer nada.
MATCH Google envió el campo al integrador, se verificó a través de AVS y coincidió con el valor esperado.
MISMATCH Google envió el campo al integrador y se verificó a través de AVS, pero no coincidía con el valor esperado.
SKIPPED Google envió el campo al integrador, pero este no lo verificó.
NOT_SPECIFIED Google envió el campo al integrador y este lo verificó a través de AVS, pero el código de resultado de AVS no proporciona suficiente información para que el integrador sepa si el campo coincidió con el valor esperado.

CvnResult

El resultado de verificar el CVN proporcionado en la solicitud.

Enumeraciones
UNKNOWN_CVN_RESULT No establezcas nunca este valor predeterminado.
NOT_SENT Google no proporcionó el CVN, por lo que no se pudo verificar.
NOT_VERIFIED Google envió el CVN, pero no se verificó. Esto corresponde a un código de resultado de red "F"
MATCH Google envió el CVN, se verificó y coincidió. Esto corresponde a un código de resultado de red de "M".
MISMATCH Google envió el CVN y se verificó, pero no coincide. Esto corresponde a un código de resultado de red de "N".