قراردادهای شرایط خدمات Merchant Center را مدیریت کنید

برای استفاده از مرکز فروشندگان و ویژگی‌های آن، باید شرایط خدمات مرکز فروشندگان (ToS) را برای محل کسب و کار خود بپذیرید. این توافق‌نامه‌ها شرایط قانونی استفاده از خدمات مرکز فروشندگان را تشریح می‌کنند.

این راهنما توضیح می‌دهد که چگونه می‌توانید از رابط برنامه‌نویسی کاربردی فروشنده (Merchant API) برای مدیریت این توافق‌نامه‌ها استفاده کنید، چه برای حساب خودتان و چه برای حساب‌هایی که به عنوان ارائه‌دهنده شخص ثالث (3P) مدیریت می‌کنید.

شما می‌توانید به موارد زیر دست یابید:

  • وضعیت فعلی توافقنامه خدمات (ToS) یک حساب کاربری را بررسی کنید.
  • فروشندگان را برای پذیرش شرایط خدمات (ToS) لازم راهنمایی کنید.
  • مدیریت ToS به عنوان ارائه دهنده خدمات برای حساب‌های کاربری.

پیش‌نیازها

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

اگر نیاز به مدیریت چندین حساب دارید، می‌توانید با استفاده از Merchant API حساب‌های مشتری ایجاد کنید. به بخش ایجاد حساب‌ها مراجعه کنید.

بررسی وضعیت توافقنامه شرایط خدمات (ToS) یک حساب کاربری

قبل از اینکه یک فروشنده بتواند به طور کامل از مرکز فروشندگان استفاده کند، یا اگر نیاز به تأیید وضعیت توافق‌نامه فعلی آنها دارید، می‌توانید وضعیت توافق‌نامه شرایط خدمات آنها را بازیابی کنید.

از متد termsOfServiceAgreementStates.retrieveForApplication برای دریافت وضعیت توافق‌نامه‌ی شرایط خدمات (ToS) برای برنامه‌ی اصلی Merchant Center استفاده کنید. این متد، در صورت وجود، شرایط خدمات (ToS) فعلی شما را برمی‌گرداند، و اگر شرایط خدمات از آخرین پذیرش شما به‌روزرسانی شده باشد، آخرین نسخه‌ای را که باید بپذیرید، برمی‌گرداند.

در اینجا یک نمونه درخواست آمده است:

GET https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/termsOfServiceAgreementStates:retrieveForApplication

یک فراخوانی موفق، منبع TermsOfServiceAgreementState را برمی‌گرداند. این منبع شامل موارد زیر است:

  • name : شناسه‌ی این وضعیت توافق‌نامه.
  • regionCode : کشوری که این وضعیت توافق‌نامه برای آن اعمال می‌شود، معمولاً کشور تجاری حساب.
  • termsOfServiceKind : این MERCHANT_CENTER خواهد بود.
  • accepted : جزئیاتی درباره نسخه شرایط خدمات (ToS) که حساب کاربری قبلاً پذیرفته است، از جمله نام منبع termsOfService (مانند termsOfService/132 ) و اینکه توسط چه کسی acceptedBy است. همچنین در صورت required نسخه جدیدتر ToS، ممکن است شامل یک validUntil date نیز باشد.
  • required : جزئیات مربوط به نسخه‌ای از شرایط خدمات (ToS) که حساب کاربری باید بپذیرد. این شامل نام منبع termsOfService و یک tosFileUri است که به سند ToS قابل خواندن توسط انسان اشاره می‌کند.

پاسخ نمونه:

{
  "name": "accounts/{ACCOUNT_ID}/termsOfServiceAgreementStates/MERCHANT_CENTER-{REGION_CODE}",
  "regionCode": "{REGION_CODE}",
  "termsOfServiceKind": "MERCHANT_CENTER",
  "accepted": {
    "termsOfService": "termsOfService/132",
    "acceptedBy": "accounts/{ACCOUNT_ID}"
  },
  "required": {
    "termsOfService": "termsOfService/132",
    "tosFileUri": "https://www.google.com/intl/{REGION_CODE}/policies/merchants/terms/"
  }
}

