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

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

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

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

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

پیش نیازها

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

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

وضعیت توافقنامه ToS یک حساب را بررسی کنید

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

از روش termsOfServiceAgreementStates.retrieveForApplication برای دریافت وضعیت توافقنامه ToS برای برنامه Merchant Center هسته استفاده کنید. این روش، در صورت وجود، ToS فعلی شما را برمی‌گرداند، و اگر 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 نیز باشد.
  • 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/"
  }
}

اگر به یک ToS جدید 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);
  }
}

PHP

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()

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

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

ToS را برای حساب خود بپذیرید

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

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

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

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

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

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

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

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

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

    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 از پاسخ برای نمایش متن کامل شرایط خدمات به تاجر در UI برنامه خود استفاده کنید.

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

  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");
  }
}

PHP

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

ToS را برای حساب های مستقل مدیریت کنید

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