Gérer les accords des conditions d'utilisation de Merchant Center

Pour utiliser Merchant Center et ses fonctionnalités, vous devez accepter les Conditions d'utilisation de Merchant Center pour votre établissement. Ces contrats définissent les conditions légales d'utilisation des services Merchant Center.

Ce guide vous explique comment utiliser l'API Merchant pour gérer ces contrats, que ce soit pour votre propre compte ou pour les comptes que vous gérez en tant que fournisseur tiers.

Vous pouvez :

  • Vérifiez l'état actuel de l'accord sur les conditions d'utilisation pour un compte.
  • Guidez les marchands pour qu'ils acceptent les conditions d'utilisation nécessaires.
  • Gérez les conditions d'utilisation en tant que fournisseur tiers pour les comptes client ou les comptes autonomes.

Prérequis

Pour utiliser l'API Merchant, vous devez disposer d'un compte Merchant Center. Une fois que vous l'avez créé à l'aide de l'interface utilisateur (UI) de Merchant Center, vous pouvez modifier le compte (par exemple, mettre à jour les informations sur votre entreprise, gérer les utilisateurs, etc.) à l'aide de l'UI ou de l'API.

Si vous devez gérer plusieurs comptes, vous pouvez créer des comptes clients à l'aide de l'API Merchant. Consultez Créer et gérer des sous-comptes.

Vérifier l'état d'acceptation des conditions d'utilisation d'un compte

Avant qu'un marchand puisse utiliser pleinement Merchant Center, ou si vous devez vérifier l'état actuel de son contrat, vous pouvez récupérer l'état de son contrat de conditions d'utilisation.

Utilisez la méthode termsOfServiceAgreementStates.retrieveForApplication pour obtenir l'état de l'acceptation des conditions d'utilisation pour l'application principale Merchant Center. Cette méthode renvoie vos conditions d'utilisation actuelles, le cas échéant, et, si elles ont été mises à jour depuis votre dernière acceptation, la dernière version que vous devez accepter.

Voici un exemple de requête :

GET https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/termsOfServiceAgreementStates:retrieveForApplication

Un appel réussi renvoie une ressource TermsOfServiceAgreementState. Cette ressource contient :

  • name : identifiant de l'état de cet accord.
  • regionCode : pays auquel s'applique l'état de cet accord, généralement le pays de l'entreprise du compte.
  • termsOfServiceKind : cette valeur sera MERCHANT_CENTER.
  • accepted : informations sur la version des conditions d'utilisation déjà acceptée par le compte, y compris le nom de ressource termsOfService (par exemple, termsOfService/132) et l'utilisateur qui l'a acceptedBy. Il peut également inclure une date validUntil si une version plus récente des conditions d'utilisation est required.
  • required : informations sur une version des conditions d'utilisation que le compte doit accepter. Cela inclut le nom de ressource termsOfService et un tosFileUri pointant vers le document des conditions d'utilisation lisible par l'utilisateur.

Exemple de réponse :

{
  "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/"
  }
}

Si de nouvelles conditions d'utilisation sont required, vous devez inviter le marchand à les accepter.

Voici un exemple que vous pouvez utiliser pour récupérer l'état de l'accord sur les conditions d'utilisation pour un compte et un pays spécifiques :

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()

Accepter les conditions d'utilisation

Les marchands doivent accepter les dernières conditions d'utilisation pour continuer à accéder aux fonctionnalités de Merchant Center.

Accepter les conditions d'utilisation pour votre propre compte

Si vous gérez votre propre compte Merchant Center, procédez comme suit :

  1. Appelez le termsOfServiceAgreementStates.retrieveForApplication pour savoir si des conditions d'utilisation sont required.
  2. Si des conditions d'utilisation sont requises, notez le nom termsOfService dans le champ required (par exemple, termsOfService/132).
  3. Appelez termsOfService.accept pour accepter les conditions d'utilisation. Vous aurez besoin du nom des conditions d'utilisation, de votre ACCOUNT_ID et de la regionCode renvoyée par retrieveForApplication.

    Voici un exemple de requête :

    POST https://merchantapi.googleapis.com/accounts/v1/{name={termsOfService/VERSION}}:accept
    {
      "account": "accounts/{ACCOUNT_ID}",
      "regionCode": "{REGION_CODE}"
    }
    

    Si l'appel aboutit, un corps de réponse vide est renvoyé et l'état d'acceptation des conditions d'utilisation du compte est mis à jour.

