Method: capture

Avvia il trasferimento di denaro tra l'account di un cliente presso Google e l'elaboratore dei pagamenti. La combinazione di requestId nell'intestazione e paymentIntegratorAccountId è la chiave di idempotenza e identifica in modo univoco questa transazione. Tutte le mutazioni di questa transazione (rimborsi) completano il valore requestId nel campo captureRequestId.

Se l'endpoint rileva un errore durante l'elaborazione della richiesta, il corpo della risposta da questo endpoint deve essere di tipo ErrorResponse.

Ecco un esempio di richiesta:


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 0,
      "revision": 0
    },
    "requestId": "bWVyY2hhbnQgdHJhbnNhY3Rpb24gaWQ",
    "requestTimestamp": "1502220196077"
  },
  "paymentIntegratorAccountId": "InvisiCashUSA_USD",
  "googlePaymentToken": "ZXhhbXBsZSB1bmlxdWUgcGF5bWVudCB0b2tlbiB2YWx1ZQ",
  "transactionDescription": "Google - Music",
  "currencyCode": "INR",
  "amount": "728000000",
  "captureContext": {}
}

Ecco un esempio di risposta:


{
  "responseHeader": {
    "responseTimestamp": "1481900013178"
  },
  "result": "SUCCESS",
  "paymentIntegratorTransactionId": "aW50ZWdyYXRvciB0cmFuc2FjdGlvbiBpZA"
}

Richiesta HTTP

POST https://www.integratorhost.example.com/v1/capture

Corpo della richiesta

Il corpo della richiesta contiene dati con la seguente struttura:

Rappresentazione JSON
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "transactionDescription": string,
  "currencyCode": string,
  "amount": string,
  "captureContext": {
    object (CaptureContext)
  },

  // Union field fopDetails can be only one of the following:
  "googlePaymentToken": string,
  "mandateDetails": {
    object (MandateDetails)
  },
  "mandateWithNotificationDetails": {
    object (MandateWithNotificationDetails)
  }
  // End of list of possible types for union field fopDetails.

  // Union field account_verification can be only one of the following:
  "authenticationRequestId": string,
  "otpVerification": {
    object (OtpVerification)
  }
  // End of list of possible types for union field account_verification.
}
Campi
requestHeader

object (RequestHeader)

REQUIRED: intestazione comune per tutte le richieste.

paymentIntegratorAccountId

string

REQUIRED: si tratta dell'identificatore dell'account dell'integratore pagamenti che identifica i vincoli contrattuali relativi a questa transazione.

transactionDescription

string

OBBLIGATORIO: questa è la descrizione della transazione che può essere inserita nell'estratto conto del cliente. Localizzato in userLocale trovato in requestHeader. Questo formato può essere modificato senza preavviso e non deve mai essere analizzato.

currencyCode

string

OBBLIGATORIO: codice valuta ISO 4217 di tre lettere

amount

string (Int64Value format)

OBBLIGATORIO: importo dell'acquisto, in micro dell'unità di valuta.

captureContext

object (CaptureContext)

REQUIRED: contesto relativo all'acquisizione.

Campo unione fopDetails. REQUIRED: dettagli della forma di pagamento per questa transazione di acquisizione. fopDetails può essere solo uno dei seguenti:
googlePaymentToken

string

Token che entrambe le società utilizzeranno per identificare l'account per gli acquisti reciproci.

mandateDetails

object (MandateDetails)

Dettagli di pagamento specifici per i mandati.

mandateWithNotificationDetails

object (MandateWithNotificationDetails)

Dettagli di pagamento specifici per i mandati, in cui è richiesto un upcomingTransactionNotification.

Campo unione account_verification.

account_verification può essere solo uno dei seguenti:

authenticationRequestId

string

FACOLTATIVO: requestId della richiesta di autenticazione associata. Se non è presente, non sarà possibile associare a questa acquisizione nessuna autenticazione.

Se è presente, l'utente è stato autenticato immediatamente prima della chiamata oppure è stato autenticato quando è stato configurato un calendario dei pagamenti automatico.

