شما میتوانید از رابط برنامهنویسی کاربردی فروشندگان (Merchant API) برای بهروز نگه داشتن اطلاعات منطقهای محصولات آنلاین خود استفاده کنید. این شامل بهروزرسانی قیمت و موجودی و حذف مناطقی میشود که یک محصول دیگر در آنها فروخته نمیشود.
اگر شما یک پلتفرم تجارت الکترونیک هستید، میتوانید از Merchant API برای ایجاد رابطی استفاده کنید که در آن مشتریان شما بتوانند قیمتگذاری منطقهای و موجودی محصولات خود را بهروزرسانی کنند.
بهروزرسانی قیمت و موجودی بر اساس منطقه
برای بهروزرسانی اطلاعات منطقهای یک محصول، از regionalInventories.insert استفاده کنید. این فراخوانی جایگزین منبع کامل RegionalInventory میشود، بنابراین مطمئن شوید که همه فیلدها را وارد کردهاید. برای نمونه کد و جزئیات بیشتر ، به افزودن اطلاعات منطقهای به محصولات آنلاین مراجعه کنید.
مشاهده مناطق موجود شما
این بخش نحوه مشاهده مناطق مرتبط با یک محصول یا حساب را توضیح میدهد.
بر اساس محصول
از accounts.products.regionalInventories.list برای فهرست کردن تمام موجودیهای منطقهای مرتبط با یک محصول خاص در حساب خود استفاده کنید. از فیلد region برای شناسایی منطقهای که هر موجودی منطقهای به آن اشاره دارد، استفاده کنید.
در اینجا نمونهای از فهرست موجودی منطقهای یک محصول ارائه شده است:
جاوا
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.inventories.v1.ListRegionalInventoriesRequest;
import com.google.shopping.merchant.inventories.v1.RegionalInventory;
import com.google.shopping.merchant.inventories.v1.RegionalInventoryServiceClient;
import com.google.shopping.merchant.inventories.v1.RegionalInventoryServiceClient.ListRegionalInventoriesPagedResponse;
import com.google.shopping.merchant.inventories.v1.RegionalInventoryServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to list all the regional inventories on a given product */
public class ListRegionalInventoriesSample {
private static String getParent(String accountId, String productId) {
return String.format("accounts/%s/products/%s", accountId, productId);
}
public static void listRegionalInventories(Config config, String productId) throws Exception {
GoogleCredentials credential = new Authenticator().authenticate();
RegionalInventoryServiceSettings regionalInventoryServiceSettings =
RegionalInventoryServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
String parent = getParent(config.getAccountId().toString(), productId);
try (RegionalInventoryServiceClient regionalInventoryServiceClient =
RegionalInventoryServiceClient.create(regionalInventoryServiceSettings)) {
// The parent product has the format: accounts/{account}/products/{product}
ListRegionalInventoriesRequest request =
ListRegionalInventoriesRequest.newBuilder().setParent(parent).build();
System.out.println("Sending list regional inventory request:");
ListRegionalInventoriesPagedResponse response =
regionalInventoryServiceClient.listRegionalInventories(request);
int count = 0;
// Iterates over all rows in all pages and prints the regional inventory
// in each row.
for (RegionalInventory element : response.iterateAll()) {
System.out.println(element);
count++;
}
System.out.print("The following count of elements were returned: ");
System.out.println(count);
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// An ID assigned to a product by Google. In the format
// channel:contentLanguage:feedLabel:offerId
String productId = "online:en:label:1111111111";
listRegionalInventories(config, productId);
}
}
حلقه
curl --location
'https://merchantapi.googleapis.com/inventories/v1/accounts/987654321/products/en~US~12345/regionalInventories' \
--header 'Authorization: Bearer <API_TOKEN>'
پی اچ پی
use Google\ApiCore\ApiException;
use Google\ApiCore\PagedListResponse;
use Google\Shopping\Merchant\Inventories\V1\RegionalInventory;
use Google\Shopping\Merchant\Inventories\V1\Client\RegionalInventoryServiceClient;
use Google\Shopping\Merchant\Inventories\V1\ListRegionalInventoriesRequest;
/**
* Class to list the `RegionalInventory` resources for the given product in your
* merchant account. The response might contain fewer items than specified by
* `pageSize`. If `pageToken` was returned in previous request, it can be
* used to obtain additional results.
*
* `RegionalInventory` resources are listed per product for a given account.
*/
class ListRegionalInventories
{
// 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]';
/**
* Lists all the regional inventories of a given product.
*
* @param string $parent The `name` of the parent product to list `RegionalInventory`
* resources for.
* Format: `accounts/{account}/products/{product}`
*/
function listRegionalInventoriesSample(string $parent): 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.
$regionalInventoryServiceClient = new RegionalInventoryServiceClient($options);
// Prepare the request message.
$request = (new ListRegionalInventoriesRequest())
->setParent($parent);
// Calls the API and catches and prints any network failures/errors.
try {
// Page size is set to the default value. If you are returned more
// responses than your page size, this code will automatically
// re-call the service with the `pageToken` until all responses
// are returned.
$parameters = ['pageSize' => 25000];
/** @var PagedListResponse $response */
$response =
$regionalInventoryServiceClient->listRegionalInventories($request, $parameters);
/** @var RegionalInventory $element */
foreach ($response as $element) {
printf('RegionalInventory data: %s%s', $element->serializeToJsonString(), PHP_EOL);
}
} catch (ApiException $ex) {
printf('Call failed with message: %s%s', $ex->getMessage(), PHP_EOL);
}
}
// Helper to execute the sample.
function callSample(): void
{
// Lists all the regional inventories of the parent product.
$this->listRegionalInventoriesSample($this::PARENT);
}
}
$sample = new ListRegionalInventories();
$sample->callSample();
پایتون
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping import merchant_inventories_v1
# ENSURE you fill in the product ID for the sample to
# work.
_ACCOUNT = configuration.Configuration().read_merchant_info()
_PRODUCT = "[INSERT_PRODUCT_HERE]"
_PARENT = f"accounts/{_ACCOUNT}/products/{_PRODUCT}"
def list_regional_inventories():
"""Lists the `RegionalInventory` resources for the given product.
The response might contain fewer items than specified by
`pageSize`. If `pageToken` was returned in previous request, it can be
used to obtain additional results.
`RegionalInventory` resources are listed per product for a given account.
"""
# Gets OAuth Credentials.
credentials = generate_user_credentials.main()
# Creates a client.
client = merchant_inventories_v1.RegionalInventoryServiceClient(
credentials=credentials)
# Creates the request.
# Page size is set to the default value.
request = merchant_inventories_v1.ListRegionalInventoriesRequest(
parent=_PARENT,
page_size=25000
)
try:
# Makes the request and catch and print any error messages.
# If you are returned more responses than your page size, this code
# will automatically re-call the service with the `pageToken` until all
# responses are returned.
page_result = client.list_regional_inventories(request=request)
# Print the response.
for response in page_result:
print(response)
except RuntimeError as e:
print("List failed")
print(e)
if __name__ == "__main__":
list_regional_inventories()
بر اساس حساب
شما میتوانید از متد regions.list در Merchant API برای مشاهده تمام مناطق حساب خود استفاده کنید.
حذف مناطق
در اینجا نحوه حذف مناطقی که دیگر در آنها محصولات نمیفروشید، آورده شده است.
از محصولات
اگر محصولی دیگر در یک منطقه خاص فروخته نمیشود، باید اطلاعات موجودی آن منطقه را از محصول حذف کنید. میتوانید regionalInventories.delete برای حذف یک ورودی موجودی منطقهای خاص از یک محصول استفاده کنید.
در اینجا نمونهای آورده شده است که میتوانید برای حذف یک ورودی موجودی منطقهای از یک محصول استفاده کنید:
جاوا
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.inventories.v1.DeleteRegionalInventoryRequest;
import com.google.shopping.merchant.inventories.v1.RegionalInventoryName;
import com.google.shopping.merchant.inventories.v1.RegionalInventoryServiceClient;
import com.google.shopping.merchant.inventories.v1.RegionalInventoryServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to delete a regional inventory for a given product */
public class DeleteRegionalInventorySample {
public static void deleteRegionalInventory(Config config, String productId, String regionId)
throws Exception {
GoogleCredentials credential = new Authenticator().authenticate();
RegionalInventoryServiceSettings regionalInventoryServiceSettings =
RegionalInventoryServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
String name =
RegionalInventoryName.newBuilder()
.setAccount(config.getAccountId().toString())
.setProduct(productId)
.setRegion(regionId)
.build()
.toString();
try (RegionalInventoryServiceClient regionalInventoryServiceClient =
RegionalInventoryServiceClient.create(regionalInventoryServiceSettings)) {
DeleteRegionalInventoryRequest request =
DeleteRegionalInventoryRequest.newBuilder().setName(name).build();
System.out.println("Sending deleteRegionalInventory request");
regionalInventoryServiceClient.deleteRegionalInventory(
request); // no response returned on success
System.out.println(
"Delete successful, note that it may take up to 30 minutes for the delete to update in"
+ " the system.");
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// An ID assigned to a product by Google. In the format
// channel:contentLanguage:feedLabel:offerId
String productId = "online:en:label:1111111111";
// The ID uniquely identifying each region.
String regionId = "1111111";
deleteRegionalInventory(config, productId, regionId);
}
}
حلقه
curl --location --request DELETE
'https://merchantapi.googleapis.com/inventories/v1/accounts/987654321/products/en~US~12345/regionalInventories/123456' \
--header 'Authorization: Bearer <API_TOKEN>'
پی اچ پی
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Inventories\V1\Client\RegionalInventoryServiceClient;
use Google\Shopping\Merchant\Inventories\V1\DeleteRegionalInventoryRequest;
/**
* Deletes the specified `RegionalInventory` resource from the given product
* in your merchant account. It might take up to an hour for the
* `RegionalInventory` to be deleted from the specific product.
* Once you have received a successful delete response, wait for that
* period before attempting a delete again.
*/
class DeleteRegionalInventory
{
// ENSURE you fill in the merchant account, product, and region ID for the
// sample to work.
private const ACCOUNT = 'INSERT_ACCOUNT_ID_HERE';
private const PRODUCT = 'INSERT_PRODUCT_ID_HERE';
private const REGION = 'INSERT_REGION_ID_HERE';
/**
* Deletes a specific regional inventory of a given product.
*
* @param string $formattedName The name of the `RegionalInventory` resource
* to delete.
* Format: `accounts/{account}/products/{product}/regionalInventories/{region}`
* Please see {@see RegionalInventoryServiceClient::regionalInventoryName()}
* for help formatting this field.
*/
function deleteRegionalInventorySample(string $formattedName): 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.
$regionalInventoryServiceClient = new RegionalInventoryServiceClient($options);
// Prepare the request message.
$request = (new DeleteRegionalInventoryRequest())
->setName($formattedName);
// Calls the API and catches and prints any network failures/errors.
try {
$regionalInventoryServiceClient->deleteRegionalInventory($request);
print 'Delete call completed successfully.' . PHP_EOL;
} catch (ApiException $ex) {
printf('Call failed with message: %s%s', $ex->getMessage(), PHP_EOL);
}
}
/**
* Helper to execute the sample.
*/
function callSample(): void
{
// These variables are defined at the top of the file.
$formattedName = RegionalInventoryServiceClient::regionalInventoryName(
$this::ACCOUNT,
$this::PRODUCT,
$this::REGION
);
// Deletes the specific regional inventory of the parent product.
$this->deleteRegionalInventorySample($formattedName);
}
}
$sample = new DeleteRegionalInventory();
$sample->callSample();
پایتون
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping import merchant_inventories_v1
# ENSURE you fill in the product ID and region ID
# for the sample to work.
_ACCOUNT = configuration.Configuration().read_merchant_info()
_PRODUCT = "[INSERT_PRODUCT_HERE]"
_REGION = "[INSERT_REGION_HERE]"
_NAME = f"accounts/{_ACCOUNT}/products/{_PRODUCT}/regionalInventories/{_REGION}"
def delete_regional_inventory():
"""Deletes the specified `RegionalInventory` resource from the given product.
It might take up to an hour for the `RegionalInventory` to be deleted
from the specific product. Once you have received a successful delete
response, wait for that period before attempting a delete again.
"""
# Gets OAuth Credentials.
credentials = generate_user_credentials.main()
# Creates a client.
client = merchant_inventories_v1.RegionalInventoryServiceClient(
credentials=credentials)
# Creates the request.
request = merchant_inventories_v1.DeleteRegionalInventoryRequest(
name=_NAME,
)
# Makes the request and catch and print any error messages.
try:
client.delete_regional_inventory(request=request)
print("Delete successful")
except RuntimeError as e:
print("Delete failed")
print(e)
if __name__ == "__main__":
delete_regional_inventory()
ممکن است حذف یک ورودی RegionalInventory از یک محصول تا 30 دقیقه طول بکشد.
این فراخوانی، اطلاعات مربوط به region مشخصشده را فقط از product مشخصشده حذف میکند.
از حسابها
برای حذف مناطقی از حساب کاربری خود که دیگر محصولات خود را در آنها نمیفروشید، از متد accounts.products.regionalInventories.delete استفاده کنید.