Erişebileceğiniz hesapları filtreleyin

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ın accountName değerine göre filtreleme yapar.
  • capabilities: account kaynağının capabilities değerine göre filtreler (bu alanın kaynakta kullanılamadığını unutmayın). Yalnızca CAN_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ür
    • NOT 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 fazla relationship(...) 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ızca account/123 tarafından sağlanan bir hizmete sahip hesapları döndürecekse providerId = 123 değerini kullanın.
  • accountIdAlias: İlişki için yapılandırılan hesap kimliği takma adı. Bu filtre için bir providerId ayarlanması da gerekir.
  • service(...): İlişki kapsamında sağlanan hizmet. Bir relationship(...) işlevine birden fazla service(...) 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.