Method: captureResultNotification

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

La valeur captureResult étant idempotente pour ce captureRequestId, elle ne peut pas être modifiée par un appel ultérieur à cette méthode.

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

Les réponses à cette requête peuvent être vides si cette méthode ne renvoie pas de réponse HTTP 200. Le corps de la réponse est vide dans les situations où un élément ErrorResponse avec une description claire pourrait être utilisé pour aider un pirate informatique à comprendre l'identifiant de compte d'intégrateur de paiement d'autres intégrateurs. Dans ces situations, lorsque 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 peut être validée, des informations supplémentaires sur l'erreur seront renvoyées dans le corps de la réponse.

Exemple de requête:


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

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)

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

paymentIntegratorAccountId

string

OBLIGATOIRE: identifiant de compte d'intégrateur de paiement sur lequel la capture a eu lieu.

captureRequestId

string

REQUIRED: identifiant unique pour cette transaction. Il s'agit de l'élément 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 de 100 caractères au maximum, 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 qui permet à l'intégrateur de connaître cette transaction.

Pour plus de commodité, cet identifiant est inclus dans les informations de paiement

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)

REQUIRED: en-tête commun pour toutes les réponses.

result

enum (CaptureResultNotificationResultCode)

REQUIRED: résultat de cet appel.

CaptureResultResult

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)

REQUIRED: code de résultat de cette capture.

rawResult

object (RawResult)

FACULTATIF: résultat brut de cette capture. Permet de guider le moteur de gestion des risques et les analyses de Google. Dans les situations de mappage de code refusé, les données sont parfois perdues. L'intégrateur peut choisir de donner à Google un code brut. Par exemple, une passerelle de carte de crédit (l'intégrateur) peut utiliser ce champ pour indiquer à Google le code de refus exact reçu par le réseau VISA. Dans ce cas, le scope serait "visa" et le rawCode correspondrait à ce que le réseau VISA renvoyait.

Cette valeur est obligatoire si l'élément 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 la valeur de captureResultCode est CHARGE_EXCEEDS_TRANSACTION_LIMIT, il s'agit de la valeur de la transaction maximale autorisée. Il est utilisé pour envoyer des messages structurés aux utilisateurs et analyser le taux de refus.

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

transactionMinLimit

string (Int64Value format)

FACULTATIF: si la valeur de captureResultCode est CHARGE_UNDER_TRANSACTION_LIMIT, il s'agit de la valeur de la transaction minimale autorisée. Il est utilisé pour envoyer des messages structurés aux utilisateurs et analyser le taux de refus.

Cette quantité est de 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 disponible actuellement dans le compte de l'utilisateur (en micros). Il est utilisé pour les messages structurés destinés aux utilisateurs.

Cette valeur doit être indiquée dans la même devise que currencyCode dans la requête.

CaptureResultCode

Codes de résultat pour une capture.

Enums
UNKNOWN_RESULT Ne définissez jamais cette valeur par défaut.
SUCCESS La capture a bien été effectuée.
CHARGE_UNDER_TRANSACTION_LIMIT Le montant de capture demandé n'atteint pas le montant minimal par transaction de l'intégrateur. Si ce code est utilisé, renseignez le champ transactionMinLimit en indiquant le montant minimal de transaction pour les 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 ce code est utilisé, renseignez le champ transactionMaxLimit avec la limite de transaction pour les messages destinés aux utilisateurs.
CHARGE_EXCEEDS_DAILY_LIMIT Impossible d'utiliser ce compte pour les achats, car il a dépassé sa limite quotidienne.
CHARGE_EXCEEDS_MONTHLY_LIMIT Le compte de l'utilisateur ne peut pas être utilisé pour effectuer des achats pour le moment, car il a dépassé sa limite mensuelle.
INSUFFICIENT_FUNDS Ce compte ne dispose pas de suffisamment de fonds 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 associé à l'intégrateur a été clôturé. Cette valeur renvoyée entraînera la fermeture de l'instrument de l'utilisateur avec Google. L'utilisateur devra ajouter un nouvel instrument.
ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER Le compte de l'utilisateur associé à l'intégrateur a été clôturé. Il risque d'être piraté. Cette valeur renvoyée entraînera la fermeture de l'instrument de l'utilisateur avec Google. L'utilisateur devra ajouter un nouvel instrument.
ACCOUNT_CLOSED_FRAUD Le compte de l'utilisateur soumis à l'intégrateur a été clôturé pour cause de fraude. Cette valeur renvoyée entraînera la fermeture de l'instrument de l'utilisateur avec Google. L'utilisateur devra ajouter un nouvel instrument.
ACCOUNT_ON_HOLD Le compte de l'utilisateur est bloqué.
OTP_NOT_MATCHED Le mot de passe à usage unique ne correspond pas à celui envoyé 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 à récupérer les fonds des utilisateurs. Google considérera ce refus comme un état final. Par conséquent, l'intégrateur doit s'assurer que les fonds de l'utilisateur ne sont pas capturés ultérieurement ou que l'utilisateur est automatiquement remboursé si la capture a abouti.
INVALID_PIN L'utilisateur a fourni un code incorrect.
OS_LOCK_FAILED Ce parcours de paiement requiert un verrouillage de l'OS, et l'utilisateur n'a pas réussi à déverrouiller l'appareil.
PIN_ENTRY_ATTEMPTS_EXHAUSTED Ce processus de paiement nécessite la saisie du code PIN de l'utilisateur. L'utilisateur n'a pas saisi suffisamment de codes à la fin de nouvelles tentatives.
USER_EXITED_PAYMENT_FLOW L'utilisateur a annulé l'ensemble de la tentative de paiement (lors du verrouillage de l'OS ou de l'écran de saisie du code).
MONTHLY_FREQUENCY_LIMIT_EXCEEDED Le compte de l'utilisateur ne peut pas être utilisé pour effectuer des achats pour le moment, car il a dépassé sa limite mensuelle de tentatives de transaction.
DECLINED_BY_ISSUER

Ce code de refus ne doit jamais être utilisé à l'état stable. Il s'agit d'un code collecteur temporaire utilisé 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é à employer ou négocie l'ajout d'un code de résultat à cette spécification.

Il est important de noter que ce code de refus est un refus réel. Pour Google, il s'agit d'un refus définitif. Si l'intégrateur renvoie ce code, c'est à lui 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 signifie 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 traite comme un bug et le suit en fonction des pénalités contractuelles liées à la correction des bugs.

Résultat brut

Objet de résultat brut.

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

string

FACULTATIF: le champ d'application du code brut peut être vide.

rawCode

string

REQUIRED: code brut de l'intégrateur ou des sous-systèmes qu'il contient.

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 capture a bien été traitée.