Mantieni aggiornate le informazioni sui negozi

Puoi utilizzare l'API Merchant Inventories per mantenere aggiornate le informazioni relative al negozio per i tuoi prodotti locali. Ciò include l'aggiornamento di price e availability e la rimozione dei negozi in cui un prodotto non viene più venduto.

Se sei un fornitore di terze parti, puoi utilizzare l'API Merchant Inventories per creare un'interfaccia in cui i tuoi commercianti possono aggiornare la disponibilità dei loro prodotti in negozio.

Aggiorna il prezzo e la disponibilità in base al negozio

Utilizza localInventories.insert per aggiornare le informazioni sul negozio fisico per un prodotto.

Questa chiamata sostituisce la risorsa LocalInventory completa, quindi assicurati di includere tutti i campi. Consulta la pagina Aggiungere informazioni sul negozio ai prodotti locali per un esempio di codice e ulteriori dettagli.

Visualizza i negozi esistenti

Questa sezione spiega come visualizzare i negozi associati a un prodotto o account.

Per prodotto

Utilizza localInventories.list per elencare tutti gli inventari locali collegati a uno specifico product nel tuo account. Questa chiamata restituisce LocalInventory risorse complete. Utilizza l'attributo store_code per identificare ogni negozio.

Di seguito è riportato un esempio che puoi utilizzare per elencare gli inventari locali di un prodotto:

Java

  public static void listLocalInventories(Config config, String productId) 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)) {

      //  The parent product has the format: accounts/{account}/products/{product}
      ListLocalInventoriesRequest request =
          ListLocalInventoriesRequest.newBuilder().setParent(parent).build();

      System.out.println("Sending list Local inventory request:");
      ListLocalInventoriesPagedResponse response =
          localInventoryServiceClient.listLocalInventories(request);

      int count = 0;

      // Iterates over all rows in all pages and prints the Local inventory
      // in each row.
      for (LocalInventory element : response.iterateAll()) {
        System.out.println(element);
        count++;
      }
      System.out.print("The following count of elements were returned: ");
      System.out.println(count);
    } catch (Exception e) {
      System.out.println(e);
    }
  }

cURL

  curl --location
  'https://merchantapi.googleapis.com/inventories/v1beta/accounts/987654321/products/en~US~12345/localInventories' \
  --header 'Authorization: Bearer <API_TOKEN>'

PHP

class ListLocalInventories
{

    // 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]';

    /**
     * Lists all the local inventories of a given product.
     *
     * @param string $parent The `name` of the parent product to list `LocalInventory`
     *     resources for.
     *     Format: `accounts/{account}/products/{product}`
     */
    function listLocalInventoriesSample(string $parent): 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);

        // Calls the API and catches and prints any network failures/errors.
        try {
            // Page size is set to the default value. If you are returned more
            // responses than your page size, this code will automatically
            // re-call the service with the `pageToken` until all responses
            // are returned.
            $parameters = ['pageSize' => 25000];

            /** @var PagedListResponse $response */
            $response =
                $localInventoryServiceClient->listLocalInventories($parent, $parameters);

            /** @var LocalInventory $element */
            foreach ($response as $element) {
                printf('LocalInventory data: %s%s', $element->serializeToJsonString(), PHP_EOL);
            }
        } catch (ApiException $ex) {
            printf('Call failed with message: %s%s', $ex->getMessage(), PHP_EOL);
        }
    }

    // Helper to execute the sample.
    function callSample(): void
    {
        // Lists all the local inventories of the parent product.
        $this->listLocalInventoriesSample($this::PARENT);
    }
}

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


def list_local_inventories():
  """Lists the `LocalInventory` resources for the given product.

  The response might contain fewer items than specified by
  `pageSize`. If `pageToken` was returned in previous request, it can be
  used to obtain additional results.

  `LocalInventory` resources are listed per product for a given account.
  """

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

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

  # Creates the request.
  # Page size is set to the default value.
  request = merchant_inventories_v1beta.ListLocalInventoriesRequest(
      parent=_PARENT,
      page_size=25000
  )

  try:
    # Makes the request and catch and print any error messages.
    # If you are returned more responses than your page size, this code
    # will automatically re-call the service with the `pageToken` until all
    # responses are returned.
    page_result = client.list_local_inventories(request=request)

    # Print the response.
    for response in page_result:
      print(response)

  except Exception as e:
    print("List failed")
    print(e)

Per account

