Method: captureResultNotification

Informer Google du résultat d'une capture après un appel de méthode capture ou asynchronousCapture

La valeur captureResult est idempotente pour cet élément captureRequestId. Sa valeur ne peut donc pas être modifiée par un appel ultérieur de cette méthode.

Si le point de terminaison rencontre une erreur lors du traitement de la requête, sa réponse est de type ErrorResponse.

Les réponses à cette requête peuvent être vides si cette méthode ne renvoie pas de code HTTP 200. Le corps de la réponse est vide dans les cas où un ErrorResponse avec une description claire pourrait être utilisé pour aider un pirate informatique à comprendre l'identifiant de compte de l'intégrateur de paiement d'autres intégrateurs. Dans les cas où la clé de signature ne correspond pas, l'identifiant de l'intégrateur de paiement est introuvable ou la clé de chiffrement est inconnue, cette méthode renvoie une erreur HTTP 404 avec un corps vide. Si la signature de la requête a pu être vérifiée, des informations supplémentaires concernant l'erreur sont renvoyées dans le corps de la réponse.

Voici un exemple de requête:


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 1,
      "revision": 0
    },
    "requestId": "KcgwSKrV76eVNDUbsZ4UA3",
    "requestTimestamp": "1481852928293"
  },
  "paymentIntegratorAccountId": "InvisiCashUSA_USD",
  "captureRequestId": "awNaC510cefae3IJdNEvW2",
  "captureResult": {
    "captureResultCode": "SUCCESS"
  }
}

Voici un exemple de réponse:


{
  "responseHeader": {
    "responseTimestamp": "1481852928324"
  },
  "result": "SUCCESS"
}

Requête HTTP

POST https://vgw.googleapis.com/secure-serving/gsp/v1/captureResultNotification/:PIAID

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)
  },
  "paymentIntegratorAccountId": string,
  "captureRequestId": string,
  "captureResult": {
    object (CaptureResult)
  },
  "paymentIntegratorTransactionId": string
}
Champs
requestHeader

object (RequestHeader)

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

paymentIntegratorAccountId

string

OBLIGATOIRE: Identifiant du compte de l'intégrateur de paiement sur lequel la capture a eu lieu.

captureRequestId

string

OBLIGATOIRE: Identifiant unique de cette transaction. Il s'agit du requestId généré par Google lors de l'appel capture ou asynchronousCapture auquel cette requête est associée.

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 "_".

captureResult

object (CaptureResult)

REQUIRED: résultat de cette capture.

paymentIntegratorTransactionId

string

FACULTATIF: cet identifiant est spécifique à l'intégrateur et est généré par celui-ci. Il s'agit de l'identifiant par lequel l'intégrateur connaît cette transaction.

Pour plus de commodité, cet identifiant est inclus dans les détails du versement.

Corps de la réponse

Objet de réponse pour la méthode captureResultNotification.

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

Représentation JSON
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "result": enum (CaptureResultNotificationResultCode)
}
Champs
responseHeader

object (ResponseHeader)

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

result

enum (CaptureResultNotificationResultCode)

OBLIGATOIRE: résultat de cet appel.

CaptureResult

Informations sur le résultat final d'une capture.

Représentation JSON
{
  "captureResultCode": enum (CaptureResultCode),
  "rawResult": {
    object (RawResult)
  },

  // Union field FailureDetail can be only one of the following:
  "transactionMaxLimit": string,
  "transactionMinLimit": string,
  "currentBalance": string
  // End of list of possible types for union field FailureDetail.
}
Champs
captureResultCode

enum (CaptureResultCode)

OBLIGATOIRE: code de résultat de cette capture.

rawResult

object (RawResult)