Inviter les marchands à accepter les conditions d'utilisation (pour les fournisseurs tiers)

Si vous êtes un fournisseur tiers qui gère des comptes Merchant Center autonomes pour d'autres entreprises, vous ne devez pas accepter les conditions d'utilisation en leur nom. À la place, vous devez :

  1. Récupérer les dernières conditions d'utilisation : appelez termsOfService.retrieveLatest pour les types regionCode et MERCHANT_CENTER du marchand afin d'obtenir les détails de la dernière version des conditions d'utilisation qu'il devra peut-être accepter.

    Exemple de demande :

    GET https://merchantapi.googleapis.com/accounts/v1/termsOfService:retrieveLatest?regionCode={REGION_CODE}&kind=MERCHANT_CENTER
    

    Exemple de réponse :

    {
        "name": "{termsOfService/VERSION}",
        "regionCode": "{REGION_CODE}",
        "kind": "MERCHANT_CENTER",
        "fileUri": "https://www.google.com/intl/{REGION_CODE}/policies/merchants/terms/"
    }
    
  2. Afficher les conditions d'utilisation : utilisez fileUri de la réponse pour afficher l'intégralité du texte des conditions d'utilisation au marchand dans l'UI de votre application.

  3. Obtenir l'acceptation du marchand : le marchand doit accepter explicitement les conditions dans votre UI.

  4. Enregistrez l'acceptation à l'aide de l'API : une fois que le marchand a accepté, appelez termsOfService.accept en utilisant le name des conditions d'utilisation obtenu à l'étape 1, le ACCOUNT_ID du marchand et son regionCode.

    Exemple de demande :

    POST https://merchantapi.googleapis.com/accounts/v1/{name={termsOfService/VERSION}}:accept
    {
      "account": "accounts/{MERCHANT_ACCOUNT_ID}",
      "regionCode": "{REGION_CODE}"
    }
    

Voici un exemple que vous pouvez utiliser pour accepter les conditions d'utilisation d'un compte donné (une fois que le marchand les a acceptées) :

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()

Considérations spéciales pour les fournisseurs tiers

En tant que fournisseur tiers, vous pouvez gérer les conditions d'utilisation des comptes client ou des comptes autonomes.

Gérer les conditions d'utilisation pour les comptes client

Si vous gérez un compte avancé et que vous créez des comptes client pour différentes entreprises :

  • Acceptation avancée des comptes : si un compte avancé fournit le service d'agrégation de comptes à des comptes clients, les conditions d'utilisation acceptées par le compte avancé s'appliqueront également à tous ses comptes clients avec ce service.
  • Affichage et consentement : même si l'acceptation du compte avancé couvre les comptes clients, il est recommandé (et peut-être même obligatoire légalement) d'afficher les conditions d'utilisation de Google Merchant Center concernées au propriétaire réel de chaque compte client. Vous devez obtenir leur consentement explicite pour confirmer qu'ils comprennent et acceptent ces conditions, même si l'appel d'API pour l'acceptation est effectué au niveau du compte avancé.
  • Vérifier l'état d'un compte client : utilisez termsOfServiceAgreementStates.retrieveForApplication sur un compte client spécifique pour vérifier l'état de ses conditions d'utilisation et voir s'il est couvert par le contrat du compte avancé ou si une action directe est nécessaire.

Gérer les conditions d'utilisation pour les comptes autonomes

Comme indiqué dans Guider les marchands pour qu'ils acceptent les conditions d'utilisation, lorsque vous aidez une entreprise à créer ou à gérer un compte Merchant Center autonome, cette entreprise (le propriétaire du compte) doit accepter personnellement les conditions d'utilisation. Pour ce faire, vous devez récupérer et afficher les conditions d'utilisation, puis appeler la méthode termsOfService.accept en leur nom après qu'ils ont donné leur consentement explicite via votre interface.