Method: captureResultNotification

Comunica a Google il risultato dell'acquisizione dopo che è stata effettuata una chiamata metodo capture o asynchronousCapture.

Il valore captureResult è idempotente per questo captureRequestId, pertanto il suo valore non può essere modificato da una chiamata successiva a questo metodo.

Se si verifica un errore durante l'elaborazione della richiesta, la risposta di questo endpoint sarà di tipo ErrorResponse.

Le risposte a questa query potrebbero essere vuote se questo metodo non restituisce un codice HTTP 200. Il corpo della risposta è vuoto nel caso in cui un ErrorResponse con una descrizione chiara possa essere utilizzato per aiutare un utente malintenzionato a comprendere l'identificatore di account integratore di pagamento di altri integratori. In questi casi, in cui la chiave di firma non corrisponde, non è stato trovato l'identificatore dell'integratore dei pagamenti o la chiave di crittografia era sconosciuta, questo metodo restituirà un errore HTTP 404 con un corpo vuoto. Se è stato possibile verificare la firma della richiesta, nel corpo della risposta verranno restituite ulteriori informazioni sull'errore.

Una richiesta di esempio ha il seguente aspetto:


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

Un esempio di risposta è:


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

Richiesta HTTP

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

Corpo della richiesta

Il corpo della richiesta contiene dati con la seguente struttura:

Rappresentazione JSON
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "captureRequestId": string,
  "captureResult": {
    object (CaptureResult)
  },
  "paymentIntegratorTransactionId": string
}
Campi
requestHeader

object (RequestHeader)

REQUIRED: intestazione comune per tutte le richieste.

paymentIntegratorAccountId

string

REQUIRED: identificatore dell'account integrato del pagamento sul quale si è verificato l'acquisizione.

captureRequestId

string

REQUIRED: un identificatore univoco per questa transazione. Questo è l'requestId generato da Google durante la chiamata capture o asynchronousCapture a cui è associata questa richiesta.

Si tratta di una stringa con una lunghezza massima di 100 caratteri e contiene solo i caratteri "a-z", "A-Z", "0-9", ":", "-" e "_".

captureResult

object (CaptureResult)

REQUIRED: risultato di questo video clip o screenshot.

paymentIntegratorTransactionId

string

FACOLTATIVO: questo identificatore è specifico per l'integratore e viene generato dall'integratore. Si tratta dell'identificatore noto all'integratore per la transazione.

Per praticità, questo identificatore è incluso nei dettagli di versamento

Corpo della risposta

Oggetto della risposta per il metodo captureResultNotification.

In caso di esito positivo, il corpo della risposta contiene dati con la seguente struttura:

Rappresentazione JSON
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "result": enum (CaptureResultNotificationResultCode)
}
Campi
responseHeader

object (ResponseHeader)

REQUIRED: intestazione comune per tutte le risposte.

result

enum (CaptureResultNotificationResultCode)

REQUIRED: risultato della chiamata.

RisultatoAcquisizione

Informazioni sul risultato finale di un'acquisizione.

Rappresentazione 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.
}
Campi
captureResultCode

enum (CaptureResultCode)

REQUIRED: codice risultato di questo video clip o screenshot.

rawResult

object (RawResult)

FACOLTATIVO: risultato non elaborato di questo video clip o screenshot. Utilizzato per informare il motore di analisi e il rischio del rischio di Google. In situazioni di mappatura con codice rifiutato, a volte i dati vengono persi. L'integratore può scegliere di fornire a Google un codice non elaborato. Ad esempio, il gateway di una carta di credito (l'integratore) potrebbe utilizzare questo campo per comunicare a Google l'esatto codice di rifiuto ricevuto dalla rete VISA. In questo caso, scope sarà "visto" e rawCode sarà qualsiasi cosa restituisce la rete VISA.

Questo valore è obbligatorio se result non è SUCCESS.

Campo unione FailureDetail.

FailureDetail può essere solo uno dei seguenti:

transactionMaxLimit

string (Int64Value format)

FACOLTATIVO: se captureResultCode è CHARGE_EXCEEDS_TRANSACTION_LIMIT, questo è il valore della transazione massima consentita. Viene utilizzato per l'analisi strutturata e rivolta agli utenti e per l'analisi della percentuale di rifiuto.

Questo importo è pari ai micro la stessa currencyCode della chiamata al metodo capture o asynchronousCapture originale.

transactionMinLimit

string (Int64Value format)

FACOLTATIVO: se captureResultCode è CHARGE_UNDER_TRANSACTION_LIMIT, questo è il valore della transazione minima consentita. Viene utilizzato per l'analisi strutturata e rivolta agli utenti e per l'analisi della percentuale di rifiuto.

Questo importo è pari ai micro la stessa currencyCode della chiamata al metodo capture o asynchronousCapture originale.

currentBalance

string (Int64Value format)

OPTIONAL: se il risultato è INSUFFICIENT_FUNDS, questo è il saldo attuale disponibile nell'account dell'utente (in micro). Viene utilizzato per la messaggistica strutturata e rivolta agli utenti.

Questo valore deve essere nella stessa valuta di currencyCode nella richiesta.

