Method: associateAccount

Associa l'account del cliente all'elaboratore dei pagamenti allo strumento Google che viene aggiunto.

L'associazione dell'account avviene dopo che l'integratore ha autenticato l'utente. L'associazione avviene tramite una chiamata server-to-server contenente requestId per il flusso di autenticazione associato (authenticationRequestId), un associationId e un googlePaymentToken (GPT). L'elaboratore dei pagamenti deve associare i associationId e i googlePaymentToken all'account del cliente per l'autenticazione. Il GPT viene utilizzato per avviare i pagamenti. associationId viene utilizzato durante le chiamate di riautenticazione per identificare l'account ai fini dell'autenticazione.

Se Google invia un associationId o un googlePaymentToken che l'integratore ha già visto durante un'altra associazione, viene generato un errore.

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

Una richiesta di esempio ha il seguente aspetto:


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 0,
      "revision": 0
    },
    "requestId": "cmVxdWVzdDE",
    "requestTimestamp": "1481899949606"
 },
 "googlePaymentToken": "ZXhhbXBsZSB1bmlxdWUgcGF5bWVudCB0b2tlbiB2YWx1ZQ__",
 "authenticationRequestId": "bnAxdWTydDX==",
 "associationId": "LmddbXBsZSByZWZlcmVuY2UgdG9rZW4gdmFsdWU_",
 "provideUserInformation": true
}

Ecco un esempio di risposta:


  {
  "responseHeader": {
    "responseTimestamp": "1481899949611"
  },
  "paymentIntegratorAssociateAccountId": "xx77df88934hfd",
  "accountId": "1234-5678-91",
  "accountNickname": "***-91",
  "tokenExpirationTime": "0",
  "userInformation": {
    "name": "Example Customer",
    "addressLine": ["123 Main St"],
    "localityName": "Springfield",
    "administrativeAreaName": "CO",
    "postalCodeNumber": "80309",
    "countryCode": "US"
  },
  "result": "SUCCESS"
}

Richiesta HTTP

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

Corpo della richiesta

Il corpo della richiesta contiene dati con la seguente struttura:

Rappresentazione JSON
{
  "requestHeader": {
    object (RequestHeader)
  },
  "provideUserInformation": boolean,
  "googlePaymentToken": string,
  "associationId": string,

  // 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.

provideUserInformation

boolean

REQUIRED: true se vogliamo che l'integratore fornisca l'indirizzo associato a questo account.

googlePaymentToken

string

OBBLIGATORIO: il token che Google utilizzerà per avviare gli acquisti con l'elaboratore dei pagamenti.

Si tratta di una stringa con una lunghezza massima di 100 caratteri.

associationId

string

OBBLIGATORIO: l'identificatore di questa associazione. Questo identificatore è creato da Google e viene inviato durante i flussi di riautenticazione per identificare quale account deve essere autenticato.

Si tratta di una stringa con una lunghezza massima di 100 caratteri.

Campo di unione account_verification.

account_verification può essere solo uno dei seguenti:

authenticationRequestId

string

FACOLTATIVO: requestId della richiesta di autenticazione che ha preceduto questa chiamata. Questo identificatore è stato generato da Google durante il flusso di autenticazione. Questo è presente solo se l'utente ha seguito l'autenticazione delle app per Android, l'autenticazione web o un metodo di autenticazione asincrono che utilizza authenticationResultNotification.

otpVerification

object (OtpVerification)

FACOLTATIVO: i dati necessari per verificare una OTP generata da sendOtp. È presente solo se l'utente ha seguito il percorso sendOtp.

Corpo della risposta

Oggetto risposta per il metodo Account associato.

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

Rappresentazione JSON
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "paymentIntegratorAssociateAccountId": string,
  "tokenExpirationTime": string,
  "accountId": string,
  "userMessage": string,
  "userInformation": {
    object (UserInformation)
  },
  "result": enum (AssociateAccountResultCode),

  // Union field account_names can be only one of the following:
  "accountNickname": string,
  "fullAccountNickname": string
  // End of list of possible types for union field account_names.
}
Campi
responseHeader

object (ResponseHeader)

REQUIRED: intestazione comune per tutte le risposte.

paymentIntegratorAssociateAccountId

string

REQUIRED: questo identificatore è specifico per l'integratore e viene generato da quest'ultimo. Viene utilizzato solo a scopo di debug per identificare questa chiamata. Si tratta dell'identificatore con cui l'integratore conosce la chiamata.

