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

می‌توانید از Accounts API برای مدیریت روابط بین حساب 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}.

خدمات

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

  • انبوهش حساب: این سرویس (accountAggregation) حساب پیشرفته چندمشتری را به حساب فرعی پیوند می‌دهد و به حساب پیشرفته دسترسی کامل و نامحدود می‌دهد و حساب فرعی را در Merchant Center UI نمایان می‌کند. رابط کاربری Merchant Center به‌طور خودکار حساب‌ها را به حساب‌های پیشرفته با accountAggregation برای سازندگان فروشگاه (پلاتفرم‌های تجارت الکترونیک)، شرکای کانال، بازارها، خرده‌فروشان چندنمانامی، و خرده‌فروشان بین‌المللی هنگام ایجاد حساب‌های فرعی جدید تبدیل می‌کند. اگر آژانس هستید، به‌جای آن از accountManagement استفاده کنید. وقتی بااستفاده از تجمیع حساب حسابی ایجاد می‌کنید، externalAccountId باید حذف شود.

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

  • این سرویس امکان ایجاد فیلترهای محصول مختص شریک را هنگام اجرای پویش‌های «شبکه رسانه بازرگانی» فراهم می‌کند.
  • درحال‌حاضر، باید از نسخه آلفای زیرمجموعه API حساب‌ها استفاده کنید.
  • استفاده از این ویژگی مستلزم قرار گرفتن در فهرست مجاز خاص GMC است.

برای جزئیات بیشتر، با تیم مدیریت حساب Google Ads تماس بگیرید.

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

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

  • مدیریت حساب: این سرویس (accountManagement) به ارائه‌دهنده امکان می‌دهد تا اقدامات اداری را در حساب Merchant Center خارجی مستقل انجام دهد، مانند پیکربندی تنظیمات حساب، مدیریت کاربران، یا به‌روزرسانی اطلاعات کسب‌وکار. کسب‌وکار همچنین می‌تواند دسترسی اعطاشده را محدود کند. وقتی درطول ایجاد حساب استفاده می‌شود، این سرویس یک حساب مستقل پیوندشده به ارائه‌دهنده ایجاد می‌کند. همچنین می‌توان آن را به حساب موجود پیشنهاد داد. نمایندگی‌هایی که از این نوع خدمات استفاده می‌کنند می‌توانند حساب‌هایی را که در «Merchant Center ویژه نمایندگی‌ها» مدیریت می‌کنند ببینند. سازندگان فروشگاه و شرکای کانال می‌توانند از Merchant API برای استخراج اطلاعات مربوط به فروشندگانی که ازطریق accountManagement مدیریت می‌کنند استفاده کنند.

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

  • مدیریت تسویه‌حساب UCP (v1alpha، دسترسی محدود): سرویس ucpCheckoutManagement به ارائه‌دهنده خدمات تأییدشده اجازه می‌دهد ادغام‌های تسویه‌حساب UCP، تنظیمات، و مشارکت در برنامه را ازطرف فروشنده مدیریت کند. این سرویس فقط می‌تواند توسط یک حساب Merchant Center موجود پیشنهاد یا تأیید شود.

    توجه: تسویه‌حساب UCP یک ویژگی آلفا با دسترسی محدود است. درباره ارائه‌دهندگان خدمات و تسویه‌حساب UCP در Merchant Center برای ارائه‌دهندگان خدمات بیشتر بدانید.

دست دادن

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

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

  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 اضافه شود، به‌طور خودکار تأیید می‌شود.

  • مدیریت محصولات: برای این سرویس، فرایند دست دادن معمولی اعمال می‌شود (پیشنهادشده توسط یک طرف، و سپس پذیرش توسط طرف دیگر).

  • مدیریت تسویه‌حساب UCP (v1alpha، دسترسی محدود): برای این سرویس، فروشنده می‌تواند دست‌دهی را ازطریق کادر گفتگوی پیوند دادن حساب با میزبانی Google در درگاه ارائه‌دهنده خدمات یا بااستفاده از فرایند دست‌دهی استاندارد (propose و سپس approve) تکمیل کند. برای جزئیات ادغام، به اسناد ارائه‌دهندگان خدمات Merchant Center مراجعه کنید.

حقوق دسترسی

