حساب هایی را که می توانید به آنها دسترسی داشته باشید فیلتر کنید

می‌توانید از API حساب‌های تجاری برای مشاهده فهرست فیلترشده حساب‌هایی که می‌توانید به آنها دسترسی داشته باشید، از جمله حساب‌های فرعی، استفاده کنید. می‌توانید آن‌ها را با نام نمایشی و روابطشان با حساب‌های دیگر فیلتر کنید.

به عنوان مثال، برای دیدن همه فروشگاه‌های خود که درخواست پیوند حساب را نپذیرفته‌اند، می‌توانید حساب‌هایی با نام‌های نمایشی حاوی رشته "store" و وضعیت پیوند در PENDING را فیلتر کنید.

فیلتر اولیه

برای مشاهده همه حساب‌های فرعی خود، با accounts.v1beta.accounts.listSubAccounts تماس بگیرید.

برای مشاهده یک لیست فیلتر شده از همه حساب‌هایی که به آنها دسترسی دارید، از جمله حساب‌های فرعی و هر حسابی که شما را به عنوان User دارد، با accounts.v1beta.accounts.list تماس بگیرید و معیارهای فیلتر خود را در قسمت filter مشخص کنید.

برای جزئیات بیشتر در مورد نحو فیلد filter ، به مرجع نحو فیلتر مراجعه کنید.

فیلترهای حساب

می توانید از فیلدهای زیر برای فیلتر کردن در سطح account استفاده کنید:

  • accountName : بر اساس accountName منبع account فیلتر می شود.
  • capabilities : بر اساس capabilities منبع account فیلتر می شود (توجه داشته باشید که این قسمت در خود منبع موجود نیست). فقط قابلیت CAN_UPLOAD_PRODUCTS پشتیبانی می شود. این فیلد از نفی پشتیبانی می کند و از نحو مجموعه استفاده می کند. به عنوان مثال:
    • capabilities:CAN_UPLOAD_PRODUCTS حساب هایی را برمی گرداند که می توانند محصولات را آپلود کنند
    • -capabilities:CAN_UPLOAD_PRODUCTS حساب هایی را که نمی توانند محصولات را آپلود کنند برمی گرداند.
    • NOT capabilities:CAN_UPLOAD_PRODUCTS حساب‌هایی را برمی‌گرداند که نمی‌توانند محصولات را آپلود کنند
  • relationship(...) : بر اساس نوع رابطه اکانت با حساب دیگر فیلتر می شود. می توانید چندین فیلتر relationship(...) را در یک درخواست قرار دهید.

فیلترهای رابطه

AccountRelationship فرزند منبع Account است. تنها فیلد قابل تغییر آن accountIdAlias ​​است. این فیلد به ارائه‌دهنده اجازه می‌دهد تا یک نام مستعار برای یک حساب، یک راه جایگزین برای ارجاع به آن تعیین کند. ایجاد یک سرویس بین حساب Merchant Center و شخص ثالث نمونه ای از این منبع را ایجاد می کند.

برای فیلتر کردن بر اساس معیارهای زیر می توانید از relationship(...) استفاده کنید:

  • providerId : شناسه تجاری ارائه دهنده خدمات. برای مثال، اگر فیلتر باید فقط حساب‌هایی را برگرداند که دارای سرویس ارائه‌شده توسط account/123 هستند، از providerId = 123 استفاده کنید.
  • accountIdAlias: نام مستعار شناسه حساب که برای رابطه پیکربندی شده است. این فیلتر همچنین نیاز به تنظیم یک providerId دارد.
  • service(...) : سرویسی که به عنوان بخشی از رابطه ارائه می شود. شما می توانید چندین تابع service(...) را در یک تابع relationship(...) قرار دهید.

فیلترهای خدماتی

می‌توانید از تابع service(...) برای فیلتر کردن بیشتر حساب‌ها بر اساس وضعیت روابطشان و انواع خدماتی که این روابط ارائه می‌کنند استفاده کنید:

  • externalAccountId : شناسه حساب خارجی ارائه دهنده خدمات برای حسابی که به آن سرویس ارائه می کند.
  • handshakeState : وضعیت قرارداد خدمات بین دو حساب. مقادیر زیر را می پذیرد:
    • PENDING
    • APPROVED
  • type: نوع خدمات ارائه شده توسط ارائه دهنده. مقادیر زیر را می پذیرد:
    • ACCOUNT_MANAGEMENT ارائه دهنده حساب را مدیریت می کند.
    • ACCOUNT_AGGREGATION ارائه دهنده یک جمع کننده حساب است.

نمونه ها

در اینجا چند نمونه از فیلترهایی وجود دارد که می توانید امتحان کنید.

فیلتر برای حساب‌های دارای نام‌های نمایشی حاوی «store» و ارائه‌دهندگان با شناسه «123»:

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

فیلتر برای حساب‌هایی با نام‌های نمایشی حاوی «store» که نمی‌توانند محصولات را آپلود کنند:

accountName = "*store*" AND -capabilities:CAN_UPLOAD_PRODUCTS

فیلتر برای همه حساب های فرعی حساب "123":

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

فیلتر برای حساب های دارای خدمات مدیریت حساب تایید شده:

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

برای حساب‌های دارای رابطه‌ای که نام مستعار خاصی دارد و این رابطه سرویسی با شناسه حساب خارجی خاص دارد، فیلتر کنید.

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

نمونه زیر نشان می دهد که چگونه می توانید از بسته ListAccountsRequest برای بازیابی یک لیست فیلتر شده از حساب ها استفاده کنید.

جاوا

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);
  }
}

بعدش چی

  • برای اطلاعات بیشتر درباره فیلتر کردن حساب‌ها، به نحو فیلتر مراجعه کنید.