otpVerification

object (OtpVerification)

FACOLTATIVO: dati necessari per verificare una OTP generata in data sendOtp. Presente solo se l'utente ha seguito il percorso sendOtp.

Corpo della risposta

Oggetto di risposta per il metodo di acquisizione.

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

Rappresentazione JSON
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "paymentIntegratorTransactionId": string,
  "userMessage": string,
  "result": enum (CaptureResultCode),
  "rawResult": {
    object (RawResult)
  },
  "transactionLimit": string,
  "currentBalance": string
}
Campi
responseHeader

object (ResponseHeader)

REQUIRED: intestazione comune per tutte le risposte.

paymentIntegratorTransactionId

string

FACOLTATIVO: questo identificatore è specifico per l'integratore e viene generato dall'integratore. Si tratta dell'identificatore da cui l'integratore conosce questa transazione.

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

userMessage
(deprecated)

string

OBSOLETO: una descrizione del risultato, da mostrare all'utente se non è SUCCESS.

result

enum (CaptureResultCode)

REQUIRED: il risultato di questa acquisizione.

rawResult

object (RawResult)

FACOLTATIVO: risultato non elaborato di questa acquisizione. Utilizzato per fornire informazioni al motore di analisi e al motore di gestione dei rischi di Google. Nei casi in cui la mappatura del codice viene rifiutata, i dati a volte vanno persi. L'integratore può scegliere di fornire a Google un codice non elaborato. Ad esempio, un gateway della carta di credito (l'integratore) può utilizzare questo campo per comunicare a Google l'esatto codice di rifiuto ricevuto dalla rete VISA. In questo caso, il scope è "visto" e rawCode sarebbe qualsiasi cosa restituita dalla rete VISA.

Questo valore è obbligatorio se result non è SUCCESS.

transactionLimit

string (Int64Value format)

FACOLTATIVO: se Risultato è CHARGE_EXCEEDS_TRANSACTION_LIMIT, questo è l'importo massimo che l'utente può spendere per una transazione (in micro). Viene utilizzato per la messaggistica strutturata rivolta agli utenti e l'analisi del tasso di rifiuto.

Deve essere un limite relativo al currencyCode nella richiesta.

currentBalance

string (Int64Value format)

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

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

MandateDetails

Dettagli sul mandato da cui acquisire l'immagine.

Rappresentazione JSON
{
  "mandateId": string
}
Campi
mandateId

string

REQUIRED: l'ID mandato generato da Google che è stato inviato durante la chiamata createMandate.

MandateWithNotificationDetails

Dettagli sul mandato da cui acquisire l'app, insieme ai dettagli delle notifiche richieste.

Rappresentazione JSON
{
  "mandateId": string,
  "upcomingTransactionNotificationId": string
}
Campi
mandateId

string

REQUIRED: l'ID mandato generato da Google che è stato inviato durante la chiamata createMandate.

upcomingTransactionNotificationId

string

REQUIRED: il requestId della chiamata upcomingTransactionNotification, effettuato per pre-inviare la notifica della transazione.

CaptureContext

Questo oggetto fornisce il contesto relativo a come è stata richiesta l'acquisizione.

Rappresentazione JSON
{
  "userIpAddress": string
}
Campi
userIpAddress

string

FACOLTATIVO: l'indirizzo IP del dispositivo dell'utente se l'acquisto è stato effettuato da un utente nella sessione. Se l'utente non era nella sessione, il campo sarà vuoto. Se il contratto specifico non prevede la necessità di questo campo, il campo è sempre vuoto.

CaptureResultCode

Codici risultato per l'acquisizione.

