Ajouter des informations sur les magasins aux produits en magasin

Vous pouvez utiliser l'API Merchant Inventories pour indiquer que vos produits sont disponibles dans des magasins physiques.

Vous devez fournir des informations supplémentaires pour les produits en magasin, comme storeCode et availability. Pour en savoir plus sur les champs que vous pouvez fournir, consultez les spécifications du flux d'inventaire de produits en magasin.

Pour ajouter des informations sur vos magasins à vos produits en magasin, procédez comme suit:

Associez votre entreprise à Merchant Center

Vous devez disposer d'une fiche d'établissement et d'un compte marchand pour présenter des produits en magasin sur Google.

Configurez vos comptes pour les fiches produit locales et ajoutez les informations sur votre entreprise.

Après avoir configuré vos comptes, associez votre fiche d'établissement et votre compte Merchant Center.

Vous pouvez également utiliser la version 2.1 de Content API for Shopping pour associer vos comptes.

Vérifier que vous avez des produits en magasin

Vous pouvez utiliser Content API for Shopping pour filtrer les produits de votre compte par channel afin de vérifier que vous disposez de produits en magasin existants. L'attribut channel des produits en magasin doit être défini sur local.

Si vous devez ajouter des produits en magasin à votre compte, utilisez Content API for Shopping pour insérer de nouveaux produits ou créer un flux.

Insérer les informations sur le magasin

Une fois que vous avez ajouté des produits en magasin dans votre compte marchand, vous pouvez ajouter des informations en magasin comme store_code, price et availability.

Voici un exemple que vous pouvez utiliser pour ajouter des informations en magasin à un produit à l'aide de localInventories.list:

Java

  public static void insertLocalInventory(Config config, String productId, String storeCode)
      throws Exception {
    GoogleCredentials credential = new Authenticator().authenticate();

    LocalInventoryServiceSettings localInventoryServiceSettings =
        LocalInventoryServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    String parent = getParent(config.getMerchantId().toString(), productId);

    try (LocalInventoryServiceClient localInventoryServiceClient =
        LocalInventoryServiceClient.create(localInventoryServiceSettings)) {

      Price price = Price.newBuilder().setAmountMicros(33_450_000).setCurrencyCode("USD").build();

      InsertLocalInventoryRequest request =
          InsertLocalInventoryRequest.newBuilder()
              .setParent(parent)
              .setLocalInventory(
                  LocalInventory.newBuilder()
                      .setAvailability("out of stock")
                      .setStoreCode(storeCode)
                      .setPrice(price)
                      .build())
              .build();

      System.out.println("Sending insert LocalInventory request");
      LocalInventory response = localInventoryServiceClient.insertLocalInventory(request);
      System.out.println("Inserted LocalInventory Name below");
      System.out.println(response.getName());
    } catch (Exception e) {
      System.out.println(e);
    }
  }

cURL

  curl --location
  'https://merchantapi.googleapis.com/inventories/v1beta/accounts/987654321/products/en~US~12345/localInventories:insert' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer <API_TOKEN>' \
  --data '{
     "storeCode": "123456",
     "price": {
         "amountMicros": "33450000",
         "currencyCode": "USD"
     },
     "availability": "out of stock"
  }'

PHP

class InsertLocalInventory
{
    // ENSURE you fill in the merchant account and product ID for the sample to
    // work.
    private const PARENT = 'accounts/[INSERT_ACCOUNT_HERE]/products/[INSERT_PRODUCT_HERE]';
    // ENSURE you fill in store code for the sample to work.
    private const LOCAL_INVENTORY_STORE_CODE = 'INSERT_STORE_CODE_HERE';

