אפשר להשתמש ב-Merchant Accounts 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
: מספר חשבון Merchant של ספק השירות. לדוגמה, אם המסנן אמור להציג רק חשבונות שיש להם שירות שמסופק על ידי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)
מסננים את החשבונות עם השמות המוצגים שמכילים את המילה 'חנות' ושאי אפשר להעלות בהם מוצרים:
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
כדי לאחזר רשימה מסוננת של החשבונות.
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);
}
}
המאמרים הבאים
- למידע נוסף על סינון חשבונות, ראו תחביר של מסננים.