Content API برای سازگاری Shopping

می‌توانید از این راهنما برای ادغام Merchant API با Content API موجود برای اجرای خرید استفاده کنید.

شروع کنید

برای جزئیات بیشتر درباره Merchant API و APIهای فرعی آن، به طراحی Merchant API مراجعه کنید.

برای شروع استفاده از Merchant API، URL های درخواست خود را به فرمت زیر تغییر دهید:

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

برای اطلاعات بیشتر به راهنمای شروع سریع و مرجع Merchant API مراجعه کنید.

پشتیبانی از gRPC

Merchant API از gRPC و REST پشتیبانی می کند. می‌توانید همزمان از gRPC برای Merchant API و REST برای Content API برای خرید استفاده کنید.

کتابخانه های مشتری API Merchant به gRPC نیاز دارند.

برای اطلاعات بیشتر به استفاده از gRPC مراجعه کنید.

سازگاری

این راهنما تغییرات کلی را که برای کل Merchant API اعمال می شود، توضیح می دهد. برای تغییرات در ویژگی‌های خاص به راهنمای زیر مراجعه کنید:

Merchant API طوری طراحی شده است که در کنار ویژگی های Content API موجود برای خرید نسخه 2.1 کار کند.

برای مثال، می‌توانید از Merchant Inventories API در کنار Content API موجود برای اجرای products خرید نسخه 2.1 استفاده کنید. ممکن است از Content API برای خرید برای آپلود یک محصول محلی جدید (که در یک فروشگاه محلی می فروشید) استفاده کنید، سپس از منبع Merchant Inventories API LocalInventory برای مدیریت اطلاعات موجود در فروشگاه برای آن محصول استفاده کنید.

درخواست های دسته ای

Merchant API از روش customBatch که در Content API برای خرید ارائه شده است پشتیبانی نمی کند. درعوض، به ارسال چندین درخواست به صورت همزمان مراجعه کنید یا تماس های خود را به صورت ناهمزمان اجرا کنید.

نمونه زیر نحوه درج ورودی محصول را نشان می دهد.

جاوا

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

اگر از customBatch در Content API استفاده می‌کنید و به این ویژگی برای Merchant API نیاز دارید، دلیل آن را در بازخورد خود به ما بگویید.

شناسه ها

برای همسویی با اصول بهبود API Google، برخی از تغییرات را در شناسه‌های منابع Merchant API ایجاد کرده‌ایم.

نام جایگزین شناسه می شود

همه منابع Merchant API از فیلد name به عنوان شناسه منحصر به فرد خود استفاده می کنند.

در اینجا مثالی از نحوه استفاده از فیلد name در تماس های خود آورده شده است:

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

این فیلد name جدید به عنوان شناسه منبع برای همه تماس‌های خواندن و نوشتن در Merchant API برگردانده می‌شود.

به عنوان مثال، یک متد getName() را برای بازیابی name از یک منبع پیاده سازی کنید و خروجی را به عنوان متغیر ذخیره کنید به جای اینکه خودتان name را از تاجر و شناسه منبع بسازید.

فیلدهای والد برای منابع فرزند

در Merchant API، همه منابع فرزند دارای فیلد parent هستند. می توانید از فیلد parent برای تعیین name منبع برای درج فرزند به جای ارسال کل منبع والد استفاده کنید. همچنین می‌توانید از فیلد parent با روش‌های list برای فهرست کردن منابع فرزند آن parent استفاده کنید.

به عنوان مثال، برای فهرست کردن موجودی‌های محلی برای یک محصول معین، name محصول را در فیلد parent برای روش list مشخص کنید. در این حالت، product داده شده، parent منابع LocalInventory بازگشتی است.

انواع

در اینجا برخی از انواع رایج مشترک در میان APIهای فرعی Merchant API آورده شده است.

قیمت

این چیزی است که برای Price در بسته Merchant Common تغییر کرده است:

Content API Merchant API
فیلد مقدار value:string amountMicros:int64
فیلد ارز currency:string currencyCode:string

مقدار Price اکنون بر حسب میکرو ثبت می شود، که در آن 1 میلیون میکرو معادل واحد استاندارد ارز شما است.

در Content API برای خرید، Price یک عدد اعشاری به شکل یک رشته بود.

نام فیلد مقدار از value به amountMicros تغییر کرده است

نام فیلد ارز از currency به currencyCode تغییر کرده است. فرمت به عنوان ISO 4217 باقی می ماند.