    /**
     * Inserts a local inventory underneath the parent product.
     *
     * @param string $parent The account and product where this inventory will be inserted.
     *     Format: `accounts/{account}/products/{product}`
     * @param string $localInventoryRegion
     *     ID of the region for this
     *     `LocalInventory` resource. See the [Local availability and
     *     pricing](https://support.google.com/merchants/answer/9698880) for more details.
     */
    public function insertLocalInventorySample(
        string $parent,
        string $localInventoryStoreCode
    ): void {
        // Gets the OAuth credentials to make the request.
        $credentials = Authentication::useServiceAccountOrTokenFile();

        // Creates options config containing credentials for the client to use.
        $options = ['credentials' => $credentials];

        // Creates a client.
        $localInventoryServiceClient = new LocalInventoryServiceClient($options);

        // Creates a price object.
        $price = new Price(
            [
                'currency_code' => "USD",
                'amount_micros' => 33450000,
            ]
        );

        // Creates a new local inventory object.
        $localInventory = (new LocalInventory())
            ->setStoreCode($localInventoryStoreCode)
            ->setAvailability("in stock")
            ->setPrice($price);

        // Calls the API and catches and prints any network failures/errors.
        try {
            /** @var LocalInventory $response */
            $response = $localInventoryServiceClient->insertLocalInventory(
                $parent,
                $localInventory
            );
            printf('Response data: %s%s', $response->serializeToJsonString(), PHP_EOL);
        } catch (ApiException $ex) {
            printf('Call failed with message: %s%s', $ex->getMessage(), PHP_EOL);
        }
    }

    /**
     * Helper to execute the sample.
     */
    public function callSample(): void
    {
        // Makes the call to insert the local inventory to the parent product
        // for the given region.
        $this->insertLocalInventorySample($this::PARENT, $this::LOCAL_INVENTORY_STORE_CODE);
    }

}

Python

from examples.authentication import generate_user_credentials
from google.shopping import merchant_inventories_v1beta

# ENSURE you fill in the merchant account and product ID for the sample to
# work.
_ACCOUNT = "INSERT_ACCOUNT_HERE"
_PRODUCT = "INSERT_PRODUCT_HERE"
_PARENT = f"accounts/{_ACCOUNT}/products/{_PRODUCT}"
# ENSURE you fill in store code for the sample to work.
_STORE_CODE = "INSERT_STORE_CODE_HERE"


def insert_local_inventory():
  """Inserts a `LocalInventory` to a given product.

  Replaces the full `LocalInventory` resource if an entry with the same
  `region` already exists for the product.

  It might take up to 30 minutes for the new or updated `LocalInventory`
  resource to appear in products.
  """

  # Gets OAuth Credentials.
  credentials = generate_user_credentials.main()

  # Creates a client.
  client = merchant_inventories_v1beta.LocalInventoryServiceClient(
      credentials=credentials)

  # Creates a Local inventory and populate its attributes.
  local_inventory = merchant_inventories_v1beta.LocalInventory()
  local_inventory.store_code = _STORE_CODE
  local_inventory.availability = "in stock"
  local_inventory.price = {
      "currency_code": "USD",
      "amount_micros": 33450000,
  }

  # Creates the request.
  request = merchant_inventories_v1beta.InsertLocalInventoryRequest(
      parent=_PARENT,
      local_inventory=local_inventory,
  )

  # Makes the request and catch and print any error messages.
  try:
    response = client.insert_local_inventory(request=request)

    print("Insert successful")
    print(response)
  except Exception as e:
    print("Insert failed")
    print(e)

Cet appel renvoie exactement les mêmes valeurs que celles que vous envoyez et ne représente peut-être pas entièrement les données d'inventaire finales.

L'affichage du nouveau LocalInventory dans le produit peut prendre jusqu'à 30 minutes.

Vous pouvez également utiliser l'interface utilisateur de Merchant Center pour créer un flux d'inventaire de produits en magasin.

S'inscrire aux fiches produit locales gratuites

Après avoir associé une fiche d'établissement à votre compte marchand, vous pouvez vous inscrire aux fiches produit locales gratuites. Assurez-vous de respecter les Règles relatives aux fiches sans frais.

Lorsque vous activez les fiches produit locales gratuites, vos produits en magasin peuvent apparaître dans des fiches sans frais sur les propriétés Google.