tokenExpirationTime

string (int64 format)

FACOLTATIVO: millisecondi dalla data di scadenza del token. Usa 0 per segnalare che il token non scade.

accountId

string

OBBLIGATORIO: l'ID account dell'utente con l'integratore. Queste informazioni vengono usate per consentire a Google di comprendere il riutilizzo e le relazioni tra account e gli agenti Google per le operazioni con i clienti per aiutare i clienti a diagnosticare i problemi. Questo identificatore deve essere riconoscibile dall'utente (ad esempio, l'utente conosce questo ID perché appare nel suo estratto conto o sul sito web dopo aver eseguito l'accesso all'account).

Questo valore deve essere immutabile per tutta la durata dell'account.

userMessage
(deprecated)

string

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

userInformation

object (UserInformation)

OBBLIGATORIO: informazioni sull'utente che l'integratore conosce e che condividerà con Google in merito a questo cliente. Utilizzato per le informazioni sui rischi e per la precompilazione degli indirizzi.

result

enum (AssociateAccountResultCode)

OBBLIGATORIO: risultato di questa associazione.

Campo di unione account_names.

account_names può essere solo uno dei seguenti:

accountNickname

string

FACOLTATIVO: stringa tramite la quale l'utente conosce l'account a scopo di visualizzazione. Si tratta del suffisso del nickname dell'account. Ad esempio, le ultime quattro cifre di un numero di telefono. Google indicherà nell'interfaccia utente che si tratta solo di un suffisso del nickname.

Questo valore verrà visualizzato nelle UI come nel flusso di acquisto per consentire all'utente di distinguere tra i metodi di pagamento.

fullAccountNickname

string

FACOLTATIVO: stringa tramite la quale l'utente conosce l'account a scopo di visualizzazione. A differenza di accountNickname, questo è il nickname completo dell'account. Ad esempio 56565-56501 per un numero di telefono o sally@sample-email.com per un'identità email.

Questo valore verrà visualizzato nelle UI come nel flusso di acquisto per consentire all'utente di distinguere tra i metodi di pagamento.

UserInformation

Struttura con le informazioni su un utente.

Rappresentazione JSON
{
  "name": string,
  "addressLine": [
    string
  ],
  "localityName": string,
  "administrativeAreaName": string,
  "postalCodeNumber": string,
  "countryCode": string,
  "phone": string,
  "emailAddress": string
}
Campi
name

string

FACOLTATIVO: nome completo del cliente.

addressLine[]

string

FACOLTATIVO: contiene il testo non strutturato dell'indirizzo.

localityName

string

FACOLTATIVO: si tratta di un termine generico, ma in genere si riferisce alla parte di un indirizzo relativa a città/paese. Nelle regioni del mondo in cui le località non sono ben definite o non si adattano bene a questa struttura (ad esempio, Giappone e Cina), lascia il campo localtyName vuoto e utilizza addressLine.

Esempi: città degli Stati Uniti, comune italiano, città del Regno Unito.

administrativeAreaName

string

FACOLTATIVO: suddivisione amministrativa di primo livello del paese. Esempi: stato USA, regione IT, provincia CN, prefettura Giappone.

postalCodeNumber

string

FACOLTATIVO: a prescindere dal nome, i valori postaliCodeNumber sono spesso alfanumerici. Esempi: "94043", "SW1W", "SW1W 9TQ".

countryCode

string

FACOLTATIVO: il codice paese dell'indirizzo del cliente, che dovrebbe essere ISO-3166-1 Alpha-2.

phone

string

FACOLTATIVO: numero di telefono del cliente.

emailAddress

string

FACOLTATIVO: l'indirizzo email del cliente.

AssociateAccountResultCode

Codici risultato per account associato.

Enum
UNKNOWN_RESULT Non impostare mai questo valore predefinito.
SUCCESS Associazione riuscita.
USER_AUTHENTICATION_FAILED L'autenticazione utente non è riuscita anche se è stato restituito il bundle di autenticazione dell'account.
NOT_ELIGIBLE L'account dell'utente non è idoneo per questo servizio.
OTP_NOT_MATCHED La OTP non corrisponde a ciò che ha inviato l'integratore.
OTP_ALREADY_USED OTP già utilizzata.
OTP_LIMIT_REACHED L'utente ha richiesto o provato a verificare troppe OTP.
OTP_EXPIRED OTP scaduta.