Чтобы использовать Merchant Center и его функции, вы должны принять Условия использования Merchant Center для местоположения вашей компании. В этих соглашениях изложены юридические условия использования сервисов Merchant Center.
В этом руководстве рассказывается, как управлять соглашениями с помощью Merchant API в собственном аккаунте или в аккаунтах, которыми вы управляете как сторонний поставщик.
Вы можете:
- Проверять текущий статус соглашения с Условиями использования для аккаунта.
- Помогите продавцам принять необходимые Условия использования.
- Управлять Условиями использования в качестве поставщика услуг для клиентских аккаунтов.
Требования
Чтобы использовать Merchant API, вам нужен аккаунт Merchant Center. После того как вы создадите аккаунт в интерфейсе Merchant Center, вы сможете вносить в него изменения (например, обновлять информацию о компании или управлять пользователями) как в интерфейсе, так и с помощью API.
Если вам нужно управлять несколькими аккаунтами, вы можете создать клиентские аккаунты с помощью Merchant API. Подробнее о том, как создать аккаунты…
Как проверить статус согласия с Условиями использования аккаунта
Чтобы продавец мог в полной мере использовать Merchant Center или если вам нужно проверить статус его соглашения, вы можете получить информацию о том, принял ли он Условия использования.
Используйте метод termsOfServiceAgreementStates.retrieveForApplication, чтобы получить информацию о согласии с Условиями использования для основного приложения Merchant Center. Этот метод возвращает текущие Условия использования, если они есть, а если они были обновлены с момента вашего последнего согласия, то и последнюю версию, которую вам нужно принять.
Пример запроса:
GET https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/termsOfServiceAgreementStates:retrieveForApplication
В результате успешного вызова возвращается ресурс TermsOfServiceAgreementState. Этот ресурс содержит:
name– идентификатор статуса соглашения.regionCode– страна, к которой относится статус соглашения (обычно это страна, в которой зарегистрирована компания).termsOfServiceKind:MERCHANT_CENTER.accepted– сведения о версии Условий использования, которую уже принял аккаунт, включая название ресурсаtermsOfService(например,termsOfService/132) и информацию о том, ктоacceptedBy. Также может быть указана датаvalidUntil, еслиrequiredболее новая версия Условий использования.required– сведения о версии Условий использования, которые необходимо принять. Он включает название ресурсаtermsOfServiceи ссылкуtosFileUriна удобочитаемый документ с Условиями использования.
Пример ответа
{
"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, вам следует помочь продавцу принять их.
Ниже приведен пример кода, который можно использовать для получения информации о статусе соглашения с Условиями использования для определенного аккаунта и страны:
Java
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();
Python
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, продавцы должны принять последнюю версию Условий использования.
Как принять Условия использования для собственного аккаунта
Если вы управляете собственным аккаунтом Merchant Center, выполните следующие действия:
- Позвоните по номеру
termsOfServiceAgreementStates.retrieveForApplication, чтобы узнать, нарушает ли ваш контент Условия использования.required - Если требуется согласие с Условиями использования, запишите название
termsOfServiceиз поляrequired(например,termsOfService/132). Позвоните по номеру
termsOfService.accept, чтобы принять Условия использования. Вам потребуется название условий использования, вашACCOUNT_IDиregionCode, возвращенный функцией retrieveForApplication.Пример запроса:
POST https://merchantapi.googleapis.com/accounts/v1/{name={termsOfService/VERSION}}:accept { "account": "accounts/{ACCOUNT_ID}", "regionCode": "{REGION_CODE}" }При успешном вызове возвращается пустое тело ответа и обновляется статус соглашения с Условиями использования аккаунта.
Как помочь продавцам принять Условия использования (для сторонних поставщиков)
Если вы сторонний поставщик услуг, управляющий аккаунтами Merchant Center других компаний, вы не должны принимать Условия использования от их имени. Вместо этого:
Получите последнюю версию Условий использования. Вызовите
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/" }Покажите условия использования. Используйте
fileUriиз ответа, чтобы показать продавцу полный текст условий использования в интерфейсе вашего приложения.Получите согласие продавца. Продавец должен явно согласиться с условиями в вашем интерфейсе.
Зарегистрируйте принятие условий с помощью API. После того как продавец примет условия, вызовите
termsOfService.accept, используяnameиз условий, полученных на шаге 1,ACCOUNT_IDпродавца и егоregionCode.Пример запроса
POST https://merchantapi.googleapis.com/accounts/v1/{name={termsOfService/VERSION}}:accept { "account": "accounts/{MERCHANT_ACCOUNT_ID}", "regionCode": "{REGION_CODE}" }
Ниже приведен пример кода, который можно использовать, чтобы принять условия использования для определенного аккаунта (после того как продавец согласится с ними):
Java
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();
Python
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()
Особые требования для сторонних поставщиков
Как сторонний поставщик услуг, вы можете управлять Условиями использования для клиентских аккаунтов.
Как управлять Условиями использования для клиентских аккаунтов
Если вы используете расширенный аккаунт и создаете клиентские аккаунты для разных компаний:
- Расширенное принятие условий использования. Если расширенный аккаунт предоставляет клиентским аккаунтам сервис агрегирования, то условия использования, принятые в расширенном аккаунте, будут также применяться ко всем клиентским аккаунтам, в которых используется этот сервис.
- Показ и согласие. Даже если согласие, полученное в основном аккаунте, распространяется на клиентские аккаунты, рекомендуется (а иногда и требуется по закону) показывать владельцу каждого клиентского аккаунта Условия использования Google Merchant Center. Вы должны получить явное согласие на то, что они понимают и принимают эти условия, даже если вызов API для принятия выполняется на уровне расширенного аккаунта.
- Проверка статуса клиентского аккаунта. Используйте команду
termsOfServiceAgreementStates.retrieveForApplicationв определенном клиентском аккаунте, чтобы проверить его статус в отношении Условий использования и узнать, распространяется ли на него соглашение расширенного аккаунта или требуется ли выполнить какие-либо действия.
Как управлять условиями использования для других аккаунтов
Как указано в руководстве по принятию Условий использования, если вы помогаете компании создать или настроить аккаунт, она (владелец аккаунта) должна лично принять Условия использования . Для этого вам нужно получить и показать условия использования, а затем вызвать метод termsOfService.accept от имени пользователя после того, как он даст явное согласие через ваш интерфейс.