Filtra gli account a cui puoi accedere

Puoi utilizzare l'API Merchant Accounts per visualizzare un elenco filtrato degli account a cui hai accesso, inclusi i subaccount. Puoi filtrare in base ai nomi visualizzati e alle relazioni con altri account. Ad esempio, puoi filtrare per gli account con nomi visualizzati contenenti la stringa "store" e con stato di collegamento PENDING per visualizzare tutti i tuoi negozi che non hanno ancora accettato una richiesta di collegamento dell'account.

Per visualizzare tutti i tuoi subaccount, chiama accounts.v1beta.accounts.listSubAccounts.

Per visualizzare un elenco filtrato di tutti gli account a cui hai accesso, inclusi i subaccount e gli account in cui sei un User, chiama accounts.v1beta.accounts.list e specifica i criteri di filtro nel campo filter.

Per informazioni dettagliate sulla sintassi del campo filter, consulta la documentazione di riferimento sulla sintassi dei filtri.

Ecco i tipi di filtri che puoi utilizzare:

Filtri account

Puoi utilizzare i seguenti campi per filtrare a livello di account:

  • accountName: filtra in base al accountName della risorsa account.
  • relationship(...): filtra in base al tipo di relazione dell'account con un altro account. Puoi includere più filtri relationship(...) in una richiesta.

Filtri delle relazioni

Puoi utilizzare la funzione relationship(...) per filtrare in base ai seguenti criteri:

  • providerId: l'ID commerciante del fornitore di servizi. Ad esempio, se il filtro deve restituire solo gli account con un servizio fornito da account/123, utilizza providerId = 123.
  • accountIdAlias: L'alias dell'ID account configurato per la relazione.
  • service(...): il servizio fornito nell'ambito della relazione. Puoi includere più funzioni service(...) in una funzione relationship(...).

Filtri dei servizi

Puoi utilizzare la funzione service(...) per filtrare ulteriormente gli account in base allo stato dei loro rapporti e ai tipi di servizi forniti da questi rapporti:

  • externalAccountId: l'ID account esterno del fornitore di servizi per l'account a cui fornisce un servizio.
  • handshakeState: lo stato di un contratto di servizio tra due account. Accetta i seguenti valori:
    • PENDING
    • APPROVED
  • type: Il tipo di servizio fornito dal fornitore. Accetta i seguenti valori:
    • ACCOUNT_MANAGEMENT Il fornitore gestisce l'account.
    • ACCOUNT_AGGREGATION Il fornitore è un aggregatore dell'account.

Esempi

Ecco alcuni esempi di filtri che puoi provare.

Filtra per gli account con nomi visualizzati contenenti "negozio" e fornitori con ID "123":

accountName = "*store*" AND relationship(providerId = 123)

Filtra per tutti i subaccount dell'account "123":

relationship(providerId = 123 AND service(type = "ACCOUNT_AGGREGATION"))

Filtra per gli account con servizi di gestione dell'account approvati:

relationship(service(handshakeState = "APPROVED" AND type = "ACCOUNT_MANAGEMENT"))

Filtra per gli account con una relazione che ha un alias specifico e la relazione ha un servizio con un ID account esterno specifico.

relationship(accountIdAlias = "alias" AND service(externalAccountId = "extAcctId"))

L'esempio seguente mostra come utilizzare il pacchetto ListAccountsRequest per recuperare un elenco filtrato degli account.

Java

  public static void filterAccounts(Config config) throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the credentials retrieved above.
    AccountsServiceSettings accountsServiceSettings =
        AccountsServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Calls the API and catches and prints any network failures/errors.
    try (AccountsServiceClient accountsServiceClient =
        AccountsServiceClient.create(accountsServiceSettings)) {

      // Filter for accounts with display names containing "store" and a provider with the ID "123":
      String filter = "accountName = \"*store*\" AND relationship(providerId = 123)";

      // Filter for all subaccounts of account "123":
      // String filter2 = "relationship(callerHasAccessToProvider() AND providerId = 123 AND
      // service(type = \"ACCOUNT_AGGREGATION\"))";

      // String filter3 = "relationship(service(handshakeState = \"APPROVED\" AND type =
      // \"ACCOUNT_MANAGEMENT\") AND providerId = 123)";

      ListAccountsRequest request = ListAccountsRequest.newBuilder().setFilter(filter).build();

      System.out.println("Sending list accounts request with filter:");
      ListAccountsPagedResponse response = accountsServiceClient.listAccounts(request);

      int count = 0;

      // Iterates over all rows in all pages and prints the sub-account
      // in each row.
      // `response.iterateAll()` automatically uses the `nextPageToken` and recalls the
      // request to fetch all pages of data.
      for (Account account : response.iterateAll()) {
        System.out.println(account);
        count++;
      }
      System.out.print("The following count of elements were returned: ");
      System.out.println(count);
    } catch (Exception e) {
      System.out.println(e);
    }
  }

Passaggi successivi