ניהול הקשרים בין החשבונות

אתם יכולים להשתמש ב-Accounts API כדי לנהל את הקשרים בין חשבון Merchant Center שלכם לבין ספקי שירותים אחרים. קשר הוא חיבור רשמי שמאפשר לספק להציע שירותים ספציפיים לעסק שלכם. שירות מגדיר את ההרשאות והיכולות שניתנות לספק, כמו ניהול מוצרים או ניהול קמפיינים. לדוגמה, קישור חשבון Merchant Center לחשבון Google Ads מאפשר לחשבון Google Ads להשתמש בנתוני המוצרים שלכם כדי להפעיל קמפיינים פרסומיים.

קשר גומלין מורכב מהמאפיינים הבאים:

  • חשבון Merchant Center שמקבל את השירות
  • ספק השירות
  • השירות או קבוצת השירותים שניתנים לחשבון Merchant Center

כינוי

ספקי שירות יכולים לשייך כינוי לחשבונות שהם מספקים להם שירות (זה שווה ערך לשדה seller_id שהיה במשאב account ב-Content API for Shopping). אפשר להקצות את הכינוי באמצעות השדה האופציונלי account_id_alias במשאב AccountRelationship, והוא משמש כמזהה בהתאמה אישית. הכינוי חייב לכלול 1 עד 50 תווים שנבחרו מתוך אותיות ASCII, ספרות עשרוניות, מקפים, קווים תחתונים, נקודות או טילדות ([A-Za-z0-9_~.-]{1,50}).

מבנה כתובת ה-URL לגישה לחשבון באמצעות הכינוי שלו הוא GET /accounts/v1/accounts/{provider}~{account_id_alias}.

שירותים

ב-Accounts API, חשבונות יכולים לקבל את השירותים הבאים. אפשר להוסיף רבים מהשירותים האלה במהלך יצירת החשבון.

  • צבירת חשבונות: השירות הזה מקשר חשבון מתקדם לחשבון אחר, ומעניק לחשבון המתקדם גישה מלאה ובלתי מוגבלת. בדרך כלל משתמשים בו בזירות מסחר, ברשתות קמעונאיות עם כמה מותגים או ברשתות קמעונאיות בינלאומיות שצריכות שליטה מרכזית בחשבונות מקוננים. אם אתם פלטפורמת מסחר אלקטרוני או שותפים ראשיים, מומלץ להשתמש במקום זאת בפונקציה accountManagement. כשיוצרים חשבון באמצעות צבירת חשבונות, צריך להשמיט את externalAccountId.

  • ניהול קמפיינים: השירות הזה מדמה את הקישור בין חשבון Merchant Center לחשבון Google Ads, ומעניק לחשבון Google Ads גישה לנתוני המוצרים והחשבון שנדרשים להפעלת קמפיינים פרסומיים. ספק השירות במקרה הזה הוא GOOGLE_ADS והמזהה של חשבון Google Ads הוא externalAccountId. אפשר להציע את השירות הזה גם לחשבון קיים.

  • השוואת מחירים: מייצג את הקשר עם שירות השוואת מחירים (CSS) שמפעיל את חשבון Merchant Center.

  • ניהול דפי מידע מקומיים: מייצג את הקשר עם מנהל חנות לצורך ניהול מלאי ודפי מידע מקומיים באמצעות פרופיל העסק ב-Google.

  • ניהול חשבון: השירות הזה מאפשר לספק לבצע פעולות ניהול בחשבון Merchant Center, כמו הגדרת הגדרות החשבון, ניהול משתמשים או עדכון פרטי העסק. העסק יכול גם להגביל את הגישה שניתנת. כשמשתמשים בשירות הזה במהלך יצירת חשבון, נוצר חשבון שמקושר לספק. זו הגישה המומלצת לפלטפורמות מסחר אלקטרוני ולשותפי ערוצים. אפשר גם להציע אותו לחשבון קיים.

  • ניהול מוצרים: השירות הזה מאפשר לספקים לנהל מוצרים ותכונות קשורות כמו מקורות נתונים וכללים. כשמוסיפים אותם במהלך יצירת החשבון, בדרך כלל הם מופיעים בשילוב עם accountManagement או accountAggregation. אפשר להציע את השירות הזה גם לחשבון קיים.

