오프라인 제품에 매장 정보 추가

Merchant Inventories API를 사용하여 제품을 오프라인 상점에서 구매할 수 있음을 나타낼 수 있습니다.

오프라인 제품에는 storeCodeavailability와 같은 추가 정보가 필요합니다. 제공할 수 있는 필드에 관한 자세한 내용은 오프라인 제품 인벤토리 피드 사양을 참고하세요.

오프라인 제품에 매장 정보를 추가하는 단계는 다음과 같습니다.

판매자 센터에 비즈니스 연결

Google에 오프라인 제품을 등록하려면 비즈니스 프로필판매자 계정이 필요합니다.

오프라인 제품 목록의 계정을 설정하고 비즈니스 정보를 추가합니다.

계정을 설정한 후 비즈니스 프로필과 판매자 센터 계정을 연결합니다.

Content API for Shopping v2.1을 사용하여 계정을 연결할 수도 있습니다.

오프라인 제품이 있는지 확인

Content API for Shopping을 사용하여 channel계정의 제품을 필터링하여 기존 오프라인 제품이 있는지 확인할 수 있습니다. 오프라인 제품에는 channel 값으로 local가 있어야 합니다.

계정에 오프라인 제품을 추가해야 하는 경우 Content API for Shopping을 사용하여 새 제품을 삽입하거나 피드를 만듭니다.

매장 정보 삽입

판매자 계정에 오프라인 제품이 있으면 store_code, price, availability와 같은 매장 정보를 추가할 수 있습니다.

다음은 localInventories.list를 사용하여 제품에 매장 정보를 추가하는 데 사용할 수 있는 샘플입니다.

Java

  public static void insertLocalInventory(Config config, String productId, String storeCode)
      throws Exception {
    GoogleCredentials credential = new Authenticator().authenticate();

    LocalInventoryServiceSettings localInventoryServiceSettings =
        LocalInventoryServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    String parent = getParent(config.getMerchantId().toString(), productId);

    try (LocalInventoryServiceClient localInventoryServiceClient =
        LocalInventoryServiceClient.create(localInventoryServiceSettings)) {

      Price price = Price.newBuilder().setAmountMicros(33_450_000).setCurrencyCode("USD").build();

      InsertLocalInventoryRequest request =
          InsertLocalInventoryRequest.newBuilder()
              .setParent(parent)
              .setLocalInventory(
                  LocalInventory.newBuilder()
                      .setAvailability("out of stock")
                      .setStoreCode(storeCode)
                      .setPrice(price)
                      .build())
              .build();

      System.out.println("Sending insert LocalInventory request");
      LocalInventory response = localInventoryServiceClient.insertLocalInventory(request);
      System.out.println("Inserted LocalInventory Name below");
      System.out.println(response.getName());
    } catch (Exception e) {
      System.out.println(e);
    }
  }

cURL

  curl --location
  'https://merchantapi.googleapis.com/inventories/v1beta/accounts/987654321/products/en~US~12345/localInventories:insert' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer <API_TOKEN>' \
  --data '{
     "storeCode": "123456",
     "price": {
         "amountMicros": "33450000",
         "currencyCode": "USD"
     },
     "availability": "out of stock"
  }'

2,399필리핀

class InsertLocalInventory
{
    // ENSURE you fill in the merchant account and product ID for the sample to
    // work.
    private const PARENT = 'accounts/[INSERT_ACCOUNT_HERE]/products/[INSERT_PRODUCT_HERE]';
    // ENSURE you fill in store code for the sample to work.
    private const LOCAL_INVENTORY_STORE_CODE = 'INSERT_STORE_CODE_HERE';

