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:
- Przenieś zarządzanie kontami
- Migracja ustawień dostawy
- Migracja zarządzania usługami
- Migracja zarządzania źródłami danych
- Migracja zarządzania asortymentem
- Migracja zarządzania promocjami
- Migracja zarządzania raportowaniem
- Migracja zarządzania źródłami konwersji
- Migracja zarządzania partnerskimi danymi o asortymencie lokalnym
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.