יצירת חשבונות

אפשר להשתמש ב-Merchant API כדי ליצור חשבונות Merchant Center, שאפשר לקשר לחשבון מתקדם באמצעות accountAggregation, ‏ accountManagement או comparisonShopping. השיטה accounts.createAndConfigure מאפשרת ליצור חשבון ולהגדיר אותו עם משתמשים, וגם לקשר אותו לחשבונות אחרים באמצעות שירותים.

במדריך הזה מוסבר איך להשתמש ב-Merchant API כדי ליצור חשבונות באמצעות שירותים כמו accountManagement,‏ comparisonShopping או accountAggregation. כשמשתמשים ב-accounts.createAndConfigure, צריך לקשר את החשבון החדש לספק על ידי ציון לפחות אחד מהערכים accountAggregation,‏ accountManagement או comparisonShopping בשדה service. אפשר לציין את accountAggregation ואת comparisonShopping באותה בקשה, אבל אי אפשר לשלב את accountManagement עם accountAggregation או עם comparisonShopping. אם מציינים accountManagement, צריך גם להוסיף לפחות משתמש אחד לחשבון החדש באמצעות השדה user או users.

דרישות מוקדמות

לפני שיוצרים חשבונות באמצעות Merchant API, צריך לוודא שאתם עומדים בדרישות הבאות בהתאם לשירותים שבהם אתם משתמשים:

  • גישת אדמין: כשמקשרים חשבון חדש באמצעות accountManagement,‏ comparisonShopping או accountAggregation, צריכה להיות לכם גישת אדמין לחשבון אצל הספק.
  • חשבון מתקדם: אם אתם משתמשים ב-accountAggregation, חשבון הספק שלכם צריך להיות חשבון מתקדם שמוגדר לצבירת חשבונות. אם אתם ספקי שירות וצריכים להגדיר חשבון מתקדם, אתם יכולים לפנות לתמיכה לקבלת עזרה בהגדרה.

יצירת חשבון (באמצעות ניהול חשבונות או שירות השוואת מחירים)

כדי ליצור חשבון חדש, מתקשרים אל accounts.createAndConfigure. זו הגישה המומלצת לשותפים שעוזרים למוכרים לנהל את החשבונות שלהם, כי היא מאפשרת למוכרים לשמור על שליטה מלאה ועל בעלות על החשבון שלהם, ובו בזמן להעניק הרשאות ספציפיות לשותפים.

בגוף הבקשה:

  1. בשדה account מזינים את פרטי החשבון שרוצים ליצור.
  2. אם אתם משתמשים ב-accountManagement, עליכם לציין לפחות משתמש אחד בשדה user שיקבל גישה לחשבון.
  3. בשדה 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, אפשר להגדיר שלא יישלחו אימיילים לאימות משתמשים חדשים שנוספו באמצעות השדה 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"
    }
  ]
}

אם אתם שותפים שיוצרים חשבון בשם מוֹכר, אנחנו ממליצים לפעול לפי התהליך הבא:

  1. יצירת חשבון: מתקשרים אל accounts.createAndConfigure עם פרטי הכניסה של השותף כדי ליצור חשבון חדש.
    • מגדירים את service כך שיכלול קישור של accountManagement למזהה הספק.
    • מוסיפים את המוכר כמשתמש באמצעות השדה user ומגדירים את verificationMailSettings.verificationMailMode לערך SUPPRESS_VERIFICATION_MAIL.
  2. אימות המשתמש: באמצעות פרטי כניסה מהמוֹכר (לדוגמה, באמצעות אסימון OAuth), מתקשרים אל users.verifySelf כדי לשנות את מצב המשתמש מ-PENDING ל-VERIFIED.
  3. הגדרת מדינת העסק: באמצעות פרטי הכניסה של המוכר, מעדכנים את address.regionCode באמצעות accounts.updateBusinessInfo כדי להגדיר את מדינת העסק. הפעולה הזו נדרשת לפני אישור התנאים וההגבלות.
  4. אישור התנאים וההגבלות: באמצעות פרטי הכניסה של המוכר, מאשרים את התנאים וההגבלות.

התהליך הזה מאפשר למוֹכרים להצטרף בקלות לפלטפורמה שלכם בלי לקבל הזמנות באימייל מ-Google.

יצירת חשבון לקוח (באמצעות צבירת חשבונות)

חשבונות לקוח הם חשבונות נפרדים ב-Merchant Center שמקושרים לחשבון המתקדם שלכם באמצעות שירות accountAggregation. כך אפשר לנהל את החשבונות באופן מרכזי, תוך שמירה על הגדרות, אתרים ופידים של נתונים נפרדים. אתם יכולים להשתמש ב-API המשני של חשבונות מוכרים כדי ליצור חשבונות לקוח חדשים.

כדי ליצור חשבונות לקוח, קודם צריך להגדיר חשבון מתקדם. כדי להמיר את חשבון Merchant Center לחשבון מתקדם, אתם צריכים להיות אדמינים בחשבון, ולא יכולות להיות בחשבון בעיות בהמתנה.

כדי ליצור חשבון לקוח חדש, קוראים ל-accounts.createAndConfigure. בגוף הבקשה:

  1. בשדה account מזינים את פרטי החשבון שרוצים ליצור.
  2. אפשר לציין משתמשים מורשים חדשים בשדה user. הגישה של המשתמש לחשבון עוברת בירושה מחשבון המתקדם הראשי.
  3. בשדה 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 void 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());
    } catch (Exception e) {
      System.out.println(e);
    }
  }

  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

_ACCOUNT = configuration.Configuration().read_merchant_info()


def get_parent(account_id):
  return f"accounts/{account_id}"


def create_sub_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)

  # 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)
  except RuntimeError as e:
    print(e)


if __name__ == "__main__":
  create_sub_account()

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 void 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);
    } catch (Exception e) {
      System.out.println("An error has occured: ");
      System.out.println(e);
    }
  }

  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

_ACCOUNT = configuration.Configuration().read_merchant_info()


def get_parent(account_id):
  return f"accounts/{account_id}"


def list_sub_accounts():
  """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)

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

  except RuntimeError as e:
    print("An error has occured: ")
    print(e)


if __name__ == "__main__":
  list_sub_accounts()

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

    // Gets the account ID from the config file.
    String accountId = config.getAccountId().toString();

    // Creates account name to identify the account.
    String name =
        AccountName.newBuilder()
            .setAccount(accountId)
            .build()
            .toString();

    // Calls the API and catches and prints any network failures/errors.
    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.");
    } catch (Exception e) {
      System.out.println(e);
    }
  }

  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

_ACCOUNT = configuration.Configuration().read_merchant_info()


def get_parent(account_id):
  return f"accounts/{account_id}"


def delete_account():
  """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)

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


if __name__ == "__main__":
  delete_account()

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 כדי לערוך את הפרטים העסקיים של חשבונות הלקוחות שלכם.