כדי להשתמש ב-Merchant Center ובתכונות שלו, אתם צריכים לאשר את התנאים וההגבלות של Merchant Center עבור מיקום העסק שלכם. בהסכמים האלה מפורטים התנאים המשפטיים לשימוש בשירותי Merchant Center.
במדריך הזה מוסבר איך להשתמש ב-Merchant API כדי לנהל את ההסכמים האלה, בין אם בחשבון שלכם או בחשבונות שאתם מנהלים כספקי צד שלישי (3P).
אפשר לבצע את הפעולות הבאות:
- בודקים את הסטטוס הנוכחי של הסכם התנאים וההגבלות בחשבון.
- להנחות את המוכרים לאשר את התנאים וההגבלות הנדרשים.
- ניהול תנאים והגבלות כספק צד שלישי עבור חשבונות לקוח או חשבונות עצמאיים.
דרישות מוקדמות
כדי להשתמש ב-Merchant API, אתם צריכים חשבון Merchant Center. אחרי שיוצרים את החשבון באמצעות ממשק המשתמש (UI) של Merchant Center, אפשר לבצע שינויים בחשבון (למשל, לעדכן את פרטי העסק, לנהל משתמשים וכו') באמצעות ממשק המשתמש או ה-API.
אם אתם צריכים לנהל כמה חשבונות, אתם יכולים ליצור חשבונות לקוח באמצעות Merchant API. איך יוצרים ומנהלים חשבונות משנה
בדיקת מצב ההסכמה לתנאים ולהגבלות בחשבון
לפני שמוֹכרים יכולים להשתמש בכל התכונות של Merchant Center, או אם אתם צריכים לאמת את הסטטוס הנוכחי של ההסכם שלהם, אתם יכולים לאחזר את הסטטוס של ההסכם שלהם לתנאים ולהגבלות.
משתמשים בשיטה
termsOfServiceAgreementStates.retrieveForApplication
כדי לקבל את מצב ההסכמה לתנאים ולהגבלות של אפליקציית הליבה של Merchant Center.
השיטה הזו מחזירה את התנאים וההגבלות הנוכחיים, אם יש כאלה, ואם התנאים וההגבלות עודכנו מאז האישור האחרון שלכם, היא מחזירה את הגרסה העדכנית שאתם צריכים לאשר.
לדוגמה:
GET https://merchantapi.googleapis.com/accounts/v1beta/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.v1beta.GetTermsOfServiceAgreementStateRequest;
import com.google.shopping.merchant.accounts.v1beta.TermsOfServiceAgreementState;
import com.google.shopping.merchant.accounts.v1beta.TermsOfServiceAgreementStateName;
import com.google.shopping.merchant.accounts.v1beta.TermsOfServiceAgreementStateServiceClient;
import com.google.shopping.merchant.accounts.v1beta.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\V1beta\Client\TermsOfServiceAgreementStateServiceClient;
use Google\Shopping\Merchant\Accounts\V1beta\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_v1beta import GetTermsOfServiceAgreementStateRequest
from google.shopping.merchant_accounts_v1beta 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
. תצטרכו את השם של ToS, אתACCOUNT_ID
ואתregionCode
שמוחזר על ידי retrieveForApplication.לדוגמה:
POST https://merchantapi.googleapis.com/accounts/v1beta/{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/v1beta/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
מהתשובה כדי להציג את הטקסט המלא של התנאים וההגבלות למוֹכר בממשק המשתמש של האפליקציה.קבלת אישור מהמוֹכר: המוֹכר צריך לאשר באופן מפורש את התנאים בממשק המשתמש שלכם.
תיעוד האישור באמצעות ה-API: אחרי שהמוכר מאשר, מפעילים את הקריאה
termsOfService.accept
באמצעותname
התנאים וההגבלות שהתקבלו בשלב 1,ACCOUNT_ID
המוכר וregionCode
שלו.בקשה לדוגמה:
POST https://merchantapi.googleapis.com/accounts/v1beta/{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.v1beta.AcceptTermsOfServiceRequest;
import com.google.shopping.merchant.accounts.v1beta.TermsOfServiceServiceClient;
import com.google.shopping.merchant.accounts.v1beta.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\V1beta\AcceptTermsOfServiceRequest;
use Google\Shopping\Merchant\Accounts\V1beta\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_v1beta import AcceptTermsOfServiceRequest
from google.shopping.merchant_accounts_v1beta 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 לבעל העסק בפועל של כל חשבון לקוח. אתם צריכים לקבל מהם הסכמה מפורשת לכך שהם מבינים את התנאים האלה ומסכימים להם, גם אם הקריאה ל-API לצורך אישור נעשית ברמת החשבון המתקדם.
- בדיקת הסטטוס של חשבון לקוח: אפשר להשתמש ב-
termsOfServiceAgreementStates.retrieveForApplication
בחשבון לקוח ספציפי כדי לוודא מה הסטטוס שלו מבחינת התנאים וההגבלות, ולבדוק אם הוא מכוסה בהסכם של חשבון הניהול המתקדם או אם נדרשת פעולה ישירה כלשהי.
ניהול תנאים והגבלות לחשבונות עצמאיים
כפי שמפורט במאמר הנחיות למוֹכרים לאישור התנאים וההגבלות, כשאתם עוזרים לעסק ליצור או לנהל חשבון Merchant Center עצמאי, העסק (בעל החשבון) צריך לאשר באופן אישי את התנאים וההגבלות. כדי לעשות את זה, אתם צריכים לאחזר את התנאים וההגבלות ולהציג אותם, ואז להפעיל את השיטה termsOfService.accept
בשמם אחרי שהם נתנו את ההסכמה המפורשת שלהם דרך הממשק שלכם.