اگر شرایط خدمات جدیدی required است، باید فروشنده را برای پذیرش آن راهنمایی کنید.

در اینجا نمونه‌ای از آنچه می‌توانید برای بازیابی وضعیت توافق‌نامه شرایط خدمات برای یک حساب کاربری و کشور خاص استفاده کنید، آورده شده است:

جاوا

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.GetTermsOfServiceAgreementStateRequest;
import com.google.shopping.merchant.accounts.v1.TermsOfServiceAgreementState;
import com.google.shopping.merchant.accounts.v1.TermsOfServiceAgreementStateName;
import com.google.shopping.merchant.accounts.v1.TermsOfServiceAgreementStateServiceClient;
import com.google.shopping.merchant.accounts.v1.TermsOfServiceAgreementStateServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/**
 * This class demonstrates how to get a TermsOfServiceAgreementState for a specific
 * TermsOfServiceKind and country.
 */
public class GetTermsOfServiceAgreementStateSample {

  public static void getTermsOfServiceAgreementState(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.
    TermsOfServiceAgreementStateServiceSettings termsOfServiceAgreementStateServiceSettings =
        TermsOfServiceAgreementStateServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates TermsOfServiceAgreementState name to identify TermsOfServiceAgreementState.
    String name =
        TermsOfServiceAgreementStateName.newBuilder()
            .setAccount(config.getAccountId().toString())
            // The Identifier is: "{TermsOfServiceKind}-{country}"
            .setIdentifier("MERCHANT_CENTER-US")
            .build()
            .toString();

    System.out.println(name);

    // Calls the API and catches and prints any network failures/errors.
    try (TermsOfServiceAgreementStateServiceClient termsOfServiceAgreementStateServiceClient =
        TermsOfServiceAgreementStateServiceClient.create(
            termsOfServiceAgreementStateServiceSettings)) {

      // The name has the format:
      // accounts/{account}/termsOfServiceAgreementStates/{TermsOfServiceKind}-{country}
      GetTermsOfServiceAgreementStateRequest request =
          GetTermsOfServiceAgreementStateRequest.newBuilder().setName(name).build();

      System.out.println("Sending Get TermsOfServiceAgreementState request:");
      TermsOfServiceAgreementState response =
          termsOfServiceAgreementStateServiceClient.getTermsOfServiceAgreementState(request);

      System.out.println("Retrieved TermsOfServiceAgreementState below");
      // If the terms of service needs to be accepted, the "required" field will include the
      // specific version of the terms of service which needs to be accepted, alongside a link to
      // the terms of service itself.
      System.out.println(response);
    } catch (Exception e) {
      System.out.println(e);
    }
  }


  public static void main(String[] args) throws Exception {
    Config config = Config.load();

    getTermsOfServiceAgreementState(config);
  }
}

پی اچ پی

use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\Client\TermsOfServiceAgreementStateServiceClient;
use Google\Shopping\Merchant\Accounts\V1\GetTermsOfServiceAgreementStateRequest;

/**
 * Demonstrates how to get a TermsOfServiceAgreementState.
 */
class GetTermsOfServiceAgreementState
{

    /**
     * Gets a TermsOfServiceAgreementState.
     *
     * @param array $config The configuration data.
     * @return void
     */
    public static function getTermsOfServiceAgreementState($config): void
    {
        // Get OAuth credentials.
        $credentials = Authentication::useServiceAccountOrTokenFile();

        // Create client options.
        $options = ['credentials' => $credentials];

        // Create a TermsOfServiceAgreementStateServiceClient.
        $termsOfServiceAgreementStateServiceClient = new TermsOfServiceAgreementStateServiceClient($options);

        // Service agreeement identifier
        $identifier = "MERCHANT_CENTER-US";

        // Create TermsOfServiceAgreementState name.
        $name = "accounts/" . $config['accountId'] . "/termsOfServiceAgreementStates/" . $identifier;

        print $name . PHP_EOL;

        try {
            // Prepare the request.
            $request = new GetTermsOfServiceAgreementStateRequest([
                'name' => $name,
            ]);

            print "Sending Get TermsOfServiceAgreementState request:" . PHP_EOL;
            $response = $termsOfServiceAgreementStateServiceClient->getTermsOfServiceAgreementState($request);

            print "Retrieved TermsOfServiceAgreementState below\n";
            print $response->serializeToJsonString() . PHP_EOL;
        } catch (ApiException $e) {
            print $e->getMessage();
        }
    }

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

