С помощью Merchant API можно создавать аккаунты Merchant Center, которые можно связать с расширенным аккаунтом, используя accountAggregation, accountManagement или comparisonShopping. Метод accounts.createAndConfigure позволяет создать аккаунт, добавить в него пользователей и связать его с другими аккаунтами через сервисы.
В этом руководстве рассказывается, как создавать аккаунты с помощью Merchant API, используя accountAggregation, accountManagement или comparisonShopping.
accountAggregation: используется торговыми площадками, мультибрендовыми и международными розничными продавцами, а также партнерами, создающими дочерние аккаунты в расширенном мультиаккаунте.accountManagement: используется агентствами, которые создают отдельные аккаунты, принадлежащие продавцу.comparisonShopping– используется сервисами сравнения цен, которые создают аккаунты в ЕЭЗ и странах, где доступны такие сервисы.
При использовании accounts.createAndConfigure необходимо связать новый аккаунт с поставщиком, указав хотя бы одно из значений accountAggregation, accountManagement или comparisonShopping в поле service. В одном запросе можно указать accountAggregation и comparisonShopping, но accountManagement нельзя использовать вместе с accountAggregation или comparisonShopping. Если вы указали accountManagement, добавьте в новый аккаунт хотя бы одного пользователя, заполнив поле user или users.
Требования
Прежде чем создавать аккаунты с помощью Merchant API, убедитесь, что вы соответствуете следующим требованиям в зависимости от используемых вами сервисов:
- Доступ с правами администратора. Чтобы связать новый аккаунт с помощью
accountManagement,comparisonShoppingилиaccountAggregation, у вас должен быть доступ с правами администратора к аккаунту поставщика. - Расширенный аккаунт. Если вы используете
accountAggregation, ваш аккаунт поставщика должен быть расширенным и настроенным для агрегирования аккаунтов. Если вы поставщик услуг и вам нужно настроить расширенный аккаунт, обратитесь в службу поддержки.
Создание аккаунта (с помощью управления аккаунтом или сервиса сравнения цен)
Чтобы создать аккаунт, вызовите метод accounts.createAndConfigure.
Это рекомендуемый подход для партнеров, помогающих продавцам управлять своими аккаунтами, поскольку он позволяет продавцам сохранять полный контроль над своим аккаунтом и право собственности на него, предоставляя партнерам определенные разрешения.
В теле запроса:
- Укажите сведения об аккаунте, который вы хотите создать, в поле
account. - В поле
accountNameне используйте лишние знаки препинания, заглавные буквы, символы подчеркивания, эмодзи и небуквенно-цифровые символы, такие как/или_. Не используйте в названии добавочные обозначения (например, "ОАО", "ИП", "Inc." и "GmbH"), рекламный текст, личную информацию и неприемлемую лексику. Используйте короткое, понятное и профессиональное название. Подробнее о том, как добавить название компании… - Если вы используете
accountManagement, укажите в полеuserхотя бы одного пользователя, у которого будет доступ к аккаунту. - В поле
serviceукажите сервисы, которые вы хотите предоставить этому аккаунту, напримерaccountManagement, и задайте дляproviderназвание ресурса вашего аккаунта (например,providers/{YOUR_ACCOUNT_ID}). Список доступных сервисов, таких какproductsManagementилиcampaignsManagement, можно найти в статье Как управлять связями между аккаунтами.
Ниже приведен пример запроса на создание аккаунта с названием merchantStore и связывание его с аккаунтом {YOUR_ACCOUNT_ID} для управления аккаунтами и товарами.
POST https://merchantapi.googleapis.com/accounts/v1/accounts:createAndConfigure
{
"account": {
"accountName": "merchantStore",
"adultContent": false,
"timeZone": {
"id": "America/New_York"
},
"languageCode": "en-US"
},
"user": [
{
"userId": "test@example.com",
"user": {
"accessRights": ["ADMIN"]
}
}
],
"service": [
{
"accountManagement": {},
"provider": "providers/{YOUR_ACCOUNT_ID}"
},
{
"productsManagement": {},
"provider": "providers/{YOUR_ACCOUNT_ID}"
}
]
}
В случае успеха будет создан новый аккаунт, связанный с вашим аккаунтом для указанных сервисов. Если при создании вы укажете сервисы accountManagement, accountAggregation или comparisonShopping, они будут автоматически одобрены, а связь получит статус ESTABLISHED. Связи с другими сервисами могут иметь статус PENDING, пока они не будут приняты в созданном аккаунте. Тело ответа содержит только что созданный ресурс Account.
В примере ниже показано, как использовать accounts.createAndConfigure для создания и настройки аккаунта.
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.AccessRight;
import com.google.shopping.merchant.accounts.v1.Account;
import com.google.shopping.merchant.accounts.v1.AccountManagement;
import com.google.shopping.merchant.accounts.v1.AccountsServiceClient;
import com.google.shopping.merchant.accounts.v1.AccountsServiceSettings;
import com.google.shopping.merchant.accounts.v1.CreateAndConfigureAccountRequest;
import com.google.shopping.merchant.accounts.v1.CreateAndConfigureAccountRequest.AddAccountService;
import com.google.shopping.merchant.accounts.v1.CreateAndConfigureAccountRequest.AddUser;
import com.google.shopping.merchant.accounts.v1.ProductsManagement;
import com.google.shopping.merchant.accounts.v1.User;
import com.google.type.TimeZone;
import java.util.List;
import shopping.merchant.samples.utils.Authenticator;
/**
* This class demonstrates how to create a new Merchant Center account and configure it with various
* services.
*/
public class CreateAndConfigureAccountSample {
public static void createAndConfigureAccount(
long providerId, String newAccountName, String userEmail) throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the credentials retrieved above.
AccountsServiceSettings accountsServiceSettings =
AccountsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Calls the API and catches and prints any network failures/errors.
try (AccountsServiceClient accountsServiceClient =
AccountsServiceClient.create(accountsServiceSettings)) {
// The account to be created.
Account account =
Account.newBuilder()
.setAccountName(newAccountName)
.setTimeZone(TimeZone.newBuilder().setId("Europe/Zurich").build())
.setLanguageCode("en-US")
.build();
// The services to be added to the new account.
// This sample shows how to configure a new account with account management and
// product management.
// For more information about the different services, see:
// https://developers.google.com/merchant/api/guides/accounts/services
AddAccountService accountManagementService =
AddAccountService.newBuilder()
.setProvider("accounts/" + providerId)
.setExternalAccountId("external_account_id")
.setAccountManagement(AccountManagement.newBuilder().build())
.build();
// This part is optional. You can also omit this and link the account later.
AddAccountService productsManagementService =
AddAccountService.newBuilder()
.setProvider("accounts/" + providerId)
.setExternalAccountId("external_account_id")
.setProductsManagement(ProductsManagement.newBuilder().build())
.build();
// For sub-account creation, use the AccountAggregation service. For an example on how to do
// this, see the `CreateSubAccount` sample.
// The user to be added to the new account.
// This part is optional.
AddUser user =
AddUser.newBuilder()
.setUserId(userEmail)
.setUser(User.newBuilder().addAccessRights(AccessRight.STANDARD).build())
.build();
CreateAndConfigureAccountRequest request =
CreateAndConfigureAccountRequest.newBuilder()
.setAccount(account)
.addAllService(List.of(accountManagementService, productsManagementService))
.addUser(user)
.build();
System.out.println("Sending Create and Configure Account request:");
Account response = accountsServiceClient.createAndConfigureAccount(request);
System.out.println("Created Account below");
System.out.println(response);
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
// This is the provider ID of the e-commerce platform.
long providerId = 123L;
// This is the name of the new account to be created.
String newAccountName = "MyNewShop";
// This is the email of a user to be added to the new account.
String userEmail = "test-user@gmail.com";
createAndConfigureAccount(providerId, newAccountName, userEmail);
}
}
После создания аккаунта вам нужно будет выполнить несколько действий, например принять Условия использования , указать информацию о компании и подтвердить сайт.
Отключить подтверждение адреса электронной почты при создании аккаунта
При создании аккаунта с помощью accounts.createAndConfigure вы можете отключить отправку писем с подтверждением для новых пользователей, добавленных с помощью поля user, установив для verificationMailSettings.verificationMailMode значение SUPPRESS_VERIFICATION_MAIL в запросе для этого пользователя. Это полезно, если вы хотите подтверждать пользователей от имени продавца сразу после создания с помощью метода users.verifySelf. По умолчанию для параметра verificationMailMode задано значение SEND_VERIFICATION_MAIL, и письма с подтверждением отправляются новым пользователям, добавленным при создании аккаунта.
POST https://merchantapi.googleapis.com/accounts/v1/accounts:createAndConfigure
{
"account": {
"accountName": "merchantStore",
"adultContent": false,
"timeZone": {
"id": "America/New_York"
},
"languageCode": "en-US"
},
"user": [
{
"userId": "test@example.com",
"user": {
"accessRights": ["ADMIN"]
},
"verificationMailSettings": {
"verificationMailMode": "SUPPRESS_VERIFICATION_MAIL"
}
}
],
"service": [
{
"accountManagement": {},
"provider": "providers/{YOUR_ACCOUNT_ID}"
}
]
}
Если для параметра verificationMailMode задано значение SUPPRESS_VERIFICATION_MAIL, то для каждого пользователя, добавленного при создании, необходимо вызвать users.verifySelf, чтобы завершить проверку. Этот вызов должен быть аутентифицирован как пользователь, который проходит проверку (пользователь, указанный в userId), например с помощью токена OAuth от пользователя.
Как указать псевдоним при создании аккаунта
Вы можете указать псевдоним для аккаунта в контексте поставщика в CreateAndConfigureAccountRequest, используя поле setAlias. Псевдоним можно использовать для идентификации аккаунта в вашей системе. Если вы поставщик услуг, то можете использовать псевдоним, чтобы получить аккаунт с помощью GET /accounts/v1/accounts/{provider}~{alias}. Псевдоним должен быть уникальным для определенного поставщика, и вы должны указать сервис с тем же поставщиком в поле service запроса. Подробнее о требованиях к псевдонимам…
POST https://merchantapi.googleapis.com/accounts/v1/accounts:createAndConfigure
{
"account": {
"accountName": "merchantStore",
"adultContent": false,
"timeZone": {
"id": "America/New_York"
},
"languageCode": "en-US"
},
"service": [
{
"accountManagement": {},
"provider": "providers/{YOUR_ACCOUNT_ID}"
}
],
"setAlias": [
{
"provider": "providers/{YOUR_ACCOUNT_ID}",
"accountIdAlias": "my-merchant-alias"
}
]
}
Рекомендуемый процесс регистрации
Если вы партнер, который создает аккаунт от имени продавца, рекомендуем выполнить следующие действия:
- Создание аккаунта. Вызовите метод
accounts.createAndConfigure, указав учетные данные партнера, чтобы создать аккаунт.- Настройте
service, чтобы включитьaccountManagement, связанный с идентификатором поставщика. - Добавьте продавца в качестве пользователя, заполнив поле
userи задав для поляverificationMailSettings.verificationMailModeзначениеSUPPRESS_VERIFICATION_MAIL.
- Настройте
- Подтвердите пользователя. Используя учетные данные продавца (например, токен OAuth), вызовите
users.verifySelf, чтобы изменить статус пользователя сPENDINGнаVERIFIED. - Укажите страну компании. Используя учетные данные продавца, укажите страну компании, обновив
address.regionCodeс помощьюaccounts.updateBusinessInfo. Это необходимо сделать, прежде чем принимать Условия использования . - Примите Условия использования. Войдите в аккаунт продавца и примите Условия использования .
Этот процесс позволяет продавцу легко зарегистрироваться на вашей платформе, не получая электронных писем с приглашениями от Google.
Как создать клиентский аккаунт (с помощью агрегирования аккаунтов)
Клиентские аккаунты – это отдельные аккаунты Merchant Center, связанные с вашим расширенным аккаунтом через сервис accountAggregation. Они позволяют централизованно управлять данными, сохраняя при этом отдельные настройки, сайты и фиды данных. Вы можете использовать дочерний API аккаунтов продавцов, чтобы создавать новые клиентские аккаунты.
Чтобы создавать дочерние аккаунты, у вас должен быть расширенный аккаунт. Чтобы преобразовать аккаунт Merchant Center в расширенный, вы должны быть администратором аккаунта. Кроме того, в аккаунте не должно быть нерешенных проблем.
Чтобы создать новый клиентский аккаунт, вызовите метод accounts.createAndConfigure.
В теле запроса:
- Укажите сведения об аккаунте, который вы хотите создать, в поле
account. - В поле
accountNameне должно быть лишних знаков препинания, заглавных букв, символов подчеркивания и других небуквенно-цифровых символов, например "/" или "_". Не добавляйте в название организационно-правовую форму (например, "ООО" или "АО"), рекламный текст, личную информацию и неприемлемые выражения. Используйте короткое, понятное и профессиональное название. Подробнее о том, как добавить название компании… - При необходимости укажите новых авторизованных пользователей в поле
user. Доступ пользователей к аккаунту также наследуется от родительского расширенного аккаунта. - В поле
serviceукажитеaccountAggregationи задайте дляproviderназвание ресурса расширенного аккаунта (например,providers/{ADVANCED_ACCOUNT_ID}). Это позволит сделать расширенный аккаунт агрегатором для нового аккаунта.
Ниже приведен пример запроса на создание клиентского аккаунта с названием merchantStore, связанного с расширенным аккаунтом {ADVANCED_ACCOUNT_ID}.
POST https://merchantapi.googleapis.com/accounts/v1/accounts:createAndConfigure
{
"account": {
"accountName": "merchantStore",
"adultContent": false,
"timeZone": {
"id": "America/New_York"
},
"languageCode": "en-US"
},
"service": [
{
"accountAggregation": {},
"provider": "providers/{ADVANCED_ACCOUNT_ID}"
}
]
}
В случае успеха будет создан новый клиентский аккаунт, связанный с указанным расширенным аккаунтом. Тело ответа будет содержать только что созданный ресурс Account.
В примерах ниже показано, как создать новый клиентский аккаунт с помощью accounts.createAndConfigure.
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.Account;
import com.google.shopping.merchant.accounts.v1.AccountAggregation;
import com.google.shopping.merchant.accounts.v1.AccountsServiceClient;
import com.google.shopping.merchant.accounts.v1.AccountsServiceSettings;
import com.google.shopping.merchant.accounts.v1.CreateAndConfigureAccountRequest;
import com.google.shopping.merchant.accounts.v1.CreateAndConfigureAccountRequest.AddAccountService;
import com.google.type.TimeZone;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to create a sub-account under an advanced account. */
public class CreateSubAccountSample {
private static String getParent(String accountId) {
return String.format("accounts/%s", accountId);
}
public static Account createSubAccount(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.
AccountsServiceSettings accountsServiceSettings =
AccountsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Creates parent/provider to identify the advanced account into which to insert the subaccount.
String parent = getParent(config.getAccountId().toString());
// Calls the API and catches and prints any network failures/errors.
try (AccountsServiceClient accountsServiceClient =
AccountsServiceClient.create(accountsServiceSettings)) {
CreateAndConfigureAccountRequest request =
CreateAndConfigureAccountRequest.newBuilder()
.setAccount(
Account.newBuilder()
.setAccountName("Demo Business")
.setAdultContent(false)
.setTimeZone(TimeZone.newBuilder().setId("America/New_York").build())
.setLanguageCode("en-US")
.build())
.addService(
AddAccountService.newBuilder()
.setProvider(parent)
.setAccountAggregation(AccountAggregation.getDefaultInstance())
.build())
.build();
System.out.println("Sending Create SubAccount request");
Account response = accountsServiceClient.createAndConfigureAccount(request);
System.out.println("Inserted Account Name below");
// Format: `accounts/{account}`
System.out.println(response.getName());
return response;
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
createSubAccount(config);
}
}
PHP
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\Account;
use Google\Shopping\Merchant\Accounts\V1\AccountAggregation;
use Google\Shopping\Merchant\Accounts\V1\Client\AccountsServiceClient;
use Google\Shopping\Merchant\Accounts\V1\CreateAndConfigureAccountRequest;
use Google\Shopping\Merchant\Accounts\V1\CreateAndConfigureAccountRequest\AddAccountService;
use Google\Type\TimeZone;
/**
* This class demonstrates how to create a sub-account under an MCA account.
*/
class CreateSubAccount
{
private static function getParent(string $accountId): string
{
return sprintf("accounts/%s", $accountId);
}
public static function createSubAccount(array $config): void
{
// Gets the OAuth credentials to make the request.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Creates options config containing credentials for the client to use.
$options = ['credentials' => $credentials];
// Creates a client.
$accountsServiceClient = new AccountsServiceClient($options);
// Creates parent/provider to identify the MCA account into which to insert the subaccount.
$parent = self::getParent($config['accountId']);
// Calls the API and catches and prints any network failures/errors.
try {
$request = new CreateAndConfigureAccountRequest([
'account' => (new Account([
'account_name' => 'Demo Business',
'adult_content' => false,
'time_zone' => (new TimeZone(['id' => 'America/New_York'])),
'language_code' => 'en-US',
])),
'service' => [
(new AddAccountService([
'provider' => $parent,
'account_aggregation' => new AccountAggregation,
])),
],
]);
print "Sending Create SubAccount request\n";
$response = $accountsServiceClient->createAndConfigureAccount($request);
print "Inserted Account Name below\n";
// Format: `accounts/{account}
print $response->getName() . PHP_EOL;
} catch (ApiException $e) {
print $e->getMessage();
}
}
public function callSample(): void
{
$config = Config::generateConfig();
self::createSubAccount($config);
}
}
$sample = new CreateSubAccount();
$sample->callSample();
Python
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import Account
from google.shopping.merchant_accounts_v1 import AccountAggregation
from google.shopping.merchant_accounts_v1 import AccountsServiceClient
from google.shopping.merchant_accounts_v1 import CreateAndConfigureAccountRequest
def get_parent(account_id):
return f"accounts/{account_id}"
def create_sub_account(account_id: str) -> Account:
"""Creates a sub-account under an advanced account."""
# Get OAuth credentials.
credentials = generate_user_credentials.main()
# Create a client.
client = AccountsServiceClient(credentials=credentials)
# Get the parent advanced account ID.
parent = get_parent(account_id)
# Create the request.
request = CreateAndConfigureAccountRequest(
account=Account(
account_name="Demo Business",
adult_content=False,
time_zone={"id": "America/New_York"},
language_code="en-US",
),
service=[
CreateAndConfigureAccountRequest.AddAccountService(
provider=parent,
account_aggregation=AccountAggregation(),
)
],
)
# Make the request and print the response.
try:
print("Sending Create SubAccount request")
response = client.create_and_configure_account(request=request)
print("Inserted Account Name below")
print(response.name)
return response
except RuntimeError as e:
print(e)
raise
if __name__ == "__main__":
_account_id = configuration.Configuration().read_merchant_info()
create_sub_account(_account_id)
cURL
curl -X POST \
"https://merchantapi.googleapis.com/accounts/v1/accounts:createAndConfigure" \
-H "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"account": {
"accountName": "Demo Business",
"adultContent": false,
"timeZone": {
"id": "America/New_York"
},
"languageCode": "en-US"
},
"service": [
{
"accountAggregation": {},
"provider": "providers/{ADVANCED_ACCOUNT_ID}"
}
]
}'
Как получить клиентские аккаунты
Чтобы получить список всех клиентских аккаунтов, связанных с расширенным аккаунтом, используйте метод accounts.listSubaccounts. Укажите идентификатор расширенного аккаунта в поле provider URL запроса.
Ниже приведен пример запроса.
GET https://merchantapi.googleapis.com/accounts/v1/accounts/{ADVANCED_ACCOUNT_ID}:listSubaccounts
Ниже приведен пример ответа на успешный вызов.
{
"accounts": [
{
"name": "accounts/<var class=\"readonly\">{SUB_ACCOUNT_ID_1}</var>",
"accountId": "<var class=\"readonly\">{SUB_ACCOUNT_ID_1}</var>",
"accountName": "<var class=\"readonly\">{SUB_ACCOUNT_NAME_1}</var>",
"timeZone": {
"id": "America/Los_Angeles"
},
"languageCode": "en-US"
},
{
"name": "accounts/<var class=\"readonly\">{SUB_ACCOUNT_ID_2}</var>",
"accountId": "<var class=\"readonly\">{SUB_ACCOUNT_ID_2}</var>",
"accountName": "<var class=\"readonly\">{SUB_ACCOUNT_NAME_2}</var>",
"timeZone": {
"id": "America/Los_Angeles"
},
"languageCode": "en-US"
}
]
}
В примерах ниже показано, как получить список всех клиентских аккаунтов расширенного аккаунта.
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.Account;
import com.google.shopping.merchant.accounts.v1.AccountsServiceClient;
import com.google.shopping.merchant.accounts.v1.AccountsServiceClient.ListSubAccountsPagedResponse;
import com.google.shopping.merchant.accounts.v1.AccountsServiceSettings;
import com.google.shopping.merchant.accounts.v1.ListSubAccountsRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to list all the subaccounts of an advanced account. */
public class ListSubAccountsSample {
private static String getParent(String accountId) {
return String.format("accounts/%s", accountId);
}
public static ListSubAccountsPagedResponse listSubAccounts(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.
AccountsServiceSettings accountsServiceSettings =
AccountsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Creates parent/provider to identify the advanced account from which to list all sub-accounts.
String parent = getParent(config.getAccountId().toString());
// Calls the API and catches and prints any network failures/errors.
try (AccountsServiceClient accountsServiceClient =
AccountsServiceClient.create(accountsServiceSettings)) {
// The parent has the format: accounts/{account}
ListSubAccountsRequest request =
ListSubAccountsRequest.newBuilder().setProvider(parent).build();
System.out.println("Sending list subaccounts request:");
ListSubAccountsPagedResponse response = accountsServiceClient.listSubAccounts(request);
int count = 0;
// Iterates over all rows in all pages and prints the datasource in each row.
// Automatically uses the `nextPageToken` if returned to fetch all pages of data.
for (Account account : response.iterateAll()) {
System.out.println(account);
count++;
}
System.out.print("The following count of accounts were returned: ");
System.out.println(count);
return response;
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
listSubAccounts(config);
}
}
PHP
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\Client\AccountsServiceClient;
use Google\Shopping\Merchant\Accounts\V1\ListSubAccountsRequest;
/**
* This class demonstrates how to list all the subaccounts of an advanced account.
*/
class ListSubAccounts
{
private static function getParent(string $accountId): string
{
return sprintf("accounts/%s", $accountId);
}
public static function listSubAccounts(array $config): void
{
// Gets the OAuth credentials to make the request.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Creates options config containing credentials for the client to use.
$options = ['credentials' => $credentials];
// Creates a client.
$accountsServiceClient = new AccountsServiceClient($options);
// Creates parent/provider to identify the advanced account from which
//to list all accounts.
$parent = self::getParent($config['accountId']);
// Calls the API and catches and prints any network failures/errors.
try {
// The parent has the format: accounts/{account}
$request = new ListSubAccountsRequest(['provider' => $parent]);
print "Sending list subaccounts request:\n";
$response = $accountsServiceClient->listSubAccounts($request);
$count = 0;
// Iterates over all rows in all pages and prints the datasource in each row.
// Automatically uses the `nextPageToken` if returned to fetch all pages of data.
foreach ($response->iterateAllElements() as $account) {
print_r($account);
$count++;
}
print "The following count of accounts were returned: ";
print $count . PHP_EOL;
} catch (ApiException $e) {
print "An error has occured: \n";
print $e->getMessage();
}
}
public function callSample(): void
{
$config = Config::generateConfig();
self::listSubAccounts($config);
}
}
$sample = new ListSubAccounts();
$sample->callSample();
Python
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import AccountsServiceClient
from google.shopping.merchant_accounts_v1 import ListSubAccountsRequest
def get_parent(account_id):
return f"accounts/{account_id}"
def list_sub_accounts(account_id: str):
"""Lists all the subaccounts of an advanced account."""
# Get OAuth credentials.
credentials = generate_user_credentials.main()
# Create a client.
client = AccountsServiceClient(credentials=credentials)
# Get the parent advanced account ID.
parent = get_parent(account_id)
# Create the request.
request = ListSubAccountsRequest(provider=parent)
# Make the request and print the response.
try:
print("Sending list subaccounts request:")
response = client.list_sub_accounts(request=request)
count = 0
for account in response:
print(account)
count += 1
print(f"The following count of accounts were returned: {count}")
return response
except RuntimeError as e:
print("An error has occured: ")
print(e)
raise
if __name__ == "__main__":
_account_id = configuration.Configuration().read_merchant_info()
list_sub_accounts(_account_id)
cURL
curl -X GET \
"https://merchantapi.googleapis.com/accounts/v1/accounts/{ADVANCED_ACCOUNT_ID}:listSubaccounts" \
-H "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
Как удалить клиентский аккаунт
Если вам больше не нужно управлять клиентским аккаунтом, вы можете удалить его с помощью метода accounts.delete.
Для выполнения этого метода необходим доступ с правами администратора к удаляемому аккаунту.
Ниже приведен пример запроса.
DELETE https://merchantapi.googleapis.com/accounts/v1/accounts/{SUB_ACCOUNT_ID}
Если запрос выполнен успешно, тело ответа представляет собой пустой объект JSON, указывающий на то, что аккаунт удален.
Ниже приведены примеры удаления клиентского аккаунта.
Java
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.AccountsServiceClient;
import com.google.shopping.merchant.accounts.v1.AccountsServiceSettings;
import com.google.shopping.merchant.accounts.v1.DeleteAccountRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to delete a given Merchant Center account. */
public class DeleteAccountSample {
// This method can delete a standalone, advanced account or sub-account. If you delete an advanced
// account,
// all sub-accounts will also be deleted.
// Admin user access is required to execute this method.
public static void deleteAccount(Config config, String accountId) throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the credentials retrieved above.
AccountsServiceSettings accountsServiceSettings =
AccountsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Creates account name to identify the account.
String name =
AccountName.newBuilder()
.setAccount(accountId)
.build()
.toString();
// Calls the API.
try (AccountsServiceClient accountsServiceClient =
AccountsServiceClient.create(accountsServiceSettings)) {
DeleteAccountRequest request =
DeleteAccountRequest.newBuilder()
.setName(name)
// Optional. If set to true, the account will be deleted even if it has offers or
// provides services to other accounts. Defaults to 'false'.
.setForce(true)
.build();
System.out.println("Sending Delete Account request");
accountsServiceClient.deleteAccount(request); // No response returned on success.
System.out.println("Delete successful.");
}
}
public static void deleteAccount(Config config) throws Exception {
deleteAccount(config, config.getAccountId().toString());
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
deleteAccount(config);
}
}
PHP
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\Client\AccountsServiceClient;
use Google\Shopping\Merchant\Accounts\V1\DeleteAccountRequest;
/**
* This class demonstrates how to delete a given Merchant Center account.
*/
class DeleteAccount
{
private static function getParent(string $accountId): string
{
return sprintf("accounts/%s", $accountId);
}
// This method can delete a standalone, advanced account or sub-account.
// If you delete an advanced account, all sub-accounts will also be deleted.
// Admin user access is required to execute this method.
public static function deleteAccount(array $config): void
{
// Gets the OAuth credentials to make the request.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Creates options config containing credentials for the client to use.
$options = ['credentials' => $credentials];
// Creates a client.
$accountsServiceClient = new AccountsServiceClient($options);
// Gets the account ID from the config file.
$accountId = $config['accountId'];
// Creates account name to identify the account.
$name = self::getParent($accountId);
// Calls the API and catches and prints any network failures/errors.
try {
$request = new DeleteAccountRequest([
'name' => $name,
// Optional. If set to true, the account will be deleted even if it has offers or
// provides services to other accounts. Defaults to 'false'.
'force' => true,
]);
print "Sending Delete Account request\n";
$accountsServiceClient->deleteAccount($request); // No response returned on success.
print "Delete successful.\n";
} catch (ApiException $e) {
print $e->getMessage();
}
}
public function callSample(): void
{
$config = Config::generateConfig();
self::deleteAccount($config);
}
}
$sample = new DeleteAccount();
$sample->callSample();
Python
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import AccountsServiceClient
from google.shopping.merchant_accounts_v1 import DeleteAccountRequest
def get_parent(account_id):
return f"accounts/{account_id}"
def delete_account(account_id: str):
"""Deletes a given Merchant Center account."""
# Get OAuth credentials.
credentials = generate_user_credentials.main()
# Create a client.
client = AccountsServiceClient(credentials=credentials)
# Create the account name.
name = get_parent(account_id)
# Create the request.
request = DeleteAccountRequest(name=name, force=True)
# Make the request and print the response.
try:
print("Sending Delete Account request")
client.delete_account(request=request)
print("Delete successful.")
except RuntimeError as e:
print(e)
raise
if __name__ == "__main__":
_account_id = configuration.Configuration().read_merchant_info()
delete_account(_account_id)
cURL
curl -X DELETE \
"https://merchantapi.googleapis.com/accounts/v1/accounts/{SUB_ACCOUNT_ID}?force=true" \
-H "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
Примите Условия использования
Клиентские аккаунты наследуют Условия использования Merchant Center, которые были приняты в родительском расширенном аккаунте.
Обновляйте данные о компании
Вы можете использовать Merchant Accounts API, чтобы изменять информацию о компании в клиентских аккаунтах.
- Чтобы посмотреть информацию о компании, вызовите метод
accounts.getBusinessInfo. - Чтобы изменить информацию о компании, вызовите метод
accounts.updateBusinessInfo.