Zgodność Content API for Shopping

Z tego przewodnika możesz skorzystać, aby zintegrować interfejs Merchant API z istniejącą implementacją Content API for Shopping.

Rozpocznij

Szczegółowe informacje o interfejsie Merchant API i jego podstawowych interfejsach API znajdziesz w artykule Projekt interfejsu Merchant API.

Aby zacząć korzystać z interfejsu Merchant API, zmień adresy URL żądań na następujący format:

https://merchantapi.googleapis.com/{sub-API}/{version}/{resource name}:{method}

Więcej informacji znajdziesz w krótkim wprowadzeniu i dokumentacji interfejsu Merchant API.

Obsługa gRPC

Interfejs Merchant API obsługuje protokoły gRPC i REST. Możesz jednocześnie używać interfejsu gRPC dla Merchant API i interfejsu REST dla Content API for Shopping.

Biblioteki klienta interfejsu Merchant API wymagają gRPC.

Więcej informacji znajdziesz w artykule Używanie gRPC.

Zgodność

Ten przewodnik opisuje ogólne zmiany, które dotyczą całego interfejsu Merchant API. Informacje o zmianach w poszczególnych funkcjach znajdziesz w tych przewodnikach:

Interfejs Merchant API jest przeznaczony do współpracy z funkcjami Content API for Shopping w wersji 2.1.

Możesz na przykład używać interfejsu Merchant Inventories API wraz z dotychczasową implementacją interfejsu Content API for Shopping w wersji 2.1products. Możesz użyć interfejsu Content API for Shopping, aby przesłać nowy produkt dostępny lokalnie (który sprzedajesz w lokalnym sklepie), a następnie użyć zasobu interfejsu Merchant Inventories API LocalInventory, aby zarządzać informacjami o tym produkcie w sklepie.

Żądania zbiorcze

Interfejs Merchant API nie obsługuje metody customBatch dostępnej w Content API for Shopping. Zamiast tego użyj funkcji wysyłania wielu żądań jednocześnie lub wywołań asynchronicznych.

Poniższy przykład pokazuje, jak wstawić dane wejściowe dotyczące produktu.

Java

  public static void asyncInsertProductInput(Config config, String dataSource) throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the credentials retrieved above.
    ProductInputsServiceSettings productInputsServiceSettings =
        ProductInputsServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates parent to identify where to insert the product.
    String parent = getParent(config.getAccountId().toString());

    // Calls the API and catches and prints any network failures/errors.
    try (ProductInputsServiceClient productInputsServiceClient =
        ProductInputsServiceClient.create(productInputsServiceSettings)) {

      // Creates five insert product input requests with random product IDs.
      List<InsertProductInputRequest> requests = new ArrayList<>(5);
      for (int i = 0; i < 5; i++) {
        InsertProductInputRequest request =
            InsertProductInputRequest.newBuilder()
                .setParent(parent)
                // You can only insert products into datasource types of Input "API" and "FILE", and
                // of Type "Primary" or "Supplemental."
                // This field takes the `name` field of the datasource.
                .setDataSource(dataSource)
                // If this product is already owned by another datasource, when re-inserting, the
                // new datasource will take ownership of the product.
                .setProductInput(createRandomProduct())
                .build();

        requests.add(request);
      }

      System.out.println("Sending insert product input requests");
      List<ApiFuture<ProductInput>> futures =
          requests.stream()
              .map(
                  request ->
                      productInputsServiceClient.insertProductInputCallable().futureCall(request))
              .collect(Collectors.toList());

      // Creates callback to handle the responses when all are ready.
      ApiFuture<List<ProductInput>> responses = ApiFutures.allAsList(futures);
      ApiFutures.addCallback(
          responses,
          new ApiFutureCallback<List<ProductInput>>() {
            @Override
            public void onSuccess(List<ProductInput> results) {
              System.out.println("Inserted products below");
              System.out.println(results);
            }

            @Override
            public void onFailure(Throwable throwable) {
              System.out.println(throwable);
            }
          },
          MoreExecutors.directExecutor());

    } catch (Exception e) {
      System.out.println(e);
    }
  }

Jeśli używasz funkcji customBatch w Content API i potrzebujesz tej funkcji w Merchant API, poinformuj nas o tym w opinii.

Identyfikatory

Aby dostosować się do zasad Google dotyczących ulepszania interfejsów API, wprowadziliśmy pewne zmiany w identyfikatorach zasobów interfejsu Merchant API.

name zastępuje Id

Wszystkie zasoby interfejsu Merchant API używają pola name jako unikalnego identyfikatora.

Oto przykład użycia pola name w wywołaniach:

POST https://merchantapi.googleapis.com/inventories/v1beta/{parent}/regionalInventories:insert

To nowe pole name jest zwracane jako identyfikator zasobu we wszystkich wywołaniach odczytu i zapisu w Merchant API.

Na przykład zamiast samodzielnie tworzyć name na podstawie identyfikatorów sprzedawcy i zasobu, możesz zaimplementować metodę getName(), aby pobrać name z zasobu, a wynik zapisać jako zmienną.

pola nadrzędne zasobów podrzędnych.

W Merchant API wszystkie zasoby podrzędne mają pole parent. Zamiast przekazywać cały zasób nadrzędny, możesz użyć pola parent, aby określić name zasobu, do którego chcesz wstawić zasób podrzędny. Możesz też użyć pola parent z metodami list, aby wyświetlić podrzędne zasoby tego parent.

Aby na przykład wyświetlić lokalny asortyment danego produktu, określ name produktu w polu parent dla metody list. W tym przypadku podany parametr product to parent zwróconych zasobów LocalInventory.

Typy

Oto kilka typów wspólnych dla wszystkich interfejsów API Merchant API.

Cena

Oto, co się zmieniło w przypadku Price w pakiecie Merchant Common:

Content API. Interfejs API sprzedawcy
Pole kwoty value:string amountMicros:int64
Pole Waluta currency:string currencyCode:string

Kwota Price jest teraz zapisywana w mikro, gdzie 1 milion mikro odpowiada standardowej jednostce waluty.

W Content API for Shopping parametr Price był liczbą dziesiętną w postaci ciągu znaków.

Nazwa pola „Kwota” została zmieniona z value na amountMicros

Nazwa pola waluty zmieniła się z currency na currencyCode. Format pozostaje taki sam jak w ISO 4217.