Merchant Inventories API를 사용하여 제품이 오프라인 매장에서 구매할 수 있음을 나타낼 수 있습니다.
현지 제품에는 storeCode
및 availability
와 같은 추가 정보가 필요합니다. 제공할 수 있는 필드에 대한 자세한 내용은 오프라인 인벤토리 데이터 사양을 참고하세요.
오프라인 제품에 매장 정보를 추가하는 단계는 다음과 같습니다.
판매자 센터에 비즈니스 연결
Google에 오프라인 제품을 등록하려면 비즈니스 프로필과 판매자 계정이 필요합니다.
오프라인 제품 등록정보에 대한 계정을 설정하고 오프라인 판매점 인벤토리에 대한 계정을 구성합니다.
계정을 설정한 후 비즈니스 프로필과 판매자 센터 계정을 연결합니다.
무료 오프라인 제품 등록정보 가입하기
비즈니스 프로필을 판매자 센터 계정에 연결한 후 무료 오프라인 제품 등록정보에 등록할 수 있습니다. 무료 등록정보 정책을 준수해야 합니다.
무료 오프라인 제품 등록정보에 참여하면 매장 제품을 Google 서비스 전체의 무료 등록정보에 표시할 수 있습니다.
현지 제품이 있는지 확인
Merchant API를 사용하여 channel
로 계정의 제품을 필터링하여 기존 오프라인 제품이 있는지 확인할 수 있습니다. 오프라인 제품의 channel
값은 local
여야 합니다.
계정에 오프라인 제품을 추가해야 하는 경우 Merchant API를 사용하여 새 제품을 삽입하거나 데이터 소스를 만듭니다.
다음은 계정의 모든 오프라인 제품을 검색하는 샘플 요청입니다.
POST https://merchantapi.googleapis.com/reports/v1beta/accounts/{ACCOUNT_ID}/reports:search
{
"query": "SELECT id, offer_id, title, channel FROM product_view WHERE channel='LOCAL'"
}
매장 정보 삽입
판매자 센터 계정에 오프라인 제품을 추가한 후 store_code
, price
, availability
와 같은 매장 정보를 추가할 수 있습니다.
다음은
localInventories.insert
를 사용하여 제품에 매장 정보를 추가하는 데 사용할 수 있는 샘플입니다.
자바
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"
}'
PHP
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분이 걸릴 수 있습니다.