Kompatibilität der Content API für Shopping

In diesem Leitfaden erfahren Sie, wie Sie die Merchant API in Ihre bestehende Content API for Shopping-Implementierung einbinden.

Jetzt starten

Details zur Merchant API und ihren untergeordneten APIs finden Sie im Design der Merchant API.

Wenn Sie die Merchant API verwenden möchten, ändern Sie Ihre Anfrage-URLs in das folgende Format:

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

Weitere Informationen finden Sie in der Kurzanleitung und in der Referenz zur Merchant API.

gRPC-Unterstützung

Die Merchant API unterstützt gRPC und REST. Sie können gleichzeitig gRPC für die Merchant API und REST für die Content API for Shopping verwenden.

Für die Clientbibliotheken der Merchant API ist gRPC erforderlich.

Weitere Informationen finden Sie unter gRPC verwenden.

Kompatibilität

In diesem Leitfaden werden allgemeine Änderungen beschrieben, die für die gesamte Merchant API gelten. Informationen zu Änderungen an bestimmten Funktionen finden Sie in den folgenden Leitfäden:

Die Merchant API ist für die Verwendung mit den vorhandenen Funktionen der Content API for Shopping Version 2.1 konzipiert.

Sie können die Merchant Inventories API beispielsweise zusammen mit Ihrer vorhandenen Implementierung der Content API for Shopping 2.1 products verwenden. Sie können die Content API for Shopping verwenden, um ein neues lokales Produkt hochzuladen, das Sie in einem Geschäft verkaufen. Anschließend können Sie die Informationen zum Inventar für dieses Produkt mit der Merchant Inventories API LocalInventory verwalten.

Batchanfragen

Die Merchant API unterstützt nicht die Methode customBatch, die in der Content API for Shopping verwendet wird. Lesen Sie stattdessen den Hilfeartikel Mehrere Anfragen gleichzeitig senden oder führen Sie Ihre Aufrufe asynchron aus.

Im folgenden Beispiel wird gezeigt, wie eine Produkteingabe eingefügt wird.

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);
    }
  }

Wenn Sie customBatch in der Content API verwenden und diese Funktion für die Merchant API benötigen, teilen Sie uns dies in Ihrem Feedback mit.

IDs

Gemäß den Grundsätzen zur Verbesserung von APIs von Google haben wir einige Änderungen an den IDs für Merchant API-Ressourcen vorgenommen.

Name ersetzt ID

Alle Merchant API-Ressourcen verwenden das Feld name als eindeutige Kennzeichnung.

Hier ein Beispiel für die Verwendung des Felds name in Ihren Aufrufen:

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

Dieses neue Feld name wird als Ressourcen-ID für alle Lese- und Schreibaufrufe in der Merchant API zurückgegeben.

Implementieren Sie beispielsweise eine getName()-Methode, um die name aus einer Ressource abzurufen, und speichern Sie die Ausgabe als Variable, anstatt die name selbst aus den Händler- und Ressourcen-IDs zu erstellen.

übergeordnete Felder für untergeordnete Ressourcen

In der Merchant API haben alle untergeordneten Ressourcen das Feld parent. Du kannst das Feld parent verwenden, um die name der Ressource anzugeben, in die das untergeordnete Element eingefügt werden soll, anstatt die gesamte übergeordnete Ressource zu übergeben. Sie können auch das parent-Feld mit list-Methoden verwenden, um die untergeordneten Ressourcen dieser parent aufzulisten.

Wenn Sie beispielsweise lokale Inventare für ein bestimmtes Produkt auflisten möchten, geben Sie die name des Produkts im Feld parent für die Methode list an. In diesem Fall ist die angegebene product die parent der zurückgegebenen LocalInventory-Ressourcen.

Typen

Im Folgenden finden Sie einige gängige Typen, die für alle Unter-APIs der Merchant API verwendet werden.

Preis

Folgendes hat sich für Price im Merchant Common-Paket geändert:

Content API Merchant API
Feld „Betrag“ value:string amountMicros:int64
Währungsfeld currency:string currencyCode:string

Der Price-Betrag wird jetzt in Mikros erfasst. Dabei entspricht eine Million Mikros der Standardeinheit Ihrer Währung.

In der Content API for Shopping war Price eine Dezimalzahl im Stringformat.

Der Name des Felds „Betrag“ wurde von value in amountMicros geändert.

Der Name des Währungsfelds wurde von currency in currencyCode geändert. Das Format bleibt ISO 4217.