Puoi utilizzare questa guida per integrare l'API Merchant con la tua implementazione esistente dell'API Content for Shopping.
Inizia
Consulta la sezione Design dell'API Merchant per informazioni dettagliate sull'API Merchant e sulle relative API secondarie.
Per iniziare a utilizzare l'API Merchant, modifica gli URL delle richieste nel seguente formato:
https://merchantapi.googleapis.com/{sub-API}/{version}/{resource name}:{method}…
Per ulteriori informazioni, consulta la guida rapida e il riferimento dell'API Merchant.
Supporto gRPC
L'API Merchant supporta gRPC e REST. Puoi utilizzare contemporaneamente gRPC per l'API Merchant e REST per l'API Content for Shopping.
Le librerie client dell'API Merchant richiedono gRPC.
Per ulteriori informazioni, consulta la sezione Utilizzare gRPC.
Compatibilità
Questa guida descrive le modifiche generali che si applicano all'intera API Merchant. Consulta le seguenti guide per le modifiche a funzionalità specifiche:
- Eseguire la migrazione della gestione degli account
- Eseguire la migrazione delle impostazioni di spedizione
- Eseguire la migrazione della gestione dei prodotti
- Eseguire la migrazione della gestione delle origini dati
- Eseguire la migrazione della gestione degli inventari
- Eseguire la migrazione della gestione delle promozioni
- Eseguire la migrazione della gestione dei report
- Eseguire la migrazione della gestione delle origini conversione
- Eseguire la migrazione della gestione delle partnership per i feed locali
L'API Merchant è progettata per funzionare insieme alle funzionalità esistenti della versione 2.1 dell'API Content for Shopping.
Ad esempio, puoi utilizzare l'API Merchant Inventories insieme alla tua implementazione esistente dell'API Content for Shopping v2.1
products
. Puoi utilizzare l'API Content for Shopping per caricare un nuovo prodotto locale (che vendi in un negozio locale) e poi utilizzare la risorsa API Merchant Inventories LocalInventory
per gestire le informazioni in negozio per quel prodotto.
Richieste batch
L'API Merchant non supporta il metodo customBatch
presente nell'API Content for Shopping. Leggi invece la sezione Inviare più richieste contemporaneamente o esegui le chiamate in modo asincrono.
Il seguente esempio mostra come inserire un input relativo al prodotto.
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);
}
}
Se utilizzi customBatch
nell'API Content e hai bisogno di questa funzionalità per l'API Merchant, comunicaci il motivo nel tuo feedback.
Identificatori
Per allinearci ai principi di miglioramento delle API di Google, abbiamo apportato alcune modifiche agli identificatori delle risorse dell'API Merchant.
Il nome sostituisce l'ID
Tutte le risorse dell'API Merchant utilizzano il campo name
come identificatore univoco.
Ecco un esempio di come utilizzare il campo name
nelle chiamate:
POST https://merchantapi.googleapis.com/inventories/v1beta/{parent}/regionalInventories:insert
Questo nuovo campo name
viene restituito come identificatore della risorsa per tutte le chiamate di lettura e scrittura nell'API Merchant.
Ad esempio, implementa un metodo getName()
per recuperare il name
da una risorsa e memorizza l'output come variabile anziché creare autonomamente il name
dagli ID commerciante e risorsa.
campi parent per le risorse secondarie
Nell'API Merchant, tutte le risorse secondarie hanno il campo parent
. Puoi utilizzare il campo parent
per specificare il name
della risorsa in cui inserire la risorsa secondaria, anziché passare l'intera risorsa principale. Puoi anche utilizzare il campo parent
con i metodi list
per elencare le risorse secondarie di quel parent
.
Ad esempio, per elencare gli inventari locali di un determinato prodotto, specifica il valore name
del prodotto nel campo parent
per il metodo list
. In questo caso, product
è il parent
delle risorse
LocalInventory
riportate.
Tipi
Di seguito sono riportati alcuni tipi comuni condivisi tra le sottoAPI dell'API Merchant.
Prezzo
Ecco cosa è cambiato per Price
nel pacchetto Merchant Common:
API Content | API Merchant | |
---|---|---|
Campo dell'importo | value:string |
amountMicros:int64 |
Campo Valuta | currency:string
|
currencyCode:string |
L'importo in Price
viene ora registrato in micro, dove 1 milione di micro è equivalente all'unità standard della tua valuta.
Nell'API Content for Shopping, Price
era un numero decimale sotto forma di stringa.
Il nome del campo dell'importo è passato da value
a amountMicros
Il nome del campo valuta è passato da currency
a currencyCode
. Il formato rimane ISO 4217.