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 alaccountName
della risorsaaccount
.relationship(...)
: filtra in base al tipo di relazione dell'account con un altro account. Puoi includere più filtrirelationship(...)
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 daaccount/123
, utilizzaproviderId = 123
.accountIdAlias:
L'alias dell'ID account configurato per la relazione.service(...)
: il servizio fornito nell'ambito della relazione. Puoi includere più funzioniservice(...)
in una funzionerelationship(...)
.
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
- Per saperne di più su come filtrare gli account, consulta la sintassi dei filtri.