Method: card.verifycard

Vérifie la carte d'un utilisateur pour voir si elle est valide.

Cette méthode est appelée par Google pour vérifier les informations relatives à la carte d'un utilisateur et déterminer si elle peut être utilisée pour des paiements. Cet appel ne permet pas de transférer de l'argent, et le compte de l'utilisateur ne devrait pas subir de modification définitive.

Voici un exemple de requête:


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

Voici un exemple de réponse:


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

Requête HTTP

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

L'URL utilise la syntaxe de transcodage gRPC.

Corps de la requête

Le corps de la requête contient des données présentant la structure suivante :

Représentation JSON
{
  "requestHeader": {
    object(RequestHeader)
  },
  "standardCard": {
    object(StandardCard)
  },
  "avsData": {
    object(AvsData)
  }
}
Champs
requestHeader

object(RequestHeader)

OBLIGATOIRE: en-tête commun à toutes les requêtes.

standardCard

object(StandardCard)

OBLIGATOIRE: données sur la carte de paiement de l'utilisateur.

avsData

object(AvsData)

FACULTATIF: adresse de l'utilisateur à valider par AVS.

Corps de la réponse

Si la requête aboutit, le corps de la réponse contient des données qui ont la structure suivante :

Objet de réponse pour la méthode card.verifycard hébergée par l'intégrateur de paiement.

Représentation JSON
{
  "responseHeader": {
    object(ResponseHeader)
  },
  "cardNetworkResult": {
    object(CardNetworkResult)
  },
  "avsResult": {
    object(AvsResult)
  },
  "cvnResult": enum(CvnResult)
}
Champs
responseHeader

object(ResponseHeader)

OBLIGATOIRE: en-tête commun à toutes les réponses.

cardNetworkResult

object(CardNetworkResult)

OBLIGATOIRE: résultat de l'octroi de l'autorisation sur le réseau de cartes.

avsResult

object(AvsResult)

FACULTATIF: résultat de la vérification des champs d'adresse envoyés dans la requête.

Ce champ est obligatoire si addressVerificationSystemData a été défini dans la requête.

cvnResult

enum(CvnResult)

OBLIGATOIRE: résultat de la validation du CVN envoyé dans la requête. Si le cryptogramme n'a pas été défini dans la demande, cette valeur doit être NOT_SENT.

RequestHeader

Objet d'en-tête défini sur toutes les requêtes envoyées au serveur.

Représentation JSON
{
  "requestId": string,
  "requestTimestamp": string,
  "userLocale": string,
  "protocolVersion": {
    object(Version)
  }
}
Champs
requestId

string

OBLIGATOIRE: Identifiant unique de la requête.

Il s'agit d'une chaîne d'une longueur maximale de 100 caractères qui ne contient que les caractères "a-z", "A-Z", "0-9", ":", "-" et "_".

requestTimestamp

string (int64 format)

REQUIRED: horodatage de cette requête représenté en millisecondes depuis l'epoch. Le récepteur doit vérifier que cet horodatage correspond à ± 60 secondes du "now" (maintenant). Cet horodatage de requête n'est pas idempotent lors des nouvelles tentatives.

userLocale
(deprecated)

string

FACULTATIF: code de langue ISO 639-2 Alpha 3 à deux ou trois lettres, éventuellement suivi d'un trait d'union et d'un code pays ISO 3166-1 Alpha-2, par exemple "pt", "pt-BR", "fil" ou "fil-PH". Utilisez-le pour définir les champs user_message dans la réponse.

protocolVersion

object(Version)

OBLIGATOIRE: version de cette requête.

Version

Objet de version, qui est une forme structurée de la structure de version a.b.c classique. La compatibilité des versions majeures du même numéro est garantie. Notez que les révisions mineures et les révisions peuvent changer fréquemment et sans préavis. L'intégrateur doit prendre en charge toutes les requêtes concernant la même version majeure.

Représentation JSON
{
  "major": number,
  "minor": number,
  "revision": number
}
Champs
major

number

OBLIGATOIRE: version majeure. Ceci est indiqué pour les demandes de compatibilité avec différentes versions. Leur compatibilité n'est pas garantie.

minor

number

OBLIGATOIRE: version mineure. Cela indique des corrections de bugs importantes.

revision

number

