Puedes usar esta guía para integrar la API de Merchant con tu implementación existente de Content API for Shopping.
Comenzar
Consulta el diseño de la API de Merchant para obtener detalles sobre la API de Merchant y sus sub-APIs.
Para comenzar a usar la API de Merchant, cambia las URLs de tus solicitudes al siguiente formato:
https://merchantapi.googleapis.com/{sub-API}/{version}/{resource name}:{method}…
Consulta la guía de inicio rápido y la referencia de la API de Merchant para obtener más información.
Compatibilidad con gRPC
La API de Merchant admite gRPC y REST. Puedes usar gRPC para la API de Merchant Center y REST para Content API for Shopping al mismo tiempo.
Las bibliotecas cliente de la API de Merchant requieren gRPC.
Consulta Cómo usar gRPC para obtener más información.
Compatibilidad
En esta guía, se describen los cambios generales que se aplican a toda la API de Merchant. Consulta las siguientes guías para conocer los cambios en funciones específicas:
- Administración de la migración de cuentas
- Cómo migrar la configuración de envío
- Cómo migrar la administración de productos
- Cómo migrar la administración de fuentes de datos
- Cómo migrar la administración de inventarios
- Cómo migrar la administración de promociones
- Cómo migrar la administración de informes
- Cómo migrar la administración de las fuentes de conversiones
- Cómo migrar la administración de asociaciones de feeds locales
La API de Merchant está diseñada para funcionar junto con las funciones existentes de Content API for Shopping v2.1.
Por ejemplo, puedes usar la API de Merchant Inventories junto con tu implementación existente de products
de Content API for Shopping v2.1. Puedes usar Content API for Shopping para subir un nuevo producto local (que vendes en una tienda local) y, luego, usar el recurso de la API de Merchant Inventories LocalInventory
para administrar la información en la tienda de ese producto.
Utiliza solicitudes por lotes
La API de Merchant no admite el método customBatch
que se incluye en Content API for Shopping. En su lugar, consulta Cómo enviar varias solicitudes a la vez o ejecuta tus llamadas de forma asíncrona.
En el siguiente ejemplo, se muestra cómo insertar una entrada de producto.
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);
}
}
Si usas customBatch
en Content API y necesitas esta función para la API de Merchant, cuéntanos por qué en tus comentarios.
Identificadores
Para alinearnos con los principios de mejora de las APIs de Google, realizamos algunos cambios en los identificadores de los recursos de la API de Merchant.
El nombre reemplaza al ID
Todos los recursos de la API de Merchant usan el campo name
como identificador único.
Este es un ejemplo de cómo usar el campo name
en tus llamadas:
POST https://merchantapi.googleapis.com/inventories/v1beta/{parent}/regionalInventories:insert
Este nuevo campo name
se muestra como el identificador de recursos para todas las llamadas de lectura y escritura en la API de Merchant.
Por ejemplo, implementa un método getName()
para recuperar el name
de un recurso y almacenar el resultado como una variable en lugar de construir el name
a partir de los IDs del comercio y del recurso por tu cuenta.
campos superiores para recursos secundarios
En la API de Merchant, todos los recursos secundarios tienen el campo parent
. Puedes usar
el campo parent
para especificar el name
del recurso al que se insertará el secundario,
en lugar de pasar todo el recurso superior. También puedes usar el campo parent
con métodos list
para enumerar los recursos secundarios de ese parent
.
Por ejemplo, para enumerar los inventarios locales de un producto determinado, especifica el name
del producto en el campo parent
del método list
. En este caso, el product
determinado es el parent
de los recursos LocalInventory
que se muestran.
Tipos
Estos son algunos tipos comunes que se comparten entre las subAPIs de la API de Merchant Center.
Precio
Estos son los cambios para Price
en el paquete Merchant Common:
Content API | API de Merchant Center | |
---|---|---|
Campo de importe | value:string |
amountMicros:int64 |
Campo de moneda | currency:string
|
currencyCode:string |
El importe de Price
ahora se registra en micros, en el que 1 millón de micros equivale a la unidad estándar de tu moneda.
En Content API for Shopping, Price
era un número decimal en forma de cadena.
El nombre del campo de importe cambió de value
a amountMicros
El nombre del campo de moneda cambió de currency
a currencyCode
. El formato sigue siendo ISO 4217.