        self::getTermsOfServiceAgreementState($config);
    }

}

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

پایتون

from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import GetTermsOfServiceAgreementStateRequest
from google.shopping.merchant_accounts_v1 import TermsOfServiceAgreementStateServiceClient

# Replace with your actual value.
_ACCOUNT_ID = configuration.Configuration().read_merchant_info()
_IDENTIFIER = "MERCHANT_CENTER-US"  # Replace with your identifier


def get_terms_of_service_agreement_state():
  """Gets a TermsOfServiceAgreementState for a specific TermsOfServiceKind and country."""

  credentials = generate_user_credentials.main()
  client = TermsOfServiceAgreementStateServiceClient(credentials=credentials)

  name = (
      "accounts/"
      + _ACCOUNT_ID
      + "/termsOfServiceAgreementStates/"
      + _IDENTIFIER
  )

  print(name)

  request = GetTermsOfServiceAgreementStateRequest(name=name)

  try:
    print("Sending Get TermsOfServiceAgreementState request:")
    response = client.get_terms_of_service_agreement_state(request=request)
    print("Retrieved TermsOfServiceAgreementState below")
    print(response)
  except RuntimeError as e:
    print(e)


if __name__ == "__main__":
  get_terms_of_service_agreement_state()

شرایط خدمات را بپذیرید

فروشندگان برای حفظ دسترسی به ویژگی‌های مرکز فروشندگان باید آخرین شرایط خدمات را بپذیرند.

شرایط خدمات (TOS) را برای حساب کاربری خود بپذیرید

اگر حساب مرکز فروش خود را مدیریت می‌کنید، موارد زیر را انجام دهید:

  1. برای شناسایی اینکه آیا به ToS required است یا خیر، termsOfServiceAgreementStates.retrieveForApplication را فراخوانی کنید.
  2. اگر شرایط خدمات (ToS) مورد نیاز است، نام termsOfService را از فیلد required یادداشت کنید (مانند termsOfService/132 ).
  3. برای پذیرش شرایط خدمات (ToS)، تابع termsOfService.accept را فراخوانی کنید. برای این کار به نام ToS، ACCOUNT_ID کاربری (ACCOUNT_ID) و regionCode که توسط retrieveForApplication برگردانده می‌شود، نیاز خواهید داشت.

    در اینجا یک نمونه درخواست آمده است:

    POST https://merchantapi.googleapis.com/accounts/v1/{name={termsOfService/VERSION}}:accept
    {
      "account": "accounts/{ACCOUNT_ID}",
      "regionCode": "{REGION_CODE}"
    }
    

    یک فراخوانی موفق، یک بدنه پاسخ خالی برمی‌گرداند و وضعیت توافقنامه خدمات (ToS) حساب را به‌روزرسانی می‌کند.

راهنمایی فروشندگان برای پذیرش شرایط خدمات (برای ارائه دهندگان شخص ثالث)

