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:
- Kontoverwaltung migrieren
- Versandeinstellungen migrieren
- Produkteinträge migrieren
- Verwaltung von Datenquellen migrieren
- Inventarverwaltung migrieren
- Migration der Angebotsverwaltung
- Berichtsverwaltung migrieren
- Verwaltung von Conversion-Quellen migrieren
- Partnerverwaltung für lokale Feeds migrieren
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.