لاستخدام Merchant Center وميزاته، يجب قبول بنود خدمة Merchant Center الخاصة بموقع نشاطك التجاري. توضّح هذه الاتفاقيات البنود القانونية لاستخدام خدمات Merchant Center.
يوضّح هذا الدليل كيفية استخدام Merchant API لإدارة هذه الاتفاقيات، سواء كان ذلك لحسابك الخاص أو للحسابات التي تديرها بصفتك مقدّم خدمة تابعًا لجهة خارجية.
يمكنك تحقيق ما يلي:
- التحقّق من الحالة الحالية لاتفاقية بنود الخدمة الخاصة بحساب
- توجيه التجّار لقبول بنود الخدمة اللازمة
- إدارة بنود الخدمة بصفتك مقدّم خدمة تابعًا لجهة خارجية لحسابات العملاء أو الحسابات المستقلة
المتطلبات الأساسية
لاستخدام Merchant API، يجب أن يكون لديك حساب على Merchant Center. بعد إنشاء الحساب باستخدام واجهة مستخدم Merchant Center، يمكنك إجراء تغييرات على الحساب (مثل تعديل معلومات نشاطك التجاري وإدارة المستخدمين وما إلى ذلك) باستخدام واجهة المستخدم أو واجهة برمجة التطبيقات.
إذا كنت بحاجة إلى إدارة حسابات متعددة، يمكنك إنشاء حسابات عملاء باستخدام Merchant API. راجِع إنشاء حسابات فرعية وإدارتها.
التحقّق من حالة الموافقة على بنود الخدمة في حساب
قبل أن يتمكّن التاجر من الاستفادة بشكل كامل من Merchant Center، أو إذا كنت بحاجة إلى التحقّق من حالة الاتفاقية الحالية، يمكنك استرداد حالة اتفاقية بنود الخدمة.
استخدِم طريقة
termsOfServiceAgreementStates.retrieveForApplication
للحصول على حالة الموافقة على بنود الخدمة لتطبيق Merchant Center الأساسي.
تعرض هذه الطريقة بنود الخدمة الحالية، إن وجدت، وإذا تم تعديل بنود الخدمة منذ آخر مرة وافقت فيها عليها، سيتم عرض أحدث إصدار عليك قبوله.
في ما يلي نموذج للطلب:
GET https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/termsOfServiceAgreementStates:retrieveForApplication
يعرض الطلب الناجح
TermsOfServiceAgreementState
موردًا. يحتوي هذا المرجع على ما يلي:
-
name
: معرّف حالة الاتفاقية هذه. regionCode
: البلد الذي تنطبق عليه حالة الاتفاقية هذه، وهو عادةً بلد النشاط التجاري للحسابtermsOfServiceKind
: ستكون القيمةMERCHANT_CENTER
.-
accepted
: تفاصيل حول إصدار بنود الخدمة الذي سبق أن وافق عليه الحساب، بما في ذلك اسم الموردtermsOfService
(مثلtermsOfService/132
) والجهة التيacceptedBy
. قد يتضمّن أيضًا تاريخvalidUntil
إذا كان هناك إصدار أحدث من "بنود الخدمة"required
. -
required
: تفاصيل حول إصدار بنود الخدمة الذي يجب أن يوافق عليه الحساب يتضمّن ذلك اسم المرجعtermsOfService
وtosFileUri
يشير إلى مستند بنود الخدمة الذي يمكن للمستخدمين قراءته.
مثال على الرد:
{
"name": "accounts/{ACCOUNT_ID}/termsOfServiceAgreementStates/MERCHANT_CENTER-{REGION_CODE}",
"regionCode": "{REGION_CODE}",
"termsOfServiceKind": "MERCHANT_CENTER",
"accepted": {
"termsOfService": "termsOfService/132",
"acceptedBy": "accounts/{ACCOUNT_ID}"
},
"required": {
"termsOfService": "termsOfService/132",
"tosFileUri": "https://www.google.com/intl/{REGION_CODE}/policies/merchants/terms/"
}
}
إذا كانت بنود الخدمة الجديدة required
، عليك توجيه التاجر لقبولها.
في ما يلي نموذج يمكنك استخدامه لاسترداد حالة اتفاقية بنود الخدمة لحساب وبلد محدّدين:
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.GetTermsOfServiceAgreementStateRequest;
import com.google.shopping.merchant.accounts.v1.TermsOfServiceAgreementState;
import com.google.shopping.merchant.accounts.v1.TermsOfServiceAgreementStateName;
import com.google.shopping.merchant.accounts.v1.TermsOfServiceAgreementStateServiceClient;
import com.google.shopping.merchant.accounts.v1.TermsOfServiceAgreementStateServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/**
* This class demonstrates how to get a TermsOfServiceAgreementState for a specific
* TermsOfServiceKind and country.
*/
public class GetTermsOfServiceAgreementStateSample {
public static void getTermsOfServiceAgreementState(Config config) throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the credentials retrieved above.
TermsOfServiceAgreementStateServiceSettings termsOfServiceAgreementStateServiceSettings =
TermsOfServiceAgreementStateServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Creates TermsOfServiceAgreementState name to identify TermsOfServiceAgreementState.
String name =
TermsOfServiceAgreementStateName.newBuilder()
.setAccount(config.getAccountId().toString())
// The Identifier is: "{TermsOfServiceKind}-{country}"
.setIdentifier("MERCHANT_CENTER-US")
.build()
.toString();
System.out.println(name);
// Calls the API and catches and prints any network failures/errors.
try (TermsOfServiceAgreementStateServiceClient termsOfServiceAgreementStateServiceClient =
TermsOfServiceAgreementStateServiceClient.create(
termsOfServiceAgreementStateServiceSettings)) {
// The name has the format:
// accounts/{account}/termsOfServiceAgreementStates/{TermsOfServiceKind}-{country}
GetTermsOfServiceAgreementStateRequest request =
GetTermsOfServiceAgreementStateRequest.newBuilder().setName(name).build();
System.out.println("Sending Get TermsOfServiceAgreementState request:");
TermsOfServiceAgreementState response =
termsOfServiceAgreementStateServiceClient.getTermsOfServiceAgreementState(request);
System.out.println("Retrieved TermsOfServiceAgreementState below");
// If the terms of service needs to be accepted, the "required" field will include the
// specific version of the terms of service which needs to be accepted, alongside a link to
// the terms of service itself.
System.out.println(response);
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
getTermsOfServiceAgreementState(config);
}
}
PHP
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\Client\TermsOfServiceAgreementStateServiceClient;
use Google\Shopping\Merchant\Accounts\V1\GetTermsOfServiceAgreementStateRequest;
/**
* Demonstrates how to get a TermsOfServiceAgreementState.
*/
class GetTermsOfServiceAgreementState
{
/**
* Gets a TermsOfServiceAgreementState.
*
* @param array $config The configuration data.
* @return void
*/
public static function getTermsOfServiceAgreementState($config): void
{
// Get OAuth credentials.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Create client options.
$options = ['credentials' => $credentials];
// Create a TermsOfServiceAgreementStateServiceClient.
$termsOfServiceAgreementStateServiceClient = new TermsOfServiceAgreementStateServiceClient($options);
// Service agreeement identifier
$identifier = "MERCHANT_CENTER-US";
// Create TermsOfServiceAgreementState name.
$name = "accounts/" . $config['accountId'] . "/termsOfServiceAgreementStates/" . $identifier;
print $name . PHP_EOL;
try {
// Prepare the request.
$request = new GetTermsOfServiceAgreementStateRequest([
'name' => $name,
]);
print "Sending Get TermsOfServiceAgreementState request:" . PHP_EOL;
$response = $termsOfServiceAgreementStateServiceClient->getTermsOfServiceAgreementState($request);
print "Retrieved TermsOfServiceAgreementState below\n";
print $response->serializeToJsonString() . PHP_EOL;
} catch (ApiException $e) {
print $e->getMessage();
}
}
/**
* Helper to execute the sample.
*
* @return void
*/
public function callSample(): void
{
$config = Config::generateConfig();
self::getTermsOfServiceAgreementState($config);
}
}
// Run the script
$sample = new GetTermsOfServiceAgreementState();
$sample->callSample();
Python
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import GetTermsOfServiceAgreementStateRequest
from google.shopping.merchant_accounts_v1 import TermsOfServiceAgreementStateServiceClient
# Replace with your actual value.
_ACCOUNT_ID = configuration.Configuration().read_merchant_info()
_IDENTIFIER = "MERCHANT_CENTER-US" # Replace with your identifier
def get_terms_of_service_agreement_state():
"""Gets a TermsOfServiceAgreementState for a specific TermsOfServiceKind and country."""
credentials = generate_user_credentials.main()
client = TermsOfServiceAgreementStateServiceClient(credentials=credentials)
name = (
"accounts/"
+ _ACCOUNT_ID
+ "/termsOfServiceAgreementStates/"
+ _IDENTIFIER
)
print(name)
request = GetTermsOfServiceAgreementStateRequest(name=name)
try:
print("Sending Get TermsOfServiceAgreementState request:")
response = client.get_terms_of_service_agreement_state(request=request)
print("Retrieved TermsOfServiceAgreementState below")
print(response)
except RuntimeError as e:
print(e)
if __name__ == "__main__":
get_terms_of_service_agreement_state()
قبول بنود الخدمة
على التجّار قبول أحدث بنود الخدمة للحفاظ على إمكانية الوصول إلى ميزات Merchant Center.
قبول بنود الخدمة لحسابك الخاص
إذا كنت تدير حسابك على Merchant Center بنفسك، اتّبِع الخطوات التالية:
- اتّصِل بالرقم
termsOfServiceAgreementStates.retrieveForApplication
لمعرفة ما إذا كانت أي من بنود الخدمةrequired
. - إذا كان مطلوبًا توفير "شهادة إتمام الخدمة"، سجِّل اسم
termsOfService
من الحقلrequired
(مثلtermsOfService/132
). اتّصِل بالرقم
termsOfService.accept
للقبول ببنود الخدمة. ستحتاج إلى اسم بنود الخدمة وACCOUNT_ID
وregionCode
الذي تم عرضه من خلال retrieveForApplication.في ما يلي نموذج للطلب:
POST https://merchantapi.googleapis.com/accounts/v1/{name={termsOfService/VERSION}}:accept { "account": "accounts/{ACCOUNT_ID}", "regionCode": "{REGION_CODE}" }
يعرض الاتصال الناجح نص استجابة فارغًا، ويعدّل حالة الموافقة على بنود الخدمة في الحساب.
توجيه التجّار لقبول أحكام الخدمة (لمقدّمي الخدمات الخارجيين)
إذا كنت مقدّم خدمة تابعًا لجهة خارجية (3P) وتدير حسابات مستقلة على Merchant Center لأنشطة تجارية أخرى، يجب عدم قبول بنود الخدمة نيابةً عنها. بدلاً من ذلك، عليك إجراء ما يلي:
استرداد أحدث بنود الخدمة: اتّصِل بالدالة
termsOfService.retrieveLatest
للحصول على نوعَيregionCode
وMERCHANT_CENTER
الخاصَّين بالتاجر، وذلك للحصول على تفاصيل أحدث إصدار من بنود الخدمة التي قد يحتاج إلى قبولها.نموذج الطلب:
GET https://merchantapi.googleapis.com/accounts/v1/termsOfService:retrieveLatest?regionCode={REGION_CODE}&kind=MERCHANT_CENTER
نموذج الردّ:
{ "name": "{termsOfService/VERSION}", "regionCode": "{REGION_CODE}", "kind": "MERCHANT_CENTER", "fileUri": "https://www.google.com/intl/{REGION_CODE}/policies/merchants/terms/" }
عرض بنود الخدمة: استخدِم
fileUri
من الرد لعرض النص الكامل لبنود الخدمة للبائع ضمن واجهة مستخدم تطبيقك.الحصول على موافقة التاجر: يجب أن يوافق التاجر صراحةً على البنود ضمن واجهة المستخدم.
تسجيل الموافقة باستخدام واجهة برمجة التطبيقات: بعد موافقة التاجر، اتّصِل بالدالة
termsOfService.accept
باستخدامname
من بنود الخدمة التي تم الحصول عليها في الخطوة 1، وACCOUNT_ID
الخاص بالتاجر، وregionCode
الخاص به.نموذج الطلب:
POST https://merchantapi.googleapis.com/accounts/v1/{name={termsOfService/VERSION}}:accept { "account": "accounts/{MERCHANT_ACCOUNT_ID}", "regionCode": "{REGION_CODE}" }
إليك نموذج يمكنك استخدامه لقبول اتفاقية بنود الخدمة لحساب معيّن (بعد موافقة التاجر):
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.AcceptTermsOfServiceRequest;
import com.google.shopping.merchant.accounts.v1.TermsOfServiceServiceClient;
import com.google.shopping.merchant.accounts.v1.TermsOfServiceServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to accept the TermsOfService agreement in a given account. */
public class AcceptTermsOfServiceSample {
public static void acceptTermsOfService(String accountId, String tosVersion, String regionCode)
throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the credentials retrieved above.
TermsOfServiceServiceSettings tosServiceSettings =
TermsOfServiceServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Calls the API and catches and prints any network failures/errors.
try (TermsOfServiceServiceClient tosServiceClient =
TermsOfServiceServiceClient.create(tosServiceSettings)) {
// The parent has the format: accounts/{account}
AcceptTermsOfServiceRequest request =
AcceptTermsOfServiceRequest.newBuilder()
.setName(String.format("termsOfService/%s", tosVersion))
.setAccount(String.format("accounts/%s", accountId))
.setRegionCode(regionCode)
.build();
System.out.println("Sending request to accept terms of service...");
tosServiceClient.acceptTermsOfService(request);
System.out.println("Successfully accepted terms of service.");
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// See GetTermsOfServiceAgreementStateSample to understand how to check which version of the
// terms of service needs to be accepted, if any.
// Likewise, if you know that the terms of service needs to be accepted, you can also simply
// call RetrieveLatestTermsOfService to get the latest version of the terms of service.
// Region code is either a country when the ToS applies specifically to that country or 001 when
// it applies globally.
acceptTermsOfService(config.getAccountId().toString(), "VERSION_HERE", "REGION_CODE_HERE");
}
}
PHP
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\AcceptTermsOfServiceRequest;
use Google\Shopping\Merchant\Accounts\V1\Client\TermsOfServiceServiceClient;
/**
* Demonstrates how to accept the TermsOfService agreement in a given account.
*/
class AcceptTermsOfService
{
/**
* Accepts the Terms of Service agreement.
*
* @param string $accountId The account ID.
* @param string $tosVersion The Terms of Service version.
* @param string $regionCode The region code.
* @return void
*/
public static function acceptTermsOfService($accountId, $tosVersion, $regionCode): void
{
// Get OAuth credentials.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Create client options.
$options = ['credentials' => $credentials];
// Create a TermsOfServiceServiceClient.
$tosServiceClient = new TermsOfServiceServiceClient($options);
try {
// Prepare the request.
$request = new AcceptTermsOfServiceRequest([
'name' => sprintf("termsOfService/%s", $tosVersion),
'account' => sprintf("accounts/%s", $accountId),
'region_code' => $regionCode,
]);
print "Sending request to accept terms of service...\n";
$tosServiceClient->acceptTermsOfService($request);
print "Successfully accepted terms of service.\n";
} catch (ApiException $e) {
print $e->getMessage();
}
}
/**
* Helper to execute the sample.
*
* @return void
*/
public function callSample(): void
{
$config = Config::generateConfig();
// Replace with actual values.
$tosVersion = "132";
$regionCode = "US";
self::acceptTermsOfService($config['accountId'], $tosVersion, $regionCode);
}
}
// Run the script
$sample = new AcceptTermsOfService();
$sample->callSample();
Python
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import AcceptTermsOfServiceRequest
from google.shopping.merchant_accounts_v1 import TermsOfServiceServiceClient
# Replace with your actual values.
_ACCOUNT_ID = configuration.Configuration().read_merchant_info()
_TOS_VERSION = ( # Replace with the Terms of Service version to accept
"VERSION_HERE"
)
_REGION_CODE = "US" # Replace with the region code
def accept_terms_of_service():
"""Accepts the Terms of Service agreement for a given account."""
credentials = generate_user_credentials.main()
client = TermsOfServiceServiceClient(credentials=credentials)
# Construct the request
request = AcceptTermsOfServiceRequest(
name=f"termsOfService/{_TOS_VERSION}",
account=f"accounts/{_ACCOUNT_ID}",
region_code=_REGION_CODE,
)
try:
print("Sending request to accept terms of service...")
client.accept_terms_of_service(request=request)
print("Successfully accepted terms of service.")
except RuntimeError as e:
print(e)
if __name__ == "__main__":
accept_terms_of_service()
اعتبارات خاصة لموفّري الخدمات التابعين لجهات خارجية
بصفتك مقدّم خدمة تابعًا لجهة خارجية، يمكنك إدارة بنود الخدمة لحسابات العملاء أو الحسابات المستقلة.
إدارة بنود الخدمة لحسابات العملاء
إذا كنت تدير حسابًا بامتيازات متقدّمة وأنشأت حسابات عملاء لأنشطة تجارية مختلفة، عليك اتّباع ما يلي:
- قبول الحساب بامتيازات متقدّمة: إذا كان حساب بامتيازات متقدّمة يقدّم خدمة تجميع الحسابات إلى حسابات العملاء، ستسري بنود الخدمة التي وافق عليها الحساب بامتيازات متقدّمة أيضًا على جميع حسابات العملاء التي تستخدم هذه الخدمة.
- العرض والموافقة: حتى إذا كانت الموافقة في الحساب المتقدّم تشمل حسابات العملاء، من أفضل الممارسات (وقد يكون ذلك متطلبًا قانونيًا) عرض بنود خدمة Google Merchant Center ذات الصلة على صاحب النشاط التجاري الفعلي لكل حساب عميل. يجب الحصول على موافقة صريحة من العميل على أنّه يفهم هذه البنود ويوافق عليها، حتى إذا تم إجراء طلب البيانات من واجهة برمجة التطبيقات للقبول على مستوى الحساب المتقدّم.
- التحقّق من حالة حساب العميل: استخدِم
termsOfServiceAgreementStates.retrieveForApplication
في حساب عميل معيّن للتحقّق من حالة بنود الخدمة ومعرفة ما إذا كان مشمولاً باتفاقية الحساب المتقدّم أو ما إذا كان يجب اتّخاذ أي إجراء مباشر.
إدارة بنود الخدمة للحسابات المستقلة
كما هو موضّح بالتفصيل في دليل مساعدة التجّار في قبول بنود الخدمة، عند مساعدة نشاط تجاري في إنشاء حساب مستقل على Merchant Center أو إدارته، يجب أن يقبل هذا النشاط التجاري (صاحب الحساب) بنود الخدمة شخصيًا. يمكنك تسهيل ذلك من خلال استرداد بنود الخدمة وعرضها، ثم استدعاء طريقة termsOfService.accept
نيابةً عنهم بعد منحهم موافقتهم الصريحة من خلال واجهتك.