Content API for Shopping uyumluluğu

Merchant API'yi mevcut Content API for Shopping uygulamanızla entegre etmek için bu kılavuzu kullanabilirsiniz.

Başlayın

Merchant API ve alt API'leri hakkında ayrıntılı bilgi için Merchant API tasarımını inceleyin.

Merchant API'yi kullanmaya başlamak için istek URL'lerinizi aşağıdaki biçime getirin:

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

Daha fazla bilgi için hızlı başlangıç kılavuzuna ve Merchant API referansına bakın.

gRPC desteği

Merchant API, gRPC ve REST'i destekler. Merchant API için gRPC'yi ve Content API for Shopping için REST'i aynı anda kullanabilirsiniz.

Merchant API istemci kitaplıkları gRPC gerektirir.

Daha fazla bilgi için gRPC kullanma bölümüne bakın.

Uyumluluk

Bu kılavuzda, Merchant API'nin tamamı için geçerli olan genel değişiklikler açıklanmaktadır. Belirli özelliklerde yapılan değişiklikler için aşağıdaki kılavuzlara bakın:

Merchant API, mevcut Content API for Shopping 2.1 özellikleriyle birlikte çalışacak şekilde tasarlanmıştır.

Örneğin, mevcut Content API for Shopping 2.1 sürümünüzle products birlikte Merchant Inventories API'yi kullanabilirsiniz. Yeni bir yerel ürünü (yerel bir mağazada sattığınız) yüklemek için Content API for Shopping'i, ardından ürünün mağaza içi bilgilerini yönetmek için Merchant Inventories API LocalInventory kaynağını kullanabilirsiniz.

Toplu istekler

Merchant API, Content API for Shopping'te yer alan customBatch yöntemini desteklemez. Bunun yerine Tek seferde birden fazla istek gönderme başlıklı makaleyi inceleyin veya çağrılarınızı eşzamansız olarak yürütün.

Aşağıdaki örnekte ürün girişinin nasıl ekleneceği gösterilmektedir.

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'de customBatch kullanıyorsanız ve Merchant API için bu özelliğe ihtiyacınız varsa geri bildiriminizde nedenini bize bildirin.

Tanımlayıcılar

Google'ın API iyileştirme ilkelerine uygunluk sağlamak için Merchant API kaynaklarının tanımlayıcılarında bazı değişiklikler yaptık.

ad, kimliğin yerini alır

Tüm Merchant API kaynakları, benzersiz tanımlayıcı olarak name alanını kullanır.

Aşağıda, aramalarınızda name alanının nasıl kullanılacağına dair bir örnek verilmiştir:

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

Bu yeni name alanı, Merchant API'deki tüm okuma ve yazma çağrıları için kaynak tanımlayıcısı olarak döndürülür.

Örneğin, name değerini bir kaynaktan almak için bir getName() yöntemi uygulayın ve name değerini satıcı ve kaynak kimliklerinden kendiniz oluşturmak yerine çıktıyı bir değişkende saklayın.

alt kaynaklar için üst alan adları

Merchant API'de tüm alt kaynaklarda parent alanı bulunur. Ebeveynin tüm kaynağını iletmek yerine, alt öğeyi ekleyeceğiniz kaynağın name değerini belirtmek için parent alanını kullanabilirsiniz. Ayrıca, parent alanını list yöntemleriyle kullanarak ilgili parent öğesinin alt kaynaklarını da listeleyebilirsiniz.

Örneğin, belirli bir ürünün yerel envanterlerini listelemek için list yönteminin parent alanında ürünün name değerini belirtin. Bu durumda, verilen product, döndürülen LocalInventory kaynaklarının parent öğesidir.

Türler

Merchant API alt API'leri arasında paylaşılan bazı yaygın türler aşağıda verilmiştir.

Fiyat

Satıcı Ortak paketinde Price için yapılan değişiklikleri aşağıda bulabilirsiniz:

Content API Merchant API
Tutar alanı value:string amountMicros:int64
Para birimi alanı currency:string currencyCode:string

Price tutarı artık mikro cinsinden kaydedilir. 1 milyon mikro, para biriminizin standart birimine eşdeğerdir.

Alışveriş için Content API'de Price, dize biçiminde bir ondalık sayıydı.

Tutar alanı adı value yerine amountMicros olarak değiştirildi

Para birimi alanı adı currency yerine currencyCode olarak değiştirildi. Biçim ISO 4217 olarak kalır.