FACULTATIF: résultat brut de cette capture. Permet d'informer le moteur de risques et les analyses de Google. En cas de mise en correspondance de code de refus, des données sont parfois perdues. L'intégrateur peut choisir de fournir à Google un code brut. Par exemple, une passerelle de carte de crédit (l'intégrateur) peut utiliser ce champ pour communiquer à Google le code de refus exact envoyé par le réseau VISA. Dans ce cas, le scope correspond à "visa". et rawCode correspond à tout ce que renvoie le réseau VISA.

Cette valeur est obligatoire si result n'est pas SUCCESS.

Champ d'union FailureDetail.

FailureDetail ne peut être qu'un des éléments suivants :

transactionMaxLimit

string (Int64Value format)

FACULTATIF: si captureResultCode est CHARGE_EXCEEDS_TRANSACTION_LIMIT, il s'agit de la valeur de la transaction maximale autorisée. Elle est utilisée pour les messages structurés destinés aux utilisateurs et pour l'analyse du taux de refus.

Cette valeur correspond à micros du même currencyCode que l'appel de méthode capture ou asynchronousCapture d'origine.

transactionMinLimit

string (Int64Value format)

FACULTATIF: si captureResultCode est CHARGE_UNDER_TRANSACTION_LIMIT, il s'agit de la valeur de la transaction minimale autorisée. Elle est utilisée pour les messages structurés destinés aux utilisateurs et pour l'analyse du taux de refus.

Cette valeur correspond à micros du même currencyCode que l'appel de méthode capture ou asynchronousCapture d'origine.

currentBalance

string (Int64Value format)

FACULTATIF: si le résultat est INSUFFICIENT_FUNDS, il s'agit du solde actuellement disponible dans le compte de l'utilisateur (en micros). Il est utilisé pour les messages structurés destinés aux utilisateurs.

Cette valeur doit être dans la même devise que le currencyCode de la demande.

CaptureResultCode

Codes de résultat d'une capture.

Enums
UNKNOWN_RESULT Ne définissez jamais cette valeur par défaut.
SUCCESS Capture réussie.
CHARGE_UNDER_TRANSACTION_LIMIT Le montant de capture demandé n'atteint pas le montant minimal par transaction défini par l'intégrateur. Si vous utilisez ce code, renseignez le champ transactionMinLimit avec le montant minimal de transaction pour diffuser des messages destinés aux utilisateurs.
CHARGE_EXCEEDS_TRANSACTION_LIMIT Le montant de capture demandé dépasse la limite maximale par transaction de l'intégrateur. Si vous utilisez ce code, renseignez le champ transactionMaxLimit avec la limite de transaction pour envoyer des messages destinés aux utilisateurs.
CHARGE_EXCEEDS_DAILY_LIMIT Vous ne pouvez pas utiliser ce compte pour des achats pour le moment, car il a dépassé sa limite quotidienne.
CHARGE_EXCEEDS_MONTHLY_LIMIT Impossible d'utiliser ce compte pour le moment, car il a dépassé sa limite mensuelle.
INSUFFICIENT_FUNDS Les fonds disponibles sur ce compte sont insuffisants pour garantir cette capture.
SUSPECTED_FRAUD L'intégrateur a des raisons de penser que cette transaction est frauduleuse.
ACCOUNT_CLOSED Le compte de l'utilisateur détenu par l'intégrateur a été clôturé. Cette valeur renvoyée entraîne la fermeture de l'instrument de l'utilisateur auprès de Google. L'utilisateur sera obligé d'ajouter un nouvel instrument.
ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER Le compte de l'utilisateur associé à l'intégrateur a été clôturé. Le compte a probablement été piraté. Cette valeur renvoyée entraîne la fermeture de l'instrument de l'utilisateur auprès de Google. L'utilisateur sera obligé d'ajouter un nouvel instrument.
ACCOUNT_CLOSED_FRAUD Le compte de l'utilisateur détenu par l'intégrateur a été clôturé pour fraude. Cette valeur renvoyée entraîne la fermeture de l'instrument de l'utilisateur auprès de Google. L'utilisateur sera obligé d'ajouter un nouvel instrument.
ACCOUNT_ON_HOLD Le compte de l'utilisateur est suspendu.
OTP_NOT_MATCHED Le mot de passe à usage unique ne correspond pas aux informations envoyées par l'intégrateur.
OTP_ALREADY_USED L'OTP a déjà été utilisé.
CAPTURE_REQUEST_EXPIRED L'intégrateur a mis trop de temps à capturer les fonds de l'utilisateur. Google considère ce refus comme un état final. L'intégrateur doit donc s'assurer que les fonds de l'utilisateur ne sont pas récupérés ultérieurement ou que l'utilisateur est automatiquement remboursé si la capture aboutit.
INVALID_PIN L'utilisateur a fourni un code non valide.
OS_LOCK_FAILED Ce flux de paiement nécessite une question d'authentification au verrouillage de l'OS, et l'utilisateur n'a pas réussi à déverrouiller l'appareil.
PIN_ENTRY_ATTEMPTS_EXHAUSTED Ce flux de paiement nécessite la saisie du code utilisateur. L'utilisateur n'a pas pu saisir le code d'accès suffisamment de fois, car le nombre de tentatives autorisées a été dépassé.
USER_EXITED_PAYMENT_FLOW L'utilisateur a annulé l'intégralité de la tentative de paiement (soit lors du verrouillage de l'OS, soit lors de la saisie du code).
MONTHLY_FREQUENCY_LIMIT_EXCEEDED Impossible d'utiliser ce compte pour le moment, car il a dépassé la limite mensuelle de tentatives de transactions.
DECLINED_BY_ISSUER

Ce code de refus ne doit jamais être utilisé à l'état stable. Il s'agit d'un code collectif temporaire à utiliser lorsque l'intégrateur rencontre un code de refus inconnu de l'émetteur sous-jacent de l'instrument de l'utilisateur. Ce code de résultat peut être utilisé pendant que l'intégrateur détermine un code de résultat plus approprié à utiliser ou négocie l'ajout d'un nouveau code de résultat à cette spécification.

Il est important de noter que ce code de refus représente un déclin réel. Pour Google, il s'agit d'un déclin permanent. Si l'intégrateur renvoie cette valeur, il lui appartient de déterminer la signification réelle du code de l'émetteur et de rembourser l'utilisateur s'il s'avère que le code signifiait en fait SUCCESS.

Si ce code de refus est utilisé pour le même code de refus sous-jacent pendant plus d'un certain nombre de jours, Google le traitera comme un bug et effectuera un suivi en conséquence concernant les éventuelles pénalités contractuelles liées à la correction de bugs.

RawResult

Objet résultat brut.

Représentation JSON
{
  "scope": string,
  "rawCode": string
}
Champs
scope

string

FACULTATIF: champ d'application du brutCode (peut être vide).

rawCode

string

OBLIGATOIRE: code brut de l'intégrateur ou de ses sous-systèmes.

CaptureResultNotificationResultCode

Codes de résultat pour la méthode captureResultNotification.

Enums
UNKNOWN_RESULT Ne définissez jamais cette valeur par défaut.
SUCCESS La notification de résultat de la capture a bien été traitée.