OBLIGATOIRE: version mineure. Cela indique des corrections de bugs mineures.

StandardCard

Représentation standard d'une fiche

Représentation JSON
{
  "accountNumber": string,
  "expiryDate": string,
  "cvn": string
}
Champs
accountNumber

string

OBLIGATOIRE: numéro de compte principal (PAN) en texte brut de la carte.

expiryDate

string

FACULTATIF: date d'expiration de la carte au format MM/AAAA. Facultatif, car certaines cartes n'ont pas de date d'expiration dans certaines régions.

cvn

string

FACULTATIF: si Google a recueilli le cryptogramme de l'utilisateur auprès de l'utilisateur, il est indiqué ici et doit être validé.

AvsData

Contient les champs d'adresse à vérifier par AVS.

Représentation JSON
{
  "streetAddress": string,
  "localityName": string,
  "administrativeAreaName": string,
  "postalCodeNumber": string,
  "countryCode": string
}
Champs
streetAddress

string

FACULTATIF: adresse postale de l'adresse de facturation de l'utilisateur. Lorsque l'utilisateur a fourni plusieurs lignes pour saisir son adresse postale (par exemple, une ligne pour le numéro d'appartement), les lignes sont concaténées avec des espaces.

localityName

string

FACULTATIF: ce terme manque généralement de précision, mais il fait généralement référence à la partie ville/ville d'une adresse. Dans les régions du monde où les localités ne sont pas bien définies ou ne s'intègrent pas bien dans cette structure (Japon et Chine, par exemple), laissez le champ localityName vide et utilisez address_line.

Exemples : une "city" aux États-Unis, une "comune" en Italie, une "post town" au Royaume-Uni.

administrativeAreaName

string

FACULTATIF: subdivision administrative de niveau supérieur de ce pays pour l'adresse de facturation de l'utilisateur.

Exemples: État des États-Unis, région d'Italie, État membre du Royaume-Uni, préfecture du Japon

Lorsque le pays est == US, il s'agit généralement d'une abréviation à deux caractères correspondant à l'État américain.

postalCodeNumber

string

FACULTATIF: code postal de facturation de l'utilisateur.

countryCode

string

FACULTATIF: code pays de l'adresse de facturation de l'utilisateur au format ISO-3166-1 Alpha-2.

ResponseHeader

Objet d'en-tête défini sur toutes les réponses envoyées par le serveur.

Représentation JSON
{
  "responseTimestamp": string
}
Champs
responseTimestamp

string (int64 format)

REQUIRED: horodatage de cette réponse représenté en millisecondes depuis l'epoch. Le récepteur doit vérifier que cet horodatage correspond à ± 60 secondes du "now" (maintenant).

CardNetworkResult

Contient un réseau et un code de résultat brut provenant de ce réseau.

Représentation JSON
{
  "network": enum(Network),
  "iso8583Result": string,
  "rawNetworkResult": string
}
Champs
network

enum(Network)

OBLIGATOIRE: réseau d'où provient le code de résultat.

iso8583Result

string

OBLIGATOIRE: code ISO-8583 renvoyé par le réseau.

Si le réseau utilise son propre format de code de réponse, l'intégrateur doit mapper ces codes de réponse aux codes renvoyés ISO-8583.

rawNetworkResult

string

OBLIGATOIRE: valeur brute renvoyée par le réseau. Les réseaux qui utilisent les codes de retour ISO-8583 auront déjà la même valeur dans ce champ et dans iso8583Result. Ce champ sert à informer le moteur de risque de Google et est particulièrement utile pour les réseaux qui utilisent leurs propres codes de réponse.

Réseau

Définit les réseaux de cartes susceptibles d'avoir renvoyé l'rawResult.

