Чтобы использовать Merchant Center и его функции, вам необходимо принять Условия обслуживания Merchant Center для вашего офиса. Эти соглашения определяют юридические условия использования услуг Merchant Center.
В этом руководстве объясняется, как использовать API торговца для управления этими соглашениями, как для вашей собственной учетной записи, так и для учетных записей, которыми вы управляете как сторонний поставщик (3P).
Вы можете добиться следующего:
- Проверьте текущий статус соглашения ToS для учетной записи.
- Помогите торговцам принять необходимые Условия предоставления услуг.
- Управляйте ToS в качестве стороннего поставщика для клиентских учетных записей или отдельных учетных записей.
Предпосылки
Для использования Merchant API вам потребуется учётная запись Merchant Center. После её создания в пользовательском интерфейсе Merchant Center вы сможете вносить изменения в учётную запись (например, обновлять информацию о компании, управлять пользователями и т. д.) как через пользовательский интерфейс, так и через API.
Если вам нужно управлять несколькими аккаунтами, вы можете создать клиентские аккаунты с помощью Merchant API. См. раздел Создание и управление субаккаунтами .
Проверьте состояние соглашения ToS учетной записи
Прежде чем торговец сможет в полной мере использовать Merchant Center или если вам необходимо проверить текущий статус его соглашения, вы можете получить статус его соглашения об условиях обслуживания.
Используйте метод termsOfServiceAgreementStates.retrieveForApplication
для получения состояния соглашения с Условиями использования (ToS) для основного приложения Merchant Center. Этот метод возвращает ваши текущие Условия использования (если таковые имеются), а также, если Условия использования были обновлены с момента вашего последнего принятия, последнюю версию, которую вам необходимо принять.
Вот пример запроса:
GET https://merchantapi.googleapis.com/accounts/v1beta/accounts/{ACCOUNT_ID}/termsOfServiceAgreementStates:retrieveForApplication
Успешный вызов возвращает ресурс TermsOfServiceAgreementState
. Этот ресурс содержит:
-
name
: Идентификатор этого состояния соглашения. -
regionCode
: Страна, к которой применяется данное соглашение, обычно страна ведения бизнеса по счету. -
termsOfServiceKind
: Это будетMERCHANT_CENTER
. -
accepted
: сведения о версии ToS, которую уже приняла учётная запись, включая название ресурсаtermsOfService
(например,termsOfService/132
) и кем он былacceptedBy
. Также может включать датуvalidUntil
, еслиrequired
более новая версия ToS . -
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.v1beta.GetTermsOfServiceAgreementStateRequest;
import com.google.shopping.merchant.accounts.v1beta.TermsOfServiceAgreementState;
import com.google.shopping.merchant.accounts.v1beta.TermsOfServiceAgreementStateName;
import com.google.shopping.merchant.accounts.v1beta.TermsOfServiceAgreementStateServiceClient;
import com.google.shopping.merchant.accounts.v1beta.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\V1beta\Client\TermsOfServiceAgreementStateServiceClient;
use Google\Shopping\Merchant\Accounts\V1beta\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_v1beta import GetTermsOfServiceAgreementStateRequest
from google.shopping.merchant_accounts_v1beta 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
ли какие-либо ToS. - Если требуются ToS, запишите название
termsOfService
изrequired
поля (например,termsOfService/132
). Чтобы принять Условия предоставления услуг, вызовите метод
termsOfService.accept
. Вам понадобятся название условий предоставления услуг, вашACCOUNT_ID
иregionCode
возвращаемый функцией retrieveForApplication.Вот пример запроса:
POST https://merchantapi.googleapis.com/accounts/v1beta/{name={termsOfService/VERSION}}:accept { "account": "accounts/{ACCOUNT_ID}", "regionCode": "{REGION_CODE}" }
Успешный вызов возвращает пустое тело ответа и обновляет состояние соглашения ToS учетной записи.
Помогите продавцам принять Условия предоставления услуг (для сторонних поставщиков)
Если вы являетесь сторонним поставщиком услуг (3P), управляющим отдельными аккаунтами Merchant Center для других компаний, вы не должны принимать Условия предоставления услуг от их имени. Вместо этого вам следует:
Получите последнюю версию ToS : вызовите
termsOfService.retrieveLatest
дляregionCode
и типаMERCHANT_CENTER
продавца, чтобы получить сведения о последней версии ToS, которую ему, возможно, придется принять.Образец запроса:
GET https://merchantapi.googleapis.com/accounts/v1beta/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/" }
Отобразите ToS : используйте
fileUri
из ответа, чтобы отобразить полный текст Условий обслуживания для продавца в пользовательском интерфейсе вашего приложения.Получите согласие продавца : продавец должен явно согласиться с условиями в вашем пользовательском интерфейсе.
Запишите принятие с помощью API : после того, как продавец примет условия, вызовите
termsOfService.accept
, используяname
ToS, полученное на шаге 1,ACCOUNT_ID
продавца и егоregionCode
.Образец запроса:
POST https://merchantapi.googleapis.com/accounts/v1beta/{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.v1beta.AcceptTermsOfServiceRequest;
import com.google.shopping.merchant.accounts.v1beta.TermsOfServiceServiceClient;
import com.google.shopping.merchant.accounts.v1beta.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\V1beta\AcceptTermsOfServiceRequest;
use Google\Shopping\Merchant\Accounts\V1beta\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_v1beta import AcceptTermsOfServiceRequest
from google.shopping.merchant_accounts_v1beta 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 для клиентских аккаунтов
Если вы используете расширенную учетную запись и создаете клиентские учетные записи для разных предприятий:
- Принятие расширенного счета : если расширенный счет предоставляет услугу агрегации счетов для клиентских счетов, то Условия обслуживания, принятые расширенным счетом, будут также применяться ко всем его клиентским счетам с этой услугой.
- Отображение и согласие : даже если принятие расширенного аккаунта распространяется на клиентские аккаунты, рекомендуется (и может быть юридически обязательным) отображать соответствующие Условия обслуживания Google Merchant Center фактическому владельцу каждого клиентского аккаунта. Вам необходимо получить их явное согласие на то, что они понимают и принимают эти условия, даже если запрос API на принятие условий выполняется на уровне расширенного аккаунта.
- Проверка статуса клиентской учетной записи : используйте
termsOfServiceAgreementStates.retrieveForApplication
для конкретной клиентской учетной записи, чтобы проверить ее статус ToS и узнать, подпадает ли она под действие расширенного соглашения учетной записи или требуются какие-либо прямые действия.
Управление ToS для отдельных учетных записей
Как подробно описано в разделе «Руководство для продавцов по принятию Условий обслуживания» , когда вы помогаете компании создать или управлять отдельной учётной записью Merchant Center, эта компания (владелец учётной записи) должна лично принять Условия обслуживания. Вы обеспечиваете это, извлекая и отображая Условие обслуживания, а затем вызывая метод termsOfService.accept
от имени компании после того, как она дала своё явное согласие через ваш интерфейс.