לחיצת יד

כדי להגדיר שירות, גם החשבון שמספק את השירות וגם החשבון שמקבל את השירות צריכים לאשר את החיבור. תהליך ההרשאה הזה נקרא 'לחיצת יד'.

הלחיצה היא תהליך דו-שלבי:

  1. צד אחד מציע קישור שירות.
  2. הצד השני מאשר או דוחה את ההצעה.

אחרי שההצעה מתקבלת, השירות מאושר ונחשב למוגדר באופן מלא. כל זכות גישה שניתנה לספק השירותים ניתנת עכשיו למשתמשים שעומדים בדרישות (ראו זכויות גישה בהמשך).

שימו לב: למשתמש שיוצר הצעה, דוחה אותה או מאשר אותה צריכות להיות ADMIN הרשאות גישה בחשבון שבו מתחיל התהליך. לכן, אם ספק השירות מציע שירות, המשתמש שמציע את ההצעה צריך להיות ADMIN בחשבון של ספק השירות, והמשתמש שמקבל או דוחה את ההצעה צריך להיות ADMIN בחשבון המקבל.

בדוגמאות הבאות מוסבר איך להציע שירות לחשבון:

Java

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.AccountName;
import com.google.shopping.merchant.accounts.v1.AccountService;
import com.google.shopping.merchant.accounts.v1.AccountServicesServiceClient;
import com.google.shopping.merchant.accounts.v1.AccountServicesServiceSettings;
import com.google.shopping.merchant.accounts.v1.ProductsManagement;
import com.google.shopping.merchant.accounts.v1.ProposeAccountServiceRequest;
import shopping.merchant.samples.utils.Authenticator;

/** This class demonstrates how to propose a service to an existing Merchant Center account. */
public class ProposeServiceSample {

  public static void proposeService(long accountId, long providerId, String externalAccountId)
      throws Exception {

    // Obtains OAuth token based on the user's configuration.
    // The user that authenticates should have access to the account.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the credentials retrieved above.
    AccountServicesServiceSettings accountServicesServiceSettings =
        AccountServicesServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Calls the API and catches and prints any network failures/errors.
    try (AccountServicesServiceClient accountServicesServiceClient =
        AccountServicesServiceClient.create(accountServicesServiceSettings)) {

      // The service to be proposed.
      // This sample shows how to propose product management.
      // For more information about the different services, see:
      // https://developers.google.com/merchant/api/guides/accounts/services
      AccountService accountService =
          AccountService.newBuilder()
              .setProductsManagement(ProductsManagement.newBuilder().build())
              .setExternalAccountId(externalAccountId)
              .build();

      String accountName =
          AccountName.newBuilder().setAccount(String.valueOf(accountId)).build().toString();

      ProposeAccountServiceRequest request =
          ProposeAccountServiceRequest.newBuilder()
              .setParent(accountName)
              .setProvider("accounts/" + providerId)
              .setAccountService(accountService)
              .build();

      System.out.println("Sending Propose Service request:");
      AccountService response = accountServicesServiceClient.proposeAccountService(request);

      System.out.println("Proposed Service below");
      System.out.println(response);
    } catch (Exception e) {
      System.out.println(e);
    }
  }

  public static void main(String[] args) throws Exception {
    // The ID of the account to propose the service to.
    long accountId = 123L;
    // This is the provider ID of the e-commerce platform.
    long providerId = 456L;
    // An external ID that uniquely identifies the account service.
    String externalAccountId = "ext-acc-id-123";
    proposeService(accountId, providerId, externalAccountId);
  }
}

PHP

require_once __DIR__ . '/../../../../vendor/autoload.php';
require_once __DIR__ . '/../../../Authentication/Authentication.php';
require_once __DIR__ . '/../../../Authentication/Config.php';

use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\AccountAggregation;
use Google\Shopping\Merchant\Accounts\V1\AccountService;
use Google\Shopping\Merchant\Accounts\V1\Client\AccountServicesServiceClient;
use Google\Shopping\Merchant\Accounts\V1\ProposeAccountServiceRequest;

/**
 * This class demonstrates how to propose an account service.
 */