    /**
     * Inserts a local inventory underneath the parent product.
     *
     * @param string $parent The account and product where this inventory will be inserted.
     *     Format: `accounts/{account}/products/{product}`
     * @param string $localInventoryRegion
     *     ID of the region for this
     *     `LocalInventory` resource. See the [Local availability and
     *     pricing](https://support.google.com/merchants/answer/9698880) for more details.
     */
    public function insertLocalInventorySample(
        string $parent,
        string $localInventoryStoreCode
    ): void {
        // Gets the OAuth credentials to make the request.
        $credentials = Authentication::useServiceAccountOrTokenFile();

        // Creates options config containing credentials for the client to use.
        $options = ['credentials' => $credentials];

        // Creates a client.
        $localInventoryServiceClient = new LocalInventoryServiceClient($options);

        // Creates a price object.
        $price = new Price(
            [
                'currency_code' => "USD",
                'amount_micros' => 33450000,
            ]
        );

        // Creates a new local inventory object.
        $localInventory = (new LocalInventory())
            ->setStoreCode($localInventoryStoreCode)
            ->setAvailability("in stock")
            ->setPrice($price);

        // Calls the API and catches and prints any network failures/errors.
        try {
            /** @var LocalInventory $response */
            $response = $localInventoryServiceClient->insertLocalInventory(
                $parent,
                $localInventory
            );
            printf('Response data: %s%s', $response->serializeToJsonString(), PHP_EOL);
        } catch (ApiException $ex) {
            printf('Call failed with message: %s%s', $ex->getMessage(), PHP_EOL);
        }
    }

    /**
     * Helper to execute the sample.
     */
    public function callSample(): void
    {
        // Makes the call to insert the local inventory to the parent product
        // for the given region.
        $this->insertLocalInventorySample($this::PARENT, $this::LOCAL_INVENTORY_STORE_CODE);
    }

}

Python

from examples.authentication import generate_user_credentials
from google.shopping import merchant_inventories_v1beta

# ENSURE you fill in the merchant account and product ID for the sample to
# work.
_ACCOUNT = "INSERT_ACCOUNT_HERE"
_PRODUCT = "INSERT_PRODUCT_HERE"
_PARENT = f"accounts/{_ACCOUNT}/products/{_PRODUCT}"
# ENSURE you fill in store code for the sample to work.
_STORE_CODE = "INSERT_STORE_CODE_HERE"


def insert_local_inventory():
  """Inserts a `LocalInventory` to a given product.

  Replaces the full `LocalInventory` resource if an entry with the same
  `region` already exists for the product.

  It might take up to 30 minutes for the new or updated `LocalInventory`
  resource to appear in products.
  """

  # Gets OAuth Credentials.
  credentials = generate_user_credentials.main()

  # Creates a client.
  client = merchant_inventories_v1beta.LocalInventoryServiceClient(
      credentials=credentials)

  # Creates a Local inventory and populate its attributes.
  local_inventory = merchant_inventories_v1beta.LocalInventory()
  local_inventory.store_code = _STORE_CODE
  local_inventory.availability = "in stock"
  local_inventory.price = {
      "currency_code": "USD",
      "amount_micros": 33450000,
  }

  # Creates the request.
  request = merchant_inventories_v1beta.InsertLocalInventoryRequest(
      parent=_PARENT,
      local_inventory=local_inventory,
  )

  # Makes the request and catch and print any error messages.
  try:
    response = client.insert_local_inventory(request=request)

    print("Insert successful")
    print(response)
  except Exception as e:
    print("Insert failed")
    print(e)

이 호출은 제출한 값과 정확히 동일한 값을 반환하며, 최종 인벤토리 데이터를 완전히 나타내지 않을 수도 있습니다.

LocalInventory가 제품에 표시되는 데 최대 30분이 걸릴 수 있습니다.

판매자 센터 UI를 사용해 오프라인 제품 인벤토리 피드를 만들 수도 있습니다.

무료 오프라인 제품 등록정보 가입

비즈니스 프로필을 판매자 계정에 연결한 후 무료 오프라인 제품 등록정보에 등록할 수 있습니다. 무료 등록정보 정책을 준수해야 합니다.

무료 오프라인 제품 등록정보에 참여하면 매장 제품을 Google 서비스의 무료 등록정보에 표시할 수 있습니다.