برای استفاده از Merchant Center و ویژگیهای آن، باید شرایط خدمات Merchant Center را برای مکان کسبوکارتان بپذیرید. این قراردادها شرایط قانونی استفاده از سرویسهای Merchant Center را مشخص میکنند.
این راهنما توضیح میدهد که چگونه میتوانید از Merchant API برای مدیریت این قراردادها استفاده کنید، چه برای حساب خودتان و چه برای حسابهایی که بهعنوان ارائهدهنده شخص ثالث (3P) مدیریت میکنید.
میتوانید به موارد زیر دست پیدا کنید:
- وضعیت فعلی موافقت با «شرایط خدمات» را برای حساب بررسی کنید.
- فروشندگان را برای پذیرفتن «شرایط خدمات» لازم راهنمایی کنید.
- مدیریت شرایط خدمات بهعنوان رساننده خدمات برای حسابهای مشتری.
پیشنیازها
برای استفاده از Merchant API، به حساب Merchant Center نیاز دارید. پساز ایجاد حساب بااستفاده از میانای کاربر Merchant Center، میتوانید بااستفاده از میانای کاربر یا API تغییراتی در حساب ایجاد کنید (مثلاً بهروزرسانی اطلاعات کسبوکار، مدیریت کاربران، و غیره).
اگر لازم است چندین حساب را مدیریت کنید، میتوانید بااستفاده از 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، باید فروشنده را راهنمایی کنید تا آن را بپذیرد.
در اینجا نمونهای آورده شده است که میتوانید از آن برای بازیابی وضعیت قرارداد «شرایط خدمات» برای حساب و کشور خاصی استفاده کنید:
جاوا
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موجود در پاسخ برای نمایش متن کامل «شرایط خدمات» به فروشنده در واسط کاربر برنامهتان استفاده کنید.کسب موافقت فروشنده: فروشنده باید صریحاً با شرایط موجود در واسط کاربر شما موافقت کند.
ثبت پذیرش بااستفاده از API: پساز اینکه فروشنده پذیرفت،
termsOfService.acceptرا بااستفاده ازname«شرایط خدمات» بهدستآمده در مرحله ۱،ACCOUNT_IDفروشنده، وregionCodeاو فراخوانی کنید.درخواست نمونه:
POST https://merchantapi.googleapis.com/accounts/v1/{name={termsOfService/VERSION}}:accept { "account": "accounts/{MERCHANT_ACCOUNT_ID}", "regionCode": "{REGION_CODE}" }
در اینجا نمونهای آورده شده است که میتوانید از آن برای پذیرفتن قرارداد «شرایط خدمات» برای یک حساب مشخص (پساز موافقت فروشنده) استفاده کنید:
جاوا
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در حساب مشتری خاصی استفاده کنید تا وضعیت «شرایط خدمات» آن را درستیسنجی کنید و ببینید آیا تحت پوشش قرارداد حساب پیشرفته است یا اینکه اقدام مستقیمی لازم است.
مدیریت شرایط خدمات برای حسابهای دیگر
همانطور که در راهنمایی فروشندگان برای پذیرش
شرایط خدمات بهتفصیل آمده است، وقتی به
کسبوکاری در ایجاد یا مدیریت حساب خودش کمک میکنید، آن کسبوکار (مالک
حساب) باید شخصاً «شرایط خدمات» را بپذیرد . شما این کار را با بازیابی و نمایش «شرایط خدمات» و سپس فراخوانی روش termsOfService.accept ازطرف آنها پساز اینکه رضایت صریح خود را ازطریق میانای شما اعلام کردند، تسهیل میکنید.