هر نوع سرویس سطح خاصی از دسترسی را برای کاربران رساننده خدمات بر حسابی که به آن خدمات ارائه می‌شود فراهم می‌کند:

  • انبوهش حساب: این سرویس حقوق کامل ADMIN را ارائه می‌دهد.

  • مدیریت پویش: این سرویس حق دسترسی محدودی را ارائه می‌دهد، که به حساب Ads مرتبط اجازه می‌دهد به محصولات و اطلاعات پایه حساب دسترسی داشته باشد.

  • مقایسه قیمت: این سرویس به‌طور پیش‌فرض حقوق کامل ADMIN را ارائه می‌دهد. بااین‌حال، کسب‌وکار می‌تواند دسترسی اعطاشده در Merchant Center را محدود کند.

  • مدیریت فهرستگان محلی: این سرویس حق دسترسی مستقیم ارائه نمی‌دهد. درعوض، به فهرستگان امکان می‌دهد محصولاتش را با حساب Merchant Center همگام‌سازی کند.

مهم: حقوق دسترسی شرح‌داده‌شده برای انواع خدمات زیر فقط برای فراهم‌سازان خدمات تأییدشده اعمال می‌شود. اگر ارائه‌دهنده خدمات هستید و می‌خواهید از این قابلیت استفاده کنید، با تیم پشتیبانی ما تماس بگیرید. اگر قبلاً برای روش accounts.link برای مدیریت محصولات در Content API for Shopping تأیید شده‌اید، می‌توانید از این سرویس در Merchant API بدون تأییدهای بیشتر استفاده کنید.

  • مدیریت حساب: این سرویس به‌طور پیش‌فرض حقوق کامل ADMIN را ارائه می‌دهد.

  • مدیریت محصولات: این سرویس حقوق کامل ADMIN را ارائه می‌دهد. توجه داشته باشید که در آینده، این دسترسی فقط به حقوق دسترسی مرتبط با محصول محدود خواهد شد.

  • مدیریت تسویه‌حساب پروتکل تجارت جهانی (v1alpha، دسترسی محدود): این سرویس حقوق کامل ADMIN را ارائه می‌دهد. توجه داشته باشید که در آینده، این دسترسی فقط به حقوق دسترسی مربوط به تسویه‌حساب UCP محدود خواهد شد.

نحوه اعمال روابط برای پلاتفرم‌های شخص ثالث

اگر پلاتفرم شخص ثالثی هستید که حساب‌ها را ازطرف کسب‌وکارهای دیگر مدیریت می‌کند، موارد زیر نشان می‌دهد که مفاهیم مختلف چگونه با ساختار حساب شما مطابقت دارند:

  1. ارائه‌دهنده خدمات: حساب پیشرفته شما.
  2. حساب دریافت‌کننده سرویس: حساب Merchant Center که کسب‌وکار تحت مدیریت شما را نشان می‌دهد.
  3. سرویس:
    • accountAggregation: توسط سازندگان فروشگاه (پلاتفرم‌های تجارت الکترونیک)، شرکای کانال، بازارها، و خرده‌فروشان چندنمانامی که ازطرف فروشندگان حساب‌های فرعی جدید ایجاد می‌کنند استفاده می‌شود. رابط کاربری Merchant Center به‌طور خودکار سازندگان فروشگاه و شرکای کانال را به‌عنوان حساب‌های پیشرفته با accountAggregation پیکربندی می‌کند و به آن‌ها اجازه می‌دهد تا حساب‌های فرعی را در رابط کاربری Merchant Center مشاهده و مدیریت کنند.
    • accountManagement: توسط نمایندگی‌هایی استفاده می‌شود که حساب‌های مشتری مستقل متعلق به فروشنده را ایجاد می‌کنند یا به آن‌ها پیوند می‌دهند و می‌توانند آن‌ها را در «Merchant Center ویژه نمایندگی‌ها» مشاهده کنند. دیگر انواع ارائه‌دهندگان خدمات از روش accounts.list در Merchant API برای مشاهده اطلاعات حساب پیوندشده استفاده می‌کنند.

برای جزئیات مربوط به نحوه راه‌اندازی حساب پیشرفته و پیوند دادن به حساب‌های جدید Merchant Center، به ایجاد حساب مراجعه کنید.