يمكنك استخدام Merchant API لإنشاء حسابات على Merchant Center، ويمكن ربطها
بحساب بامتيازات متقدّمة
باستخدام accountAggregation أو accountManagement أو comparisonShopping. تتيح لك طريقة
accounts.createAndConfigure
إنشاء حساب وضبطه اختياريًا مع المستخدمين وربطه بحسابات أخرى من خلال الخدمات.
يشرح هذا الدليل كيفية استخدام Merchant API لإنشاء حسابات
باستخدام accountAggregation أو accountManagement أو comparisonShopping:
accountAggregation: يُستخدم هذا الخيار من قِبل الأسواق وبائعي التجزئة الذين يبيعون منتجات لعلامات تجارية متعدّدة وبائعي التجزئة الدوليين والشركاء الذين ينشئون حسابات فرعية ضمن حساب متعدّد العملاء بامتيازات متقدّمة.accountManagement: تستخدمه الوكالات التي تنشئ حسابات مستقلة يملكها التاجر.comparisonShopping: تُستخدم من قِبل خدمات مقارنة الأسعار (CSS) التي تنشئ حسابات في المنطقة الاقتصادية الأوروبية والبلدان المؤهلة لاستخدام هذه الخدمات.
عند استخدام 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
لإنشاء حساب وضبطه:
جافا
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، ما يتيح
إدارتها بشكل مركزي مع الاحتفاظ بإعدادات ومواقع إلكترونية وخلاصات بيانات
منفصلة. يمكنك استخدام واجهة برمجة التطبيقات الفرعية Merchant Accounts لإنشاء حسابات عملاء جديدة.
لإنشاء حسابات عملاء، يجب أولاً أن يكون لديك إعداد حساب بامتيازات متقدّمة. يجب أن تكون مشرفًا على الحساب لتحويل حسابك على Merchant Center إلى حساب بامتيازات متقدّمة، ويجب ألا يتضمّن حسابك أي مشاكل معلّقة.
لإنشاء حساب عميل جديد، يُرجى استدعاء
accounts.createAndConfigure.
في نص الطلب:
- أدخِل تفاصيل الحساب الذي تريد إنشاءه في حقل
account. - في حقل
accountName، لا تستخدِم علامات الترقيم أو الأحرف اللاتينية الكبيرة أو الشرطات السفلية أو الرموز غير الأبجدية الرقمية (مثل "/" أو "_") بشكل متكرّر وغير ضروري. تجنَّب استخدام لاحقات أسماء الشركات (مثل "Inc." أو "GmbH") أو النصوص الترويجية أو المعلومات الشخصية أو اللغة غير الملائمة. استخدِم اسمًا قصيرًا وواضحًا ومهنيًا. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة إضافة اسم مؤسسة. - يمكنك تحديد أي مستخدمين مصرَّح لهم جدد في حقل
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 لإنشاء
حساب عميل جديد.
جافا
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"
}
]
}
توضّح النماذج التالية كيفية عرض جميع حسابات العملاء في حسابك بامتيازات متقدّمة.
جافا
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 فارغ، ما يشير إلى أنّه تم حذف الحساب.
توضّح النماذج التالية كيفية حذف حساب عميل.
جافا
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.