مدیریت روابط حساب

می‌توانید از «میانای برنامه‌سازی کاربردی حساب‌ها» برای مدیریت روابط بین حساب Merchant Center و دیگر ارائه‌دهندگان خدمات استفاده کنید. ارتباط یک اتصال رسمی است که به ارائه‌دهنده امکان می‌دهد خدمات خاصی را به کسب‌وکارتان ارائه دهد. سرویس اجازه‌ها و قابلیت‌های اعطاشده به ارائه‌دهنده را تعریف می‌کند، مثل مدیریت محصول یا مدیریت پویش. برای مثال، پیوند دادن حساب Merchant Center به حساب Google Ads به حساب Ads اجازه می‌دهد از داده‌های محصولتان برای اجرای پویش‌های آگهی استفاده کند.

یک رابطه از ویژگی‌های زیر تشکیل شده است:

  • حساب Merchant Center که خدمات را دریافت می‌کند
  • فراهم‌ساز خدمات
  • سرویس یا مجموعه سرویس‌هایی که به حساب Merchant Center ارائه می‌شود

نام مستعار

ارائه‌دهندگان خدمات می‌توانند نام مستعاری را با حساب‌هایی که به آن‌ها خدمات ارائه می‌دهند مرتبط کنند (این معادل فیلد seller_id است که در منبع حساب در Content API for Shopping وجود داشت). نام مستعار را می‌توان بااستفاده از فیلد اختیاری account_id_alias در منبع AccountRelationship اختصاص داد و به‌عنوان شناسه سفارشی عمل می‌کند. نام مستعار باید از ۱ تا ۵۰ نویسه تشکیل شده باشد که از حروف ASCII، ارقام اعشاری، خط تیره، زیرخط، نقطه، یا مد ([A-Za-z0-9_~.-]{1,50}) انتخاب شده باشد.

ساختار نشانی وب برای دسترسی به حساب بااستفاده از نام مستعار آن GET /accounts/v1/accounts/{provider}~{account_id_alias} است.

خدمات

در «میانای برنامه‌سازی کاربردی حساب‌ها»، حساب‌ها می‌توانند سرویس‌های زیر را دریافت کنند. می‌توانید بسیاری از این سرویس‌ها را درطول ایجاد حساب اضافه کنید.

  • تجمیع حساب: این سرویس یک حساب پیشرفته را به حساب دیگری پیوند می‌دهد و به حساب پیشرفته دسترسی کامل و بدون محدودیت می‌دهد. این نوع حساب معمولاً توسط بازارها، خرده‌فروشان چندنمانام، یا خرده‌فروشان بین‌المللی که نیاز به کنترل مرکزی بر حساب‌های تودرتو دارند، استفاده می‌شود. اگر پلاتفرم تجارت الکترونیک یا شریک کانال هستید، توصیه می‌کنیم به‌جای آن از accountManagement استفاده کنید. وقتی بااستفاده از تجمیع حساب، حسابی ایجاد می‌کنید، باید externalAccountId را حذف کنید.

  • مدیریت پویش: این سرویس پیوند بین حساب Merchant Center و حساب Google Ads را مدل‌سازی می‌کند و به حساب Ads دسترسی به داده‌های محصول و حساب موردنیاز برای اجرای پویش‌های آگهی را می‌دهد. ارائه‌دهنده خدمات در این مورد GOOGLE_ADS و externalAccountId شناسه حساب Google Ads است. این سرویس همچنین می‌تواند به حساب موجود پیشنهاد شود.

  • مقایسه قیمت: این نشان‌دهنده رابطه با «سرویس مقایسه قیمت» (CSS) است که حساب Merchant Center را اداره می‌کند.

  • مدیریت فهرستگان محلی: این نشان‌دهنده رابطه با مدیر فروشگاه برای مدیریت فهرستگان و موجودی محلی بااستفاده از «نمایه کسب‌وکار Google» است.

  • مدیریت حساب: این سرویس به ارائه‌دهنده امکان می‌دهد کنش‌های سرپرستی را در حساب Merchant Center انجام دهد، مثل پیکربندی تنظیمات حساب، مدیریت کاربران، یا به‌روزرسانی اطلاعات کسب‌وکار. کسب‌وکار همچنین می‌تواند دسترسی اعطاشده را محدود کند. وقتی درطول ایجاد حساب استفاده شود، این سرویس حسابی ایجاد می‌کند که به ارائه‌دهنده پیوند داده شده است. این رویکرد برای پلاتفرم‌های تجارت الکترونیک و شرکای کانال توصیه می‌شود. همچنین می‌توان آن را به حساب موجودی پیشنهاد داد.

  • مدیریت محصولات: این سرویس به ارائه‌دهندگان امکان می‌دهد محصولات و ویژگی‌های مرتبط مانند منابع داده و قوانین را مدیریت کنند. وقتی درطول ایجاد حساب اضافه می‌شود، معمولاً با accountManagement یا accountAggregation ترکیب می‌شود. این سرویس همچنین می‌تواند به حساب موجود پیشنهاد شود.

دست‌دهی

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

دست‌دادن فرایندی دومرحله‌ای است:

  1. یکی از طرفین پیوند سرویس را پیشنهاد می‌کند.
  2. طرف دیگر پیشنهاد را تأیید یا رد می‌کند.

پس‌از پذیرفته شدن پیشنهاد، سرویس تأیید می‌شود و کاملاً برقرار درنظر گرفته می‌شود. هر حق دسترسی که به ارائه‌دهنده خدمات اعطا شده است اکنون به کاربران واجدشرایط اعطا می‌شود (حقوق دسترسی زیر را ببینید).

توجه داشته باشید که کاربری که پیشنهاد را ایجاد می‌کند، رد می‌کند، یا می‌پذیرد باید ADMIN حقوق دسترسی به حسابی که فرایند را آغاز می‌کند داشته باشد. بنابراین اگر ارائه‌دهنده خدمات خدماتی را پیشنهاد دهد، کاربری که پیشنهاد را ارائه می‌کند باید ADMIN در حساب ارائه‌دهنده خدمات باشد و کاربری که پیشنهاد را می‌پذیرد یا رد می‌کند باید ADMIN در حساب دریافت‌کننده باشد.

نمونه‌های زیر نشان می‌دهد که چگونه سرویس حساب پیشنهاد دهید:

جاوا

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 را ارائه می‌دهد.

  • مدیریت پویش: این سرویس حق دسترسی محدودشده‌ای ارائه می‌دهد و به حساب 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، به ایجاد حساب‌ها مراجعه کنید.