Alt hesaplar dahil erişebileceğiniz hesapların filtrelenmiş listesini görüntülemek için Merchant Accounts API'yi kullanabilirsiniz. Bunları görünen ada ve diğer hesaplarla olan ilişkilerine göre filtreleyebilirsiniz.
Örneğin, hesap bağlantısı isteğini kabul etmeyen tüm mağazalarınızı görmek için "store"
dizesini içeren ve bağlantı durumu PENDING
olan görünen adlara sahip hesapları filtreleyebilirsiniz.
Temel filtreleme
Tüm alt hesaplarınızı görüntülemek için accounts.v1beta.accounts.listSubAccounts
numaralı telefonu arayın.
Alt hesaplar ve User
olarak atandığınız tüm hesaplar dahil olmak üzere erişiminiz olan tüm hesapların filtrelenmiş listesini görüntülemek için accounts.v1beta.accounts.list
işlevini çağırın ve filter
alanında filtre ölçütlerinizi belirtin.
filter
alanının söz dizimi hakkında ayrıntılı bilgi için filtre söz dizimi referansına bakın.
Hesap filtreleri
account
düzeyinde filtrelemek için aşağıdaki alanları kullanabilirsiniz:
accountName
:account
kaynağınınaccountName
değerine göre filtreleme yapar.capabilities
:account
kaynağınıncapabilities
değerine göre filtreler (bu alanın kaynakta kullanılamadığını unutmayın). YalnızcaCAN_UPLOAD_PRODUCTS
özelliği desteklenir. Bu alan olumsuzlama işlemini destekler ve koleksiyon söz dizimini kullanır. Örneğin:capabilities:CAN_UPLOAD_PRODUCTS
, ürün yükleyebilecek hesapları döndürür-capabilities:CAN_UPLOAD_PRODUCTS
, ürün yükleyemeyen hesaplar döndürürNOT capabilities:CAN_UPLOAD_PRODUCTS
, ürün yükleyemeyen hesapları döndürür
relationship(...)
: Hesabın başka bir hesapla ilişki türüne göre filtreler. Bir isteğe birden fazlarelationship(...)
filtresi ekleyebilirsiniz.
İlişki filtreleri
AccountRelationship
, Account
kaynağının alt öğesidir. Yalnızca accountIdAlias
alanı değiştirilebilir. Bu alan, sağlayıcının bir hesap için takma ad belirtmesine (hesaba referans vermenin alternatif bir yolu) olanak tanır. Bir Merchant Center hesabı ile üçüncü taraf arasında hizmet oluşturmak, bu kaynağın bir örneğini oluşturur.
Aşağıdaki ölçütlere göre filtrelemek için relationship(...)
işlevini kullanabilirsiniz:
providerId
: Servis sağlayıcının satıcı kimliği. Örneğin, filtre yalnızcaaccount/123
tarafından sağlanan bir hizmete sahip hesapları döndürecekseproviderId = 123
değerini kullanın.accountIdAlias:
İlişki için yapılandırılan hesap kimliği takma adı. Bu filtre için birproviderId
ayarlanması da gerekir.service(...)
: İlişki kapsamında sağlanan hizmet. Birrelationship(...)
işlevine birden fazlaservice(...)
işlevi ekleyebilirsiniz.
Hizmet filtreleri
Hesapları, ilişkilerinin durumuna ve bu ilişkilerin sağladığı hizmet türlerine göre daha ayrıntılı bir şekilde filtrelemek için service(...)
işlevini kullanabilirsiniz:
externalAccountId
: Hizmet sağlayıcının, hizmet sunduğu hesap için harici hesap kimliği.handshakeState
: İki hesap arasındaki hizmet sözleşmesinin durumu. Aşağıdaki değerleri kabul eder:PENDING
APPROVED
type:
Sağlayıcı tarafından verilen hizmet türü. Aşağıdaki değerleri kabul eder:ACCOUNT_MANAGEMENT
Hesabı sağlayıcı yönetir.ACCOUNT_AGGREGATION
Sağlayıcı, hesabın toplayıcısıdır.
Örnekler
Deneyebileceğiniz bazı filtre örnekleri aşağıda verilmiştir.
"store" ifadesini içeren görünen adlara ve "123" kimliğine sahip sağlayıcılara göre filtreleme:
accountName = "*store*" AND relationship(providerId = 123)
"Mağaza" içeren görünen adlara sahip ve ürün yükleyemeyen hesapları filtreleyin:
accountName = "*store*" AND -capabilities:CAN_UPLOAD_PRODUCTS
"123" hesabının tüm alt hesaplarını filtreleme:
relationship(providerId = 123 AND service(type = "ACCOUNT_AGGREGATION"))
Onaylanmış hesap yönetimi hizmetleri olan hesapları filtreleyin:
relationship(service(handshakeState = "APPROVED" AND type = "ACCOUNT_MANAGEMENT"))
Belirli bir takma adı olan ve ilişkide belirli bir harici hesap kimliği olan bir hizmete sahip hesapları filtreleyin.
relationship(accountIdAlias = "alias" AND service(externalAccountId = "extAcctId"))
Aşağıdaki örnekte, hesapların filtrelenmiş bir listesini almak için ListAccountsRequest
paketini nasıl kullanabileceğiniz gösterilmektedir.
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1beta.Account;
import com.google.shopping.merchant.accounts.v1beta.AccountsServiceClient;
import com.google.shopping.merchant.accounts.v1beta.AccountsServiceClient.ListAccountsPagedResponse;
import com.google.shopping.merchant.accounts.v1beta.AccountsServiceSettings;
import com.google.shopping.merchant.accounts.v1beta.ListAccountsRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to filter the accounts the user making the request has access to. */
public class FilterAccountsSample {
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(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);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
filterAccounts(config);
}
}
Sırada ne var?
- Hesapları filtreleme hakkında daha fazla bilgi için Filtre söz dizimi başlıklı makaleyi inceleyin.