Codice risultato Capture

Codici risultato per uno screenshot o un video clip.

Enum
UNKNOWN_RESULT Non impostare questo valore predefinito.
SUCCESS Acquisizione riuscita.
CHARGE_UNDER_TRANSACTION_LIMIT L'importo richiesto per l'acquisizione non soddisfa l'importo minimo per integratore dell'integratore. Se questo codice viene utilizzato, compila il campo transactionMinLimit con l'importo minimo della transazione per scopi di messaggistica dell'utente.
CHARGE_EXCEEDS_TRANSACTION_LIMIT L'importo dell'acquisizione richiesto supera il limite massimo per transazione dell'integratore. Se questo codice viene utilizzato, compila il campo transactionMaxLimit con il limite di transazioni per i messaggi dell'utente.
CHARGE_EXCEEDS_DAILY_LIMIT L'account utente non può essere utilizzato per gli acquisti in questo momento perché ha superato il limite giornaliero.
CHARGE_EXCEEDS_MONTHLY_LIMIT L'account utente non può essere utilizzato per gli acquisti in questo momento perché ha superato il limite mensile.
INSUFFICIENT_FUNDS Questo account non dispone di fondi sufficienti per garantire questo screenshot.
SUSPECTED_FRAUD L'integratore ha motivo di sospettare che questa transazione sia fraudolenta.
ACCOUNT_CLOSED L'account dell'utente in possesso dell'integratore è stato chiuso. Questo valore restituito comporterà la chiusura dello strumento dell'utente con Google. L'utente sarà costretto ad aggiungere un nuovo strumento.
ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER L'account dell'utente con l'integratore è stato chiuso, il sospetto sospetto è avvenuto sull'account. Questo valore restituito comporterà la chiusura dello strumento dell'utente con Google. L'utente sarà costretto ad aggiungere un nuovo strumento.
ACCOUNT_CLOSED_FRAUD L'account dell'utente in possesso dell'integratore è stato chiuso a causa di attività fraudolente. Questo valore restituito comporterà la chiusura dello strumento dell'utente con Google. L'utente sarà costretto ad aggiungere un nuovo strumento.
ACCOUNT_ON_HOLD L'account dell'utente è sospeso.
OTP_NOT_MATCHED OTP non corrisponde a quello inviato dall'integratore.
OTP_ALREADY_USED OTP già usata.
CAPTURE_REQUEST_EXPIRED L'integratore ha impiegato troppo tempo per acquisire i fondi dell'utente. Google considera questo rifiuto come uno stato finale, pertanto l'integratore deve assicurarsi che i fondi dell'utente non vengano acquisiti in un secondo momento o che l'utente riceva automaticamente il rimborso, in caso di esito positivo dell'acquisizione.
INVALID_PIN L'utente ha fornito un PIN non valido.
OS_LOCK_FAILED Questo flusso di pagamento richiede una verifica del blocco del sistema operativo e l'utente non è riuscito a sbloccare il dispositivo.
PIN_ENTRY_ATTEMPTS_EXHAUSTED Questo flusso di pagamento richiede l'inserimento del PIN dell'utente. L'utente non è riuscito a effettuare l'inserimento del PIN un numero sufficiente di volte in cui ha esaurito i tentativi.
USER_EXITED_PAYMENT_FLOW L'utente ha annullato l'intero tentativo di pagamento (tramite il blocco del sistema operativo o la schermata di inserimento del PIN).
MONTHLY_FREQUENCY_LIMIT_EXCEEDED L'account utente non può essere utilizzato per gli acquisti in questo momento perché ha superato il limite di tentativi mensile di transazione.
DECLINED_BY_ISSUER

Questo codice di rifiuto non deve mai essere utilizzato nello stato stazionario. È inteso come un codice catch-all temporaneo da utilizzare quando l'integratore rileva un codice di rifiuto sconosciuto dall'emittente sottostante dello strumento dell'utente. Questo codice risultato può essere utilizzato mentre l'integratore determina un codice risultato più appropriato da usare o negozia l'aggiunta di un nuovo codice risultato a questa specifica.

È importante sottolineare che questo codice è molto reale. Per Google è un calo permanente. Se l'integratore restituisce questo, spetta a te tracciare il significato reale del codice dell'emittente e rimborsare l'utente se, in realtà, il codice significava SUCCESS.

Se questo codice di rifiuto viene utilizzato per lo stesso codice di rifiuto per più di un determinato numero di giorni, Google lo considera come un bug e lo monitora di conseguenza per eventuali sanzioni contrattuali relative alla correzione dei bug.

Risultato non elaborato

Oggetto risultato non elaborato.

Rappresentazione JSON
{
  "scope": string,
  "rawCode": string
}
Campi
scope

string

OPTIONAL: l'ambito di rawCode può essere vuoto.

rawCode

string

REQUIRED: codice non elaborato dell'integratore o dei sottosistemi al suo interno.

CodiceRisultatoRisultatoCedenza.

Codici dei risultati per il metodo captureResultNotification.

Enum
UNKNOWN_RESULT Non impostare questo valore predefinito.
SUCCESS La notifica del risultato dell'acquisizione è stata elaborata correttamente.