Content API for Shopping 兼容性

您可以使用本指南将 Merchant API 与现有的 Content API for Shopping 实现集成。

开始使用

如需详细了解 Merchant API 及其子 API,请参阅 Merchant API 设计

如需开始使用 Merchant API,请将请求网址更改为以下格式:

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

如需了解详情,请参阅快速入门指南和 Merchant API 参考文档

gRPC 支持

Merchant API 支持 gRPC 和 REST。您可以同时为 Merchant API 使用 gRPC,并为 Content API for Shopping 使用 REST。

Merchant API 客户端库需要 gRPC。

如需了解详情,请参阅使用 gRPC

兼容性

本指南介绍了适用于整个 Merchant API 的一般变更。如需了解特定功能的变更,请参阅以下指南:

Merchant API 可与现有的 Content API for Shopping v2.1 功能搭配使用。

例如,您可以将 Merchant Inventories API 与现有的 Content API for Shopping v2.1 products 实现搭配使用。您可以使用 Content API for Shopping 上传新的本地商品(您在本地商店销售的商品),然后使用 Merchant Inventories API LocalInventory 资源来管理该商品的店内信息。

批量请求

Merchant API 不支持 Content API for Shopping 中提供的 customBatch 方法。请改为参阅一次发送多个请求或异步执行调用。

以下示例演示了如何插入商品输入。

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

如果您在 Content API 中使用 customBatch,并且需要为 Merchant API 使用此功能,请在反馈中告诉我们原因。

标识符

为了遵循 Google 的 API 改进原则,我们对 Merchant API 资源的标识符做出了一些更改。

名称取代了 ID

所有 Merchant API 资源都使用 name 字段作为其唯一标识符。

以下示例展示了如何在调用中使用 name 字段:

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

系统会将这个新的 name 字段作为 Merchant API 中所有读取和写入调用的资源标识符返回。

例如,实现 getName() 方法以从资源中检索 name,并将输出存储为变量,而不是自行根据商家 ID 和资源 ID 构建 name

子资源的父级字段

在 Merchant API 中,所有子资源都具有 parent 字段。您可以使用 parent 字段指定要将子项插入到的资源的 name,而不是传递整个父级资源。您还可以将 parent 字段与 list 方法结合使用,以列出该 parent 的子资源。

例如,如需列出给定商品的实体店商品目录,请在 list 方法的 parent 字段中指定该商品的 name。在这种情况下,给定的 product 是返回的 LocalInventory 资源的 parent

类型

以下是 Merchant API 子 API 共享的一些常见类型。

价格

商家常用软件包中的 Price 发生了以下变化:

Content API Merchant API
金额字段 value:string amountMicros:int64
币种字段 currency:string currencyCode:string

Price 金额现在以微单位记录,其中 100 万微单位等于您所用货币的标准单位。

在 Content API for Shopping 中,Price 是字符串形式的十进制数字。

金额字段名称已从 value 更改为 amountMicros

货币字段名称已从 currency 更改为 currencyCode。格式保持为 ISO 4217