Puoi visualizzare tutti i negozi associati al tuo account nel profilo della tua attività o con l'API Google My Business. Non puoi utilizzare l'API Merchant Center per visualizzare o gestire i negozi a livello di account, poiché queste informazioni provengono dal profilo della tua attività.

Rimuovi negozi

Ecco come rimuovere i negozi in cui non vendi più prodotti.

Dai prodotti

Se un prodotto non è più venduto in un negozio specifico, devi rimuovere dal prodotto la voce dell'inventario locale per quel negozio. Puoi utilizzare localInventories.delete per rimuovere una specifica voce di inventario locale da un prodotto.

Di seguito è riportato un esempio che puoi utilizzare per rimuovere una voce di inventario locale da un prodotto:

Java

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

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

    String name =
        LocalInventoryName.newBuilder()
            .setAccount(config.getMerchantId().toString())
            .setProduct(productId)
            .setStoreCode(storeCode)
            .build()
            .toString();

    try (LocalInventoryServiceClient localInventoryServiceClient =
        LocalInventoryServiceClient.create(localInventoryServiceSettings)) {
      DeleteLocalInventoryRequest request =
          DeleteLocalInventoryRequest.newBuilder().setName(name).build();

      System.out.println("Sending deleteLocalInventory request");
      localInventoryServiceClient.deleteLocalInventory(request); // no response returned on success
      System.out.println(
          "Delete successful, note that it may take up to 30 minutes for the delete to update in"
              + " the system.");
    } catch (Exception e) {
      System.out.println(e);
    }
  }

cURL

  curl --location --request DELETE
  'https://merchantapi.googleapis.com/inventories/v1beta/accounts/987654321/products/en~US~12345/localInventories/123456' \
  --header 'Authorization: Bearer <API_TOKEN>'

PHP

class DeleteLocalInventory
{

    // ENSURE you fill in the merchant account, product, and region ID for the
    // sample to work.
    private const ACCOUNT = 'INSERT_ACCOUNT_ID_HERE';
    private const PRODUCT = 'INSERT_PRODUCT_ID_HERE';
    private const STORE_CODE = 'INSERT_STORE_CODE_HERE';

    /**
     * Deletes a specific local inventory of a given product.
     *
     * @param string $formattedName The name of the `LocalInventory` resource
     * to delete.
     *     Format: `accounts/{account}/products/{product}/localInventories/{store_code}`
     *     Please see {@see LocalInventoryServiceClient::localInventoryName()}
     *     for help formatting this field.
     */
    function deleteLocalInventorySample(string $formattedName): 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);

         // Calls the API and catches and prints any network failures/errors.
         try {
             $localInventoryServiceClient->deleteLocalInventory($formattedName);
             print 'Delete call completed successfully.' . PHP_EOL;
         } catch (ApiException $ex) {
             printf('Call failed with message: %s%s', $ex->getMessage(), PHP_EOL);
         }
    }

    /**
     * Helper to execute the sample.
     */
    function callSample(): void
    {
        // These variables are defined at the top of the file.
        $formattedName = LocalInventoryServiceClient::localInventoryName(
            $this::ACCOUNT,
            $this::PRODUCT,
            $this::STORE_CODE
        );

        // Deletes the specific local inventory of the parent product.
        $this->deleteLocalInventorySample($formattedName);
    }
}

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 and store code
# for the sample to work.
_ACCOUNT = "[INSERT_ACCOUNT_HERE]"
_PRODUCT = "[INSERT_PRODUCT_HERE]"
_STORE_CODE = "[INSERT_STORE_CODE_HERE]"
_NAME = (f"accounts/{_ACCOUNT}/products/{_PRODUCT}/localInventories/"
         f"{_STORE_CODE}")


def delete_local_inventory():
  """Deletes the specified `LocalInventory` resource from the given product.

  It might take up to an hour for the `LocalInventory` to be deleted
  from the specific product. Once you have received a successful delete
  response, wait for that period before attempting a delete again.
  """

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

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

  # Creates the request.
  request = merchant_inventories_v1beta.DeleteLocalInventoryRequest(name=_NAME)

  # Makes the request and catch and print any error messages.
  try:
    client.delete_local_inventory(request=request)
    print("Delete successful")
  except Exception as e:
    print("Delete failed")
    print(e)

Questa chiamata rimuove le informazioni solo per il negozio specificato, solo dal prodotto specificato.

Da account

Puoi rimuovere dal tuo account i negozi nei quali non vendi più i tuoi prodotti rimuovendoli dal profilo della tua attività. Per saperne di più, consulta Chiudere o rimuovere un'attività.