Enums
UNKNOWN_NETWORK Le réseau n'a pas été reconnu.
NETWORK_NOT_INVOLVED Utilisez cette valeur si le refus ne provient pas du réseau (par exemple, si l'intégrateur a refusé l'achat avant même qu'il ne soit envoyé sur le réseau de la carte).
AMEX AMEX Network
COMPROCARD Réseau COMPROCARD
DANKORT DANKORT Network
DINACARD DINACARD Network
DINERS_CLUB Réseau DINERS_CLUB
DISCOVER DISCOVER Network
EFTPOS Réseau EFTPOS
ELO ELO Network
ENROUTE ENROUTE Network
FELICA FELICA Network
GE_CAPITAL Réseau GE_CAPITAL
HIPERCARD HIPERCARD Network
ID Réseau d'ID
INTERAC Réseau INTERAC
JCB Réseau JCB
LASER LASER Network
MAESTRO MAESTRO Network
MASTERCARD MASTERCARD Network
PPT Réseau PPT
QUICPAY Réseau QUICPAY
RUPAY Réseau RUPAY
SBERCARD SBERCARD Network
SOLO SOLO Network
SYNCHRONY SYNCHRONY Network
UNIONPAY UNIONPAY Network
VISA VISA Network

AvsResult

Résultat de la validation des champs d'adresse fournis dans la requête.

Tous les champs sont obligatoires, car nous voulons un résultat explicite pour chaque champ au lieu de compter sur l'absence d'un champ comme résultat implicite.

Représentation JSON
{
  "rawAvsResult": string,
  "streetAddress": enum(VerificationResult),
  "localityName": enum(VerificationResult),
  "administrativeAreaName": enum(VerificationResult),
  "postalCodeNumber": enum(VerificationResult),
  "countryCode": enum(VerificationResult)
}
Champs
rawAvsResult

string

OBLIGATOIRE: valeur AVS brute renvoyée par le réseau de la carte.

streetAddress

enum(VerificationResult)

OBLIGATOIRE: résultat de la validation de l'élément streetAddress envoyé dans le champ addressVerificationSystemData de la requête.

Si le champ n'a pas été défini dans la requête, cette valeur doit être "NOT_SENT".

localityName

enum(VerificationResult)

OBLIGATOIRE: résultat de la validation de l'élément localityName envoyé dans le champ addressVerificationSystemData de la requête.

Si le champ n'a pas été défini dans la requête, cette valeur doit être "NOT_SENT".

administrativeAreaName

enum(VerificationResult)

OBLIGATOIRE: résultat de la validation de l'élément administrativeAreaName envoyé dans le champ addressVerificationSystemData de la requête.

Si le champ n'a pas été défini dans la requête, cette valeur doit être "NOT_SENT".

postalCodeNumber

enum(VerificationResult)

OBLIGATOIRE: résultat de la validation de l'élément postalCodeNumber envoyé dans le champ addressVerificationSystemData de la requête.

Si le champ n'a pas été défini dans la requête, cette valeur doit être "NOT_SENT".

countryCode

enum(VerificationResult)

OBLIGATOIRE: résultat de la validation de l'élément countryCode envoyé dans le champ addressVerificationSystemData de la requête.

Si le champ n'a pas été défini dans la requête, cette valeur doit être "NOT_SENT".

VerificationResult

Enums
UNKNOWN_AVS_MATCH Ne définissez jamais cette valeur par défaut.
NOT_SENT Google n'a pas envoyé ce champ. Nous n'avons donc pas pu le modifier.
MATCH Google a envoyé le champ à l'intégrateur, qui a été vérifié via AVS et correspond à la valeur attendue.
MISMATCH Google a envoyé le champ à l'intégrateur, qui a été vérifié via AVS, mais ne correspondait pas à la valeur attendue.
SKIPPED Google a envoyé le champ à l'intégrateur, mais celui-ci n'a pas vérifié le champ.
NOT_SPECIFIED Google a envoyé le champ à l'intégrateur, qui l'a vérifié via AVS, mais le code de résultat AVS ne fournit pas suffisamment d'informations pour que l'intégrateur sache si le champ correspond à la valeur attendue.

CvnResult

Résultat de la validation du cryptogramme fourni dans la demande.

Enums
UNKNOWN_CVN_RESULT Ne définissez jamais cette valeur par défaut.
NOT_SENT Google n'a pas fourni le cryptogramme. Il n'a donc pas pu être validé.
NOT_VERIFIED Google a envoyé le cryptogramme, mais celui-ci n'a pas été validé. Cela correspond à un code de résultat réseau de "F"
MATCH Google a envoyé le cryptogramme, celui-ci a été validé et il a été mis en correspondance. Cela correspond au code de résultat réseau "M".
MISMATCH Google a envoyé le cryptogramme. Celui-ci a été validé, mais il ne correspondait pas. Cela correspond au code de résultat réseau "N".