Kompatibilitas Content API for Shopping

Anda dapat menggunakan panduan ini untuk mengintegrasikan Merchant API dengan penerapan Content API for Shopping yang ada.

Mulai

Lihat desain Merchant API untuk mengetahui detail tentang Merchant API, dan sub-API-nya.

Untuk mulai menggunakan Merchant API, ubah URL permintaan Anda ke format berikut:

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

Lihat panduan memulai dan referensi Merchant API untuk mengetahui informasi selengkapnya.

Dukungan gRPC

Merchant API mendukung gRPC dan REST. Anda dapat menggunakan gRPC untuk Merchant API dan REST untuk Content API for Shopping secara bersamaan.

Library klien Merchant API memerlukan gRPC.

Lihat menggunakan gRPC untuk mengetahui informasi selengkapnya.

Kompatibilitas

Panduan ini menjelaskan perubahan umum yang berlaku untuk seluruh Merchant API. Lihat panduan berikut untuk mengetahui perubahan pada fitur tertentu:

Merchant API dirancang untuk berfungsi bersama fitur Content API for Shopping versi 2.1 yang ada.

Misalnya, Anda dapat menggunakan Merchant Inventories API bersama dengan implementasi Content API for Shopping v2.1 products yang ada. Anda dapat menggunakan Content API for Shopping untuk mengupload produk lokal baru (yang Anda jual di toko lokal), lalu menggunakan resource Merchant Inventories API LocalInventory untuk mengelola informasi di toko untuk produk tersebut.

Permintaan batch

Merchant API tidak mendukung metode customBatch yang ditampilkan di Content API for Shopping. Sebagai gantinya, lihat Mengirim beberapa permintaan sekaligus atau eksekusi panggilan secara asinkron.

Contoh berikut menunjukkan cara menyisipkan input produk.

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

Jika Anda menggunakan customBatch di Content API, dan memerlukan fitur ini untuk Merchant API, beri tahu kami alasannya dalam masukan Anda.

Pengenal

Agar selaras dengan prinsip peningkatan API Google, kami telah membuat beberapa perubahan pada ID untuk resource Merchant API.

nama menggantikan ID

Semua resource Merchant API menggunakan kolom name sebagai ID uniknya.

Berikut adalah contoh cara menggunakan kolom name dalam panggilan Anda:

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

Kolom name baru ini ditampilkan sebagai ID resource untuk semua panggilan baca dan tulis di Merchant API.

Misalnya, terapkan metode getName() untuk mengambil name dari resource, dan simpan output sebagai variabel, bukan membuat name dari ID penjual dan resource sendiri.

kolom induk untuk resource turunan

Di Merchant API, semua resource turunan memiliki kolom parent. Anda dapat menggunakan kolom parent untuk menentukan name resource tempat menyisipkan turunan, bukan meneruskan seluruh resource induk. Anda juga dapat menggunakan kolom parent dengan metode list untuk mencantumkan resource turunan dari parent tersebut.

Misalnya, untuk mencantumkan inventaris lokal untuk produk tertentu, tentukan name produk di kolom parent untuk metode list. Dalam hal ini, product yang diberikan adalah parent dari resource LocalInventory yang ditampilkan.

Jenis

Berikut adalah beberapa jenis umum yang dibagikan di seluruh sub-API Merchant API.

Harga

Berikut yang berubah untuk Price dalam paket Merchant Common:

Content API Merchant API
Kolom jumlah value:string amountMicros:int64
Kolom mata uang currency:string currencyCode:string

Jumlah Price kini dicatat dalam mikro, dengan 1 juta mikro setara dengan unit standar mata uang Anda.

Di Content API for Shopping, Price adalah angka desimal dalam bentuk string.

Nama kolom jumlah telah diubah dari value menjadi amountMicros

Nama kolom mata uang telah diubah dari currency menjadi currencyCode. Formatnya tetap ISO 4217.