اگر شما یک ارائه‌دهنده شخص ثالث (3P) هستید که حساب‌های مرکز فروشندگان را برای سایر کسب‌وکارها مدیریت می‌کنید، نباید شرایط خدمات (TOS) را از طرف آنها بپذیرید. در عوض، باید:

  1. بازیابی آخرین شرایط خدمات (ToS) : برای دریافت جزئیات آخرین نسخه شرایط خدمات (ToS) که ممکن است نیاز به پذیرش داشته باشند، termsOfService.retrieveLatest برای regionCode فروشنده و فرم MERCHANT_CENTER فراخوانی کنید.

    درخواست نمونه:

    GET https://merchantapi.googleapis.com/accounts/v1/termsOfService:retrieveLatest?regionCode={REGION_CODE}&kind=MERCHANT_CENTER
    

    پاسخ نمونه:

    {
        "name": "{termsOfService/VERSION}",
        "regionCode": "{REGION_CODE}",
        "kind": "MERCHANT_CENTER",
        "fileUri": "https://www.google.com/intl/{REGION_CODE}/policies/merchants/terms/"
    }
    
  2. نمایش شرایط خدمات (ToS) : از fileUri موجود در پاسخ برای نمایش متن کامل شرایط خدمات به فروشنده در رابط کاربری برنامه خود استفاده کنید.

  3. دریافت پذیرش از فروشنده : فروشنده باید صریحاً با شرایط موجود در رابط کاربری شما موافقت کند.

  4. ثبت پذیرش با استفاده از API : پس از پذیرش توسط فروشنده، با استفاده از name شرایط خدمات (ToS) به دست آمده در مرحله 1، ACCOUNT_ID فروشنده و regionCode آنها، termsOfService.accept را فراخوانی کنید.

    درخواست نمونه:

    POST https://merchantapi.googleapis.com/accounts/v1/{name={termsOfService/VERSION}}:accept
    {
      "account": "accounts/{MERCHANT_ACCOUNT_ID}",
      "regionCode": "{REGION_CODE}"
    }
    

در اینجا نمونه‌ای از شرایط و ضوابط خدمات برای یک حساب کاربری مشخص (پس از موافقت فروشنده) ارائه شده است که می‌توانید از آن برای پذیرش آن استفاده کنید:

جاوا

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.AcceptTermsOfServiceRequest;
import com.google.shopping.merchant.accounts.v1.TermsOfServiceServiceClient;
import com.google.shopping.merchant.accounts.v1.TermsOfServiceServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/** This class demonstrates how to accept the TermsOfService agreement in a given account. */
public class AcceptTermsOfServiceSample {

  public static void acceptTermsOfService(String accountId, String tosVersion, String regionCode)
      throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

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

    // Calls the API and catches and prints any network failures/errors.
    try (TermsOfServiceServiceClient tosServiceClient =
        TermsOfServiceServiceClient.create(tosServiceSettings)) {

      // The parent has the format: accounts/{account}
      AcceptTermsOfServiceRequest request =
          AcceptTermsOfServiceRequest.newBuilder()
              .setName(String.format("termsOfService/%s", tosVersion))
              .setAccount(String.format("accounts/%s", accountId))
              .setRegionCode(regionCode)
              .build();

      System.out.println("Sending request to accept terms of service...");
      tosServiceClient.acceptTermsOfService(request);

      System.out.println("Successfully accepted terms of service.");
    } catch (Exception e) {
      System.out.println(e);
    }
  }

  public static void main(String[] args) throws Exception {
    Config config = Config.load();

    // See GetTermsOfServiceAgreementStateSample to understand how to check which version of the
    // terms of service needs to be accepted, if any.
    // Likewise, if you know that the terms of service needs to be accepted, you can also simply
    // call RetrieveLatestTermsOfService to get the latest version of the terms of service.
    // Region code is either a country when the ToS applies specifically to that country or 001 when
    // it applies globally.
    acceptTermsOfService(config.getAccountId().toString(), "VERSION_HERE", "REGION_CODE_HERE");
  }
}

پی اچ پی

use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\AcceptTermsOfServiceRequest;
use Google\Shopping\Merchant\Accounts\V1\Client\TermsOfServiceServiceClient;

/**
 * Demonstrates how to accept the TermsOfService agreement in a given account.
 */
class AcceptTermsOfService
{

    /**
     * Accepts the Terms of Service agreement.
     *
     * @param string $accountId The account ID.
     * @param string $tosVersion The Terms of Service version.
     * @param string $regionCode The region code.
     * @return void
     */
    public static function acceptTermsOfService($accountId, $tosVersion, $regionCode): void
    {
        // Get OAuth credentials.
        $credentials = Authentication::useServiceAccountOrTokenFile();

        // Create client options.
        $options = ['credentials' => $credentials];

        // Create a TermsOfServiceServiceClient.
        $tosServiceClient = new TermsOfServiceServiceClient($options);

        try {
            // Prepare the request.
            $request = new AcceptTermsOfServiceRequest([
                'name' => sprintf("termsOfService/%s", $tosVersion),
                'account' => sprintf("accounts/%s", $accountId),
                'region_code' => $regionCode,
            ]);

            print "Sending request to accept terms of service...\n";
            $tosServiceClient->acceptTermsOfService($request);

            print "Successfully accepted terms of service.\n";
        } catch (ApiException $e) {
            print $e->getMessage();
        }
    }

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

