إنشاء حسابات

يمكنك استخدام 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، ما يتيح الإدارة المركزية مع الحفاظ على إعدادات ومواقع إلكترونية وخلاصات بيانات منفصلة. يمكنك استخدام واجهة برمجة التطبيقات الفرعية "حسابات التجّار" لإنشاء حسابات عملاء جديدة.

لإنشاء حسابات عملاء، يجب أولاً أن يكون لديك إعداد حساب بامتيازات متقدّمة. يجب أن تكون مشرف حساب لتحويل حسابك على 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 لتعديل معلومات النشاط التجاري الخاصة بحسابات عملائك.

  • للاطّلاع على معلومات النشاط التجاري الخاصة بحساب، اتّصِل بالرقم accounts.getBusinessInfo.