Enum
UNKNOWN_RESULT Non impostare mai questo valore predefinito.
SUCCESS Acquisizione di successo, consegna del prodotto.
CHARGE_EXCEEDS_TRANSACTION_LIMIT Il valore amount di questa richiesta di acquisizione supera il limite per transazione. Se viene usato questo codice, compila il campo transactionLimit ai fini della messaggistica per gli utenti.
CHARGE_EXCEEDS_DAILY_LIMIT Al momento questo account non può essere utilizzato per acquisti perché ha superato i limiti giornalieri.
CHARGE_EXCEEDS_MONTHLY_LIMIT Al momento questo account non può essere utilizzato per effettuare acquisti perché ha superato i limiti mensili.
CHARGE_UNDER_LIMIT Il valore amount di questa richiesta di acquisizione non soddisfa l'importo minimo delle transazioni.
INSUFFICIENT_FUNDS Questo account non dispone di fondi sufficienti per garantire l'acquisizione.
ACCOUNT_DOES_NOT_SUPPORT_CURRENCY Questo account non supporta la valuta richiesta.
ACCOUNT_CLOSED

L'account dell'utente presso l'integratore è stato chiuso.

Se restituisci questo valore, lo strumento dell'utente verrà chiuso con Google. L'utente sarà costretto ad aggiungere un nuovo strumento ripetendo il flusso di associazione.

ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER

L'account dell'utente con l'integratore è stato chiuso e si è verificata una presenza di presunte violazioni dell'account.

Se restituisci questo valore, lo strumento dell'utente verrà chiuso con Google. L'utente sarà costretto ad aggiungere un nuovo strumento ripetendo il flusso di associazione.

ACCOUNT_ON_HOLD L'account è sospeso.
ACCOUNT_CLOSED_FRAUD

L'account dell'utente presso l'integratore è stato chiuso a causa di attività fraudolente.

Se restituisci questo valore, lo strumento dell'utente verrà chiuso con Google. L'utente sarà costretto ad aggiungere un nuovo strumento ripetendo il flusso di associazione.

GOOGLE_PAYMENT_TOKEN_INVALIDATED_BY_USER

L'account è attivo, ma il GPT è stato invalidato dall'utente nell'integratore.

Se restituisci questo valore, lo strumento dell'utente verrà chiuso con Google. L'utente sarà costretto ad aggiungere un nuovo strumento ripetendo il flusso di associazione.

TOKEN_REFRESH_REQUIRED Per restituire questo valore, l'utente deve eseguire un flusso di aggiornamento.
OTP_NOT_MATCHED L'OTP non corrispondeva a quanto inviato dall'integratore.
OTP_ALREADY_USED OTP già usata.
RISK_DECLINED

La transazione è stata rifiutata a causa di un controllo del rischio da parte dell'integratore.

Si tratta di un errore permanente per il pagamento, ma non comporta la chiusura dello strumento dell'utente presso Google.

NO_GOOD_FUNDING_SOURCE_AVAILABLE Nell'account dell'utente non è configurata alcuna fonte di pagamento attiva in grado di pagare la transazione.
FUNDING_SOURCE_UNAVAILABLE

L'emittente sottostante o la fonte di fondi non sono disponibili. Se un nuovo tentativo li ritenta, l'operazione non andrà a buon fine.

Google riproverà i pagamenti quando un partner restituisce un codice di risposta 4xx o 5xx. Per questo motivo, in genere i partner dovrebbero restituire uno di questi codici di risposta se un nuovo tentativo di questo stesso pagamento può andare a buon fine quando la fonte di fondi sottostante sarà di nuovo disponibile. Tuttavia, se per motivi tecnici il tentativo di Google di riprovare a eseguire il pagamento continuerà a non andare a buon fine, il partner può restituire "FUNDING_SOURCE_UNAVAILABLE" per comunicare a Google che non deve riprovare a eseguire lo stesso pagamento.

Nota: Google potrebbe comunque riprovare a eseguire questo pagamento, ma solo con un ID richiesta diverso, ma questa richiesta di pagamento verrà contrassegnata come Rifiutata.

MANDATE_NOT_ACTIVE Il mandato utilizzato per questa acquisizione non è più attivo. Questo valore restituito causerà la chiusura dello strumento di mandato dell'utente con Google.
UPCOMING_TRANSACTION_NOTIFICATION_EXPIRED La notifica inviata all'utente per il pagamento di un mandato ricorrente è scaduta.