        // Replace with actual values.
        $tosVersion = "132";
        $regionCode = "US";

        self::acceptTermsOfService($config['accountId'], $tosVersion, $regionCode);
    }
}

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

پایتون

from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import AcceptTermsOfServiceRequest
from google.shopping.merchant_accounts_v1 import TermsOfServiceServiceClient

# Replace with your actual values.
_ACCOUNT_ID = configuration.Configuration().read_merchant_info()
_TOS_VERSION = (  # Replace with the Terms of Service version to accept
    "VERSION_HERE"
)
_REGION_CODE = "US"  # Replace with the region code


def accept_terms_of_service():
  """Accepts the Terms of Service agreement for a given account."""

  credentials = generate_user_credentials.main()
  client = TermsOfServiceServiceClient(credentials=credentials)

  # Construct the request
  request = AcceptTermsOfServiceRequest(
      name=f"termsOfService/{_TOS_VERSION}",
      account=f"accounts/{_ACCOUNT_ID}",
      region_code=_REGION_CODE,
  )

  try:
    print("Sending request to accept terms of service...")
    client.accept_terms_of_service(request=request)
    print("Successfully accepted terms of service.")
  except RuntimeError as e:
    print(e)


if __name__ == "__main__":
  accept_terms_of_service()

ملاحظات ویژه برای ارائه دهندگان شخص ثالث

به عنوان یک ارائه دهنده شخص ثالث، شما می‌توانید شرایط خدمات (ToS) حساب‌های مشتری را مدیریت کنید.

مدیریت شرایط خدمات (ToS) برای حساب‌های کاربری مشتریان

اگر یک حساب کاربری پیشرفته دارید و برای کسب‌وکارهای مختلف حساب کاربری ایجاد می‌کنید:

  • پذیرش حساب پیشرفته : اگر یک حساب پیشرفته، سرویس تجمیع حساب را به حساب‌های مشتری ارائه دهد، شرایط خدماتی که توسط حساب پیشرفته پذیرفته می‌شود، برای تمام حساب‌های مشتری آن حساب که از آن سرویس استفاده می‌کنند نیز اعمال خواهد شد.
  • نمایش و رضایت : حتی اگر پذیرش حساب پیشرفته، حساب‌های مشتری را نیز پوشش دهد، بهترین روش (و شاید یک انتظار قانونی) نمایش شرایط خدمات مرکز بازرگانان گوگل مربوطه به مالک واقعی کسب‌وکار هر یک از این مشتریان است. شما باید رضایت صریح آنها را مبنی بر درک و موافقت با این شرایط کسب کنید، حتی اگر درخواست پذیرش API در سطح حساب پیشرفته انجام شود.
  • بررسی وضعیت حساب کاربری : از termsOfServiceAgreementStates.retrieveForApplication روی یک حساب کاربری خاص استفاده کنید تا وضعیت شرایط خدمات (ToS) آن را تأیید کنید و ببینید که آیا تحت پوشش توافق‌نامه حساب کاربری پیشرفته قرار می‌گیرد یا نیاز به اقدام مستقیم دارد.

مدیریت شرایط خدمات (ToS) برای سایر حساب‌ها

همانطور که در راهنمای پذیرندگان برای پذیرش شرایط خدمات (TOS) توضیح داده شده است، وقتی به یک کسب‌وکار در ایجاد یا مدیریت حساب خود کمک می‌کنید، آن کسب‌وکار (صاحب حساب) باید شخصاً شرایط خدمات را بپذیرد. شما این کار را با بازیابی و نمایش شرایط خدمات (TOS) و سپس فراخوانی متد termsOfService.accept از طرف آنها پس از اعلام رضایت صریح آنها از طریق رابط کاربری شما، تسهیل می‌کنید.