Aby korzystać z Merchant Center i jego funkcji, musisz zaakceptować Warunki korzystania z usługi Merchant Center (ToS) w przypadku adresu sklepu. Te umowy określają warunki prawne korzystania z usług Merchant Center.
Z tego przewodnika dowiesz się, jak zarządzać tymi umowami za pomocą interfejsu Merchant API – zarówno na własnym koncie, jak i na kontach, którymi zarządzasz jako dostawca zewnętrzny.
Możesz wykonać te czynności:
- Sprawdzić bieżący stan umowy dotyczącej Warunków korzystania z usługi na koncie.
- Pomóc sprzedawcom w zaakceptowaniu niezbędnych Warunków korzystania z usługi.
- Zarządzać Warunkami korzystania z usługi jako dostawca usług na kontach klientów.
Wymagania wstępne
Aby korzystać z interfejsu Merchant API, musisz mieć konto Merchant Center. Po utworzeniu konta za pomocą interfejsu Merchant Center możesz wprowadzać na nim zmiany (np. aktualizować informacje o firmie, zarządzać użytkownikami itp.) za pomocą interfejsu lub interfejsu API.
Jeśli musisz zarządzać kilkoma kontami, możesz utworzyć konta klientów za pomocą interfejsu Merchant API. Zobacz Tworzenie kont.
Sprawdzanie stanu umowy dotyczącej Warunków korzystania z usługi na koncie
Zanim sprzedawca będzie mógł w pełni korzystać z Merchant Center lub jeśli musisz sprawdzić bieżący stan jego umowy, możesz pobrać stan umowy dotyczącej Warunków korzystania z usługi.
Aby uzyskać stan umowy dotyczącej Warunków korzystania z usługi w przypadku podstawowej aplikacji Merchant Center
, użyj
termsOfServiceAgreementStates.retrieveForApplication
metody. Ta metoda zwraca bieżące Warunki korzystania z usługi (jeśli takie istnieją) oraz najnowszą wersję, którą musisz zaakceptować, jeśli Warunki korzystania z usługi zostały zaktualizowane od czasu ostatniej akceptacji.
Oto przykładowe żądanie:
GET https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/termsOfServiceAgreementStates:retrieveForApplication
Pomyślne wywołanie zwraca
TermsOfServiceAgreementState
zasób. Ten zasób zawiera:
name: identyfikator stanu umowy.regionCode: kraj, którego dotyczy ten stan umowy, zwykle kraj, w którym działa firma.termsOfServiceKind: będzie toMERCHANT_CENTER.accepted: szczegóły dotyczące wersji Warunków korzystania z usługi, którą konto już zaakceptowało, w tym nazwa zasobutermsOfService(np.termsOfService/132) oraz informacja o tym, kto zaakceptował Warunki korzystania z usługi (acceptedBy). Może też zawierać datęvalidUntil, jeśli nowsza wersja Warunków korzystania z usługi jestrequired.required: szczegóły dotyczące wersji Warunków korzystania z usługi, którą konto musi zaakceptować. Obejmuje to nazwę zasobutermsOfServiceitosFileUriwskazujący dokument Warunków korzystania z usługi w formacie czytelnym dla człowieka.
Przykładowa odpowiedź:
{
"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/"
}
}
Jeśli wymagane jest zaakceptowanie nowych Warunków korzystania z usługi (required), poproś sprzedawcę o ich zaakceptowanie.
Oto przykład, którego możesz użyć, aby pobrać stan umowy dotyczącej Warunków korzystania z usługi w przypadku konkretnego konta i kraju:
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()
Zaakceptuj Warunki korzystania z usługi
Aby zachować dostęp do funkcji Merchant Center, sprzedawcy muszą zaakceptować najnowsze Warunki korzystania z usługi.
Akceptowanie Warunków korzystania z usługi na własnym koncie
Jeśli zarządzasz własnym kontem Merchant Center, wykonaj te czynności:
- Wywołaj metodę
termsOfServiceAgreementStates.retrieveForApplication, aby sprawdzić, czy wymagane jest zaakceptowanie Warunków korzystania z usługi (required). - Jeśli wymagane jest zaakceptowanie Warunków korzystania z usługi, zanotuj nazwę
termsOfServicez polarequired(np.termsOfService/132). Aby zaakceptować Warunki korzystania z usługi, wywołaj metodę
termsOfService.accept. Będziesz potrzebować nazwy Warunków korzystania z usługi, swojegoACCOUNT_IDi koduregionCodezwróconego przez metodę retrieveForApplication.Oto przykładowe żądanie:
POST https://merchantapi.googleapis.com/accounts/v1/{name={termsOfService/VERSION}}:accept { "account": "accounts/{ACCOUNT_ID}", "regionCode": "{REGION_CODE}" }Pomyślne wywołanie zwraca pustą treść odpowiedzi i aktualizuje stan umowy dotyczącej Warunków korzystania z usługi na koncie.
Pomaganie sprzedawcom w zaakceptowaniu Warunków korzystania z usługi (w przypadku dostawców zewnętrznych)
Jeśli jesteś dostawcą zewnętrznym (3P), który zarządza kontami Merchant Center innych firm, nie możesz akceptować Warunków korzystania z usługi w ich imieniu. Zamiast tego wykonaj te czynności:
Pobierz najnowsze Warunki korzystania z usługi: wywołaj metodę
termsOfService.retrieveLatestz kodemregionCodesprzedawcy i rodzajemMERCHANT_CENTER, aby uzyskać szczegóły najnowszej wersji Warunków korzystania z usługi, którą sprzedawca może zaakceptować.Przykładowe żądanie:
GET https://merchantapi.googleapis.com/accounts/v1/termsOfService:retrieveLatest?regionCode={REGION_CODE}&kind=MERCHANT_CENTERPrzykładowa odpowiedź:
{ "name": "{termsOfService/VERSION}", "regionCode": "{REGION_CODE}", "kind": "MERCHANT_CENTER", "fileUri": "https://www.google.com/intl/{REGION_CODE}/policies/merchants/terms/" }Wyświetl Warunki korzystania z usługi: użyj
fileUriz odpowiedzi, aby wyświetlić pełny tekst Warunków korzystania z usługi w interfejsie aplikacji.Uzyskaj zgodę sprzedawcy: sprzedawca musi wyraźnie zaakceptować warunki w Twoim interfejsie.
Zarejestruj akceptację za pomocą interfejsu API: gdy sprzedawca zaakceptuje Warunki korzystania z usługi, wywołaj metodę
termsOfService.acceptz użyciemnameWarunków korzystania z usługi uzyskanej w kroku 1,ACCOUNT_IDsprzedawcy, i jego koduregionCode.Przykładowe żądanie:
POST https://merchantapi.googleapis.com/accounts/v1/{name={termsOfService/VERSION}}:accept { "account": "accounts/{MERCHANT_ACCOUNT_ID}", "regionCode": "{REGION_CODE}" }
Oto przykład, którego możesz użyć, aby zaakceptować umowę dotyczącą Warunków korzystania z usługi na danym koncie (po zaakceptowaniu przez sprzedawcę):
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()
Szczególne uwagi dla dostawców zewnętrznych
Jako dostawca zewnętrzny możesz zarządzać Warunkami korzystania z usługi na kontach klientów.
Zarządzanie Warunkami korzystania z usługi na kontach klientów
Jeśli masz konto zaawansowane i tworzysz konta klientów dla różnych firm:
- Akceptacja na koncie zaawansowanym: jeśli konto zaawansowane udostępnia usługę agregacji kont na kontach klientów, Warunki korzystania z usługi zaakceptowane na koncie zaawansowanym będą też obowiązywać na wszystkich kontach klientów korzystających z tej usługi.
- Wyświetlanie i zgoda: nawet jeśli akceptacja na koncie zaawansowanym obejmuje konta klientów, zalecamy (i może to być wymagane prawnie), aby wyświetlać odpowiednie Warunki korzystania z usługi Google Merchant Center właścicielowi każdej takiej firmy. Musisz uzyskać jego wyraźną zgodę na to, że rozumie te warunki i się na nie zgadza, nawet jeśli wywołanie interfejsu API w celu akceptacji jest wykonywane na poziomie konta zaawansowanego.
- Sprawdzanie stanu konta klienta: użyj metody
termsOfServiceAgreementStates.retrieveForApplicationna konkretnym koncie klienta, aby sprawdzić jego stan Warunków korzystania z usługi i dowiedzieć się, czy jest on objęty umową konta zaawansowanego, czy też wymagane jest podjęcie bezpośrednich działań.
Zarządzanie Warunkami korzystania z usługi na innych kontach
Jak opisano w sekcji Pomaganie sprzedawcom w zaakceptowaniu
Warunków korzystania z usługi, gdy pomagasz
firmie w utworzeniu własnego konta lub zarządzaniu nim, ta firma (właściciel
konta) musi osobiście zaakceptować Warunki korzystania z usługi . Ułatwisz to, pobierając i wyświetlając Warunki korzystania z usługi, a następnie wywołując metodę termsOfService.accept w imieniu firmy po uzyskaniu jej wyraźnej zgody w swoim interfejsie.