class ProposeAccountServiceSample
{
    /**
     * A helper function to create the account name string.
     *
     * @param string $accountId The ID of the account.
     *
     * @return string The account name has the format: `accounts/{account_id}`
     */
    private static function toAccountName(string $accountId): string
    {
        return sprintf('accounts/%s', $accountId);
    }

    /**
     * Proposes a new account service.
     *
     * @param array $config The configuration data used for authentication and
     *     getting the account ID.
     * @param string $providerId The ID of the provider account.
     */
    public static function proposeAccountService(
        array $config,
        string $providerId
    ): void {
        // Gets the OAuth credentials to make the request.
        $credentials = Authentication::useServiceAccountOrTokenFile();

        // Creates options containing credentials for the client to use.
        $options = ['credentials' => $credentials];

        // Creates a client.
        $accountServicesServiceClient = new AccountServicesServiceClient($options);

        // Calls the API and catches and prints any network failures/errors.
        try {
            $accountAggregation = new AccountAggregation();
            $accountService = (new AccountService())
                ->setAccountAggregation($accountAggregation);

            $request = (new ProposeAccountServiceRequest())
                ->setParent(self::toAccountName($config['accountId']))
                ->setProvider(self::toAccountName($providerId))
                ->setAccountService($accountService);

            print "Sending Propose AccountService request\n";
            $response = $accountServicesServiceClient->proposeAccountService($request);
            print "Proposed AccountService below\n";
            print $response->serializeToJsonString(true) . PHP_EOL;
        } catch (ApiException $e) {
            printf("An error has occurred: %s%s", $e->getMessage(), PHP_EOL);
        }
    }

    /**
     * Helper to execute the sample.
     */
    public function callSample(): void
    {
        $config = Config::generateConfig();

        // Update this with the Merchant Center provider ID you want to get the
        // relationship for.
        $providerId = 111;
        self::proposeAccountService($config, $providerId);
    }
}

// Run the script
$sample = new ProposeAccountServiceSample();
$sample->callSample();

Python

"""This class demonstrates how to propose an account service."""

from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import AccountAggregation
from google.shopping.merchant_accounts_v1 import AccountService
from google.shopping.merchant_accounts_v1 import AccountServicesServiceClient
from google.shopping.merchant_accounts_v1 import ProposeAccountServiceRequest

_ACCOUNT = configuration.Configuration().read_merchant_info()
_PARENT = f"accounts/{_ACCOUNT}"


def propose_account_service(provider_id: int) -> None:
  """Proposes an account service.

  Args:
    provider_id: The Merchant Center ID of the provider.
  """
  # Gets OAuth Credentials.
  credentials = generate_user_credentials.main()

  # Creates a client.
  client = AccountServicesServiceClient(credentials=credentials)

  # Creates the provider resource name from the provider ID.
  provider = f"accounts/{provider_id}"

  # Creates an AccountService object.
  # For this request, only `account_aggregation` is needed.
  account_service = AccountService()
  account_service.account_aggregation = AccountAggregation()

  # Creates the request.
  request = ProposeAccountServiceRequest(
      parent=_PARENT,
      provider=provider,
      account_service=account_service,
  )

  # Makes the request and catches and prints any error messages.
  try:
    print("Sending Propose AccountService request")
    response = client.propose_account_service(request=request)
    print("Proposed AccountService below")
    print(response)
  except RuntimeError as e:
    print(e)


if __name__ == "__main__":
  # Update this with the Merchant Center provider ID you want to get the
  # relationship for.
  provider_id_ = 111
  propose_account_service(provider_id_)

אופן הדיווח על בעיות בזירות מסחר

בהמשך מפורטות הדרישות הספציפיות לתהליך ההתחברות לכל שירות בנפרד:

  • צבירת חשבונות: אפשר להגדיר את השירות הזה רק כחלק מתהליך יצירת החשבון. ספק השירות אמור להיות חשבון מתקדם, והשירות מאושר באופן אוטומטי כי למשתמשים בחשבון המתקדם יש גישה מלאה ADMIN לחשבון שנוצר.

  • שירות השוואת מחירים: השירות הזה מאושר אוטומטית כשמוסיפים אותו במהלך יצירת החשבון באמצעות createAndConfigure.

  • ניהול קמפיינים: התהליך הזה מתבצע לפי תהליך הלחיצה הרגיל, אבל ההצעות נוצרות במערכת אחת (לדוגמה, Google Ads) והאישורים מתבצעים במערכת השנייה (לדוגמה, ב-Merchant Center או דרך Merchant API).

  • ניהול דפי מידע מקומיים: בשביל השירות הזה, הצעת ההסכמה מתבצעת בשיטה ייעודית והאישורים מתבצעים במערכת השנייה (לדוגמה, פרופיל העסק ב-Google). הוראות מפורטות זמינות במדריך לקישור פרופיל העסק ב-Google.

  • ניהול חשבונות: בשירות הזה, תהליך הלחיצה הרגיל על היד חל כשמשתמשים ב-propose. אם השירות נוסף במהלך יצירת החשבון באמצעות createAndConfigure, הוא מאושר באופן אוטומטי.

  • ניהול מוצרים: בשירות הזה, חל תהליך הלחיצה הרגיל (הצעה מצד אחד, ואז קבלה מהצד השני).

הרשאות גישה

כל סוג שירות מספק רמת גישה מסוימת למשתמשים של ספק השירות לחשבון שמקבל שירות:

  • צבירת חשבונות: השירות הזה מספק הרשאות מלאות של ADMIN.

  • ניהול קמפיינים: השירות הזה מספק זכות גישה מוגבלת, שמאפשרת לחשבון Google Ads המשויך לגשת למוצרים ולמידע בסיסי על החשבון.

  • שירות השוואת מחירים: השירות הזה מספק כברירת מחדל זכויות מלאות של ADMIN עם זאת, העסק יכול להגביל את הגישה שניתנה ב-Merchant Center.

  • ניהול של דפי מידע מקומיים: השירות הזה לא מספק זכות גישה ישירה. במקום זאת, הוא מאפשר למוצרים שמוצגים בכרטיס המוצר להסתנכרן עם חשבון Merchant Center.

חשוב: זכויות הגישה שמתוארות לגבי סוגי השירותים הבאים חלות רק על ספקי שירות מאושרים. אם אתם ספקי שירותים ורוצים להשתמש ביכולת הזו, אתם יכולים לפנות אל צוות התמיכה שלנו. אם כבר קיבלתם אישור להשתמש בשיטה accounts.link לניהול מוצרים ב-Content API for Shopping, אתם יכולים להשתמש בשירות הזה ב-Merchant API בלי צורך באישורים נוספים.

  • ניהול חשבון: השירות הזה מספק כברירת מחדל הרשאות מלאות של ADMIN.

  • ניהול מוצרים: השירות הזה מספק הרשאות מלאות של ADMIN. הערה: בעתיד, הגישה הזו תוגבל רק לזכויות גישה שקשורות למוצר.

איך קשרים רלוונטיים לפלטפורמות של צד שלישי

אם אתם פלטפורמה של צד שלישי שמנהלת חשבונות בשם עסקים אחרים, בהמשך מוסבר איך המושגים השונים מתאימים למבנה החשבון שלכם:

  1. ספק השירות: החשבון המתקדם שלכם.
  2. החשבון שמקבל את השירות: חשבון Merchant Center שמייצג את העסק שאתם מנהלים.
  3. שירות:
    • accountManagement: זהו השירות המומלץ לפלטפורמות מסחר אלקטרוני ולשותפי ערוץ שיוצרים חשבונות חדשים בשם מוֹכרים. המערכת יוצרת חשבון בבעלות המוכר שמקושר אליכם לצורך ניהול. ההגדרה הזו תואמת למבנה המועדף של Merchant Center בתרחיש השימוש הזה.
    • accountAggregation: השירות הזה מקשר את החשבון המתקדם שלכם לחשבון אחר. השימוש בשיטה הזו נתמך, אבל לא מומלץ בפלטפורמות של מסחר אלקטרוני ובשותפי ערוצים.

לפרטים על הגדרת חשבון מתקדם וקישור לחשבונות חדשים ב-Merchant Center, אפשר לעיין במאמר יצירת חשבונות.