این صفحه توضیح می دهد که چگونه می توانید محصولات خود را به صورت برنامه ای آپلود و مدیریت کنید. با استفاده از Merchant Products API، میتوانید محصولی را در منبع داده درج یا بهروزرسانی کنید، محصولی را از حساب خود بازیابی کنید و محصولی را از منبع داده حذف کنید.
Merchant Products API شامل دو منبع است.
-
productInputs
قسمت های ورودی محصولات شما را نشان می دهد. -
products
نشان دهنده محصولات فرآوری شده است که از قطعات ورودی شما ساخته شده است.
productInputs
بسته به اینکه در یک منبع داده اولیه یا یک منبع داده تکمیلی آپلود شود، می تواند اولیه و تکمیلی باشد. هر product
از یک productInput
اولیه و هر تعداد productInputs
تکمیلی ساخته خواهد شد.
میتوانید از Merchant Products API برای ایجاد کاتالوگهای فروشگاه آنلاین یا محلی استفاده کنید، اینها محصولاتی هستند که میتوانند در چندین مقصد خرید ظاهر شوند. زمانی که حساب Merchant Center خود را ایجاد کردید، اولین منبع داده خود را راه اندازی کردید و آماده آپلود مجموعه اولیه محصولات از طریق API هستید، می توانید از منبع productInputs
استفاده کنید.
اگرچه تاجران توانایی آپلود محصولات را با استفاده از فایلی به نام PrimaryProductDataSource دارند، ایجاد و حذف محصولات با استفاده از Merchant API مزایای متعددی دارد. این مزایا شامل زمان پاسخگویی سریعتر و امکان به روز رسانی محصولات در زمان واقعی، بدون نیاز به مدیریت فایل های حجیم است. ممکن است چندین ساعت طول بکشد تا تغییرات محصول ایجاد شده توسط تماسهای API در پایگاه داده خرید نشان داده شود.
پیش نیازها
اگر منبع داده ندارید، با استفاده از Merchant Data Sources API یا Merchant Center یک منبع داده ایجاد کنید .
اگر قبلاً منبع داده ای دارید که با استفاده از Merchant Center UI یا با استفاده از API ایجاد کرده اید، می توانید از Merchant Products API برای افزودن محصولات خود استفاده کنید. اگر از Content API برای خرید برای افزودن محصولات استفاده میکنید، به راهنمای انتقال مراجعه کنید تا بدانید چگونه میتوانید با Merchant Products API شروع کنید.
شما مسئول رعایت سیاستهای تبلیغات خرید و فهرستهای رایگان هستید. تبلیغات خرید این حق را برای خود محفوظ میدارد که این خطمشیها را اجرا کند و در صورت مشاهده محتوا یا رفتاری که این خطمشیها را نقض میکند، به آن پاسخ مناسب بدهد.
منابع
منبع products
به شما امکان می دهد اطلاعات محصول را از پایگاه داده خرید بازیابی کنید.
منبع productInput
نشان دهنده داده های ورودی شما برای یک محصول است. همچنین روشهایی را ارائه میکند که به شما امکان میدهد اطلاعات محصول را یکی یکی یا چند بار در حالت دستهای بهروزرسانی یا حذف کنید. یک منبع productInput
باید دارای فیلدهای زیر باشد:
-
channel
: کانال محصول. -
offerId
: شناسه منحصر به فرد محصول. -
contentLanguage
: کد زبان دو حرفی ISO 639-1 برای محصول. -
feedLabel
: برچسبی که به شما امکان می دهد محصولات خود را دسته بندی و شناسایی کنید. حداکثر نویسه های مجاز 20 و نویسه های پشتیبانی شده عبارتند ازAZ
,0-9
, خط فاصله و زیر خط. برچسب خوراک نباید دارای هیچ فاصله ای باشد. برای اطلاعات بیشتر، به استفاده از برچسبهای خوراک مراجعه کنید.
ورودی محصول را در حساب خود آپلود کنید
برای آپلود ورودی محصول در حساب خود، از روش accounts.productInputs.insert
استفاده کنید. شما باید شناسه منحصر به فرد منبع داده اولیه یا تکمیلی را ارسال کنید.
نمونه درخواست زیر نشان می دهد که چگونه می توانید از روش accounts.productInputs.insert
برای آپلود ورودی محصول در حساب تاجر خود استفاده کنید. این درخواست قیمت و منطقه حمل و نقل و ویژگیهای سفارشی مانند تاریخ تولید و اندازه را تعیین میکند.
POST https://merchantapi.googleapis.com/products/v1beta/accounts/{ACCOUNT_ID}/productInputs:insert?dataSource={DATASOURCE}
{
"name": "{PRODUCT_TITLE}",
"versionNumber": {VERSION_NUMBER},
"contentLanguage": "{CONTENT_LANGUAGE}",
"feedLabel": "{FEED_LABEL}",
"offerId": "{OFFER_ID}",
"channel": "ONLINE",
"attributes": {
"availability": "in stock",
"imageLink": "{IMAGE_LINK}",
"link": "{PRODUCT_LINK}",
"brand": "{BRAND_NAME}",
"price": {
"currencyCode": "{CURRENCY_CODE}",
"amountMicros": {PRICE}
},
"color": "red",
"productWeight": {
"value": 320,
"unit": "g"
},
"adult": false,
"shipping": [
{
"country": "GB",
"price": {
"amountMicros": {SHIPPING_COST},
"currencyCode": "{CURRENCY_CODE_SHIPPING}"
},
"postalCode": "{SHIPPING_POSTALCODE}",
"service": "",
"region": "{SHIPPING_REGION}",
"maxHandlingTime": "{MAX_HANDLING_TIME}",
"minHandlingTime": "{MIN_HANDLING_TIME}",
"maxTransitTime": "{MAX_TRANSIT_TIME}",
"minTransitTime": "{MIN_TRANSIT_TIME}"
}
],
"gender": "Female"
},
"customAttributes": [
{
"name": "size",
"value": "Large"
},
{
"name": "Date of Manufacturing",
"value": "2024-05-05"
}
]
}
موارد زیر را جایگزین کنید:
- {ACCOUNT_ID} : شناسه منحصر به فرد حساب Merchant Center شما.
- {DATASOURCE} : شناسه منحصر به فرد منبع داده. باید در قالب
accounts/
{ACCOUNT_ID}/dataSources/
{DATASOURCE_ID} باشد. - {PRODUCT_TITLE} : نام محصول.
- {VERSION_NUMBER} : شماره نسخه محصول. اختیاری.
- {CONTENT_LANGUAGE} : کد زبان دو حرفی ISO 639-1 برای محصول. مورد نیاز.
- {FEED_LABEL} : برچسبی که به شما امکان می دهد محصولات خود را دسته بندی و شناسایی کنید. حداکثر نویسه های مجاز 20 و نویسه های پشتیبانی شده عبارتند از
AZ
,0-9
, خط فاصله و زیر خط. برچسب خوراک نباید دارای هیچ فاصله ای باشد. - {OFFER_ID} : شناسه منحصر به فرد محصول. مورد نیاز.
- {IMAGE_LINK} : پیوند به تصویر محصول در وبسایت شما. اختیاری.
- {PRODUCT_LINK} : پیوند به محصول در وب سایت شما. اختیاری.
- {CURRENCY_CODE} : واحد پول قیمت با استفاده از مخفف های سه حرفی مطابق با ISO 4217 . اختیاری.
- {PRICE} : قیمت محصول به صورت یک عدد در میکرو نمایش داده می شود. اختیاری.
- {SHIPPING_COST} : قیمت ثابت حمل و نقل به صورت یک عدد نشان داده میشود. اختیاری.
- {SHIPPING_POSTALCODE} : محدوده کد پستی که در آن نرخ حمل و نقل اعمال می شود. اختیاری.
- {MAX_HANDLING_TIME} : حداکثر زمان رسیدگی در روزهای کاری بین زمان دریافت سفارش و ارسال آن. اختیاری.
- {MIN_HANDLING_TIME} : حداقل زمان رسیدگی در روزهای کاری بین زمان دریافت سفارش و ارسال آن. مقدار 0 به این معنی است که سفارش در همان روز دریافت تحویل می شود. اختیاری.
- {MAX_TRANSIT_TIME} : حداکثر زمان حمل و نقل در روزهای کاری بین زمانی که سفارش ارسال شده است و زمان تحویل آن است. اختیاری.
- {MIN_TRANSIT_TIME} : حداقل زمان حمل و نقل در روزهای کاری بین زمانی که سفارش ارسال شده است و زمانی که تحویل می شود. مقدار 0 به این معنی است که سفارش در همان روز تحویل تحویل می شود. اختیاری.
وقتی درخواست با موفقیت اجرا شد، پاسخ زیر را مشاهده می کنید:
{
"name": "{PRODUCT_NAME}",
"product": "{PRODUCT_ID}",
"channel": "ONLINE",
"offerId": "{OFFER_ID}",
"contentLanguage": "{CONTENT_LANGUAGE}",
"feedLabel": "{FEED_LABEL}",
"versionNumber": "{VERSION_NUMBER}",
"attributes": {
"link": "{PRODUCT_LINK}",
"imageLink": "{IMAGE_LINK}",
"adult": false,
"availability": "in stock",
"brand": "{BRAND_NAME}",
"color": "red",
"gender": "Female",
"price": {
"amountMicros": "{PRICE}",
"currencyCode": "{CURRENCY_CODE}"
},
"shipping": [
{
"price": {
"amountMicros": "{SHIPPING_COST}",
"currencyCode": "{CURRENCY_CODE}"
},
"country": "{SHIPPING_COUNTRY}",
"region": "{SHIPPING_REGION}",
"postalCode": "{SHIPPING_POSTALCODE}",
"minHandlingTime": "{MIN_HANDLING_TIME}",
"maxHandlingTime": "{MAX_HANDLING_TIME}",
"minTransitTime": "{MIN_TRANSIT_TIME}",
"maxTransitTime": "{MAX_TRANSIT_TIME}"
}
],
"productWeight": {
"value": 320,
"unit": "g"
}
},
"customAttributes": [
{
"name": "Size",
"value": "Large"
},
{
"name": "Date of Manufacturing",
"value": "2024-05-05"
}
]
}
برای افزودن یک محصول به حساب Merchant Center خود، میتوانید از روش google.shopping.merchant.accounts.v1beta.InsertProductInputSample
استفاده کنید، همانطور که در نمونه زیر نشان داده شده است.
جاوا
public static void insertProductInput(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)) {
// Price to be used for shipping ($33.45).
Price price = Price.newBuilder().setAmountMicros(33_450_000).setCurrencyCode("USD").build();
Shipping shipping =
Shipping.newBuilder()
.setPrice(price)
.setCountry("GB")
.setService("1st class post")
.build();
Shipping shipping2 =
Shipping.newBuilder()
.setPrice(price)
.setCountry("FR")
.setService("1st class post")
.build();
Attributes attributes =
Attributes.newBuilder()
.setTitle("A Tale of Two Cities")
.setDescription("A classic novel about the French Revolution")
.setLink("https://exampleWebsite.com/tale-of-two-cities.html")
.setImageLink("https://exampleWebsite.com/tale-of-two-cities.jpg")
.setAvailability("in stock")
.setCondition("new")
.setGoogleProductCategory("Media > Books")
.setGtin(0, "9780007350896")
.addShipping(shipping)
.addShipping(shipping2)
.build();
// The datasource can be either a primary or supplemental datasource.
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(
ProductInput.newBuilder()
.setChannel(ChannelEnum.ONLINE)
.setContentLanguage("en")
.setFeedLabel("label")
.setOfferId("sku123")
.setAttributes(attributes)
.build())
.build();
System.out.println("Sending insert ProductInput request");
ProductInput response = productInputsServiceClient.insertProductInput(request);
System.out.println("Inserted ProductInput Name below");
// The last part of the product name will be the product ID assigned to a product by Google.
// Product ID has the format `channel~contentLanguage~feedLabel~offerId`
System.out.println(response.getName());
System.out.println("Inserted Product Name below");
System.out.println(response.getProduct());
} catch (Exception e) {
System.out.println(e);
}
}
یک محصول پردازش شده را از حساب خود بازیابی کنید
برای بازیابی یک محصول پردازش شده از حساب خود، از روش accounts.products.get
استفاده کنید. ممکن است چند دقیقه طول بکشد تا محصول فرآوری شده پس از قرار دادن ظاهر شود.
GET https://merchantapi.googleapis.com/products/v1beta/accounts/{ACCOUNT_ID}/products/{PRODUCT_NAME}
نام منبع ورودی محصولی را که میخواهید حذف کنید جایگزین {PRODUCT_NAME} کنید. به عنوان مثال، online~en~US~sku123
.
می توانید نام منبع محصول پردازش شده را از قسمت product
در پاسخ accounts.productInputs.insert
دریافت کنید.
برای بازیابی یک محصول واحد برای یک حساب Merchant Center معین، میتوانید از روش google.shopping.merchant.accounts.v1beta.GetProductRequest
استفاده کنید، همانطور که در نمونه زیر نشان داده شده است.
جاوا
public static void getProduct(Config config, String product) throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the credentials retrieved above.
ProductsServiceSettings productsServiceSettings =
ProductsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Calls the API and catches and prints any network failures/errors.
try (ProductsServiceClient productsServiceClient =
ProductsServiceClient.create(productsServiceSettings)) {
// The name has the format: accounts/{account}/products/{productId}
GetProductRequest request = GetProductRequest.newBuilder().setName(product).build();
System.out.println("Sending get product request:");
Product response = productsServiceClient.getProduct(request);
System.out.println("Retrieved Product below");
System.out.println(response);
} catch (Exception e) {
System.out.println(e);
}
}
یک ورودی محصول را از حساب خود حذف کنید
برای حذف ورودی محصول از حساب خود، از روش accounts.productInputs.delete
استفاده کنید. برای حذف یک محصول با استفاده از Merchant Products API، باید شناسه منحصر به فرد منبع داده اصلی یا تکمیلی را که محصول به آن تعلق دارد، ارسال کنید.
درخواست زیر نشان می دهد که چگونه می توانید از روش accounts.productInputs.delete
برای حذف ورودی محصول استفاده کنید:
DELETE https://merchantapi.googleapis.com/products/v1beta/accounts/{ACCOUNT_ID}/productInputs/{PRODUCT_NAME}?dataSource=accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}
نام منبع ورودی محصولی را که میخواهید حذف کنید جایگزین {PRODUCT_NAME} کنید. به عنوان مثال، online~en~US~sku123
.
برای حذف یک محصول برای یک حساب Merchant Center معین، میتوانید از روش google.shopping.merchant.accounts.v1beta.DeleteProductInputRequest
استفاده کنید، همانطور که در نمونه زیر نشان داده شده است.
جاوا
public static void deleteProductInput(Config config, String productId, 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 product name to identify product.
String name =
ProductInputName.newBuilder()
.setAccount(config.getAccountId().toString())
.setProductinput(productId)
.build()
.toString();
// Calls the API and catches and prints any network failures/errors.
try (ProductInputsServiceClient productInputsServiceClient =
ProductInputsServiceClient.create(productInputsServiceSettings)) {
DeleteProductInputRequest request =
DeleteProductInputRequest.newBuilder().setName(name).setDataSource(dataSource).build();
System.out.println("Sending deleteProductInput request");
productInputsServiceClient.deleteProductInput(request); // no response returned on success
System.out.println(
"Delete successful, note that it may take a few minutes for the delete to update in"
+ " the system. If you make a products.get or products.list request before a few"
+ " minutes have passed, the old product data may be returned.");
} catch (Exception e) {
System.out.println(e);
}
}
محصولات را از حساب خود فهرست کنید
برای فهرست کردن محصولات پردازش شده در حساب خود، از روش accounts.products.list
استفاده کنید، همانطور که در درخواست زیر نشان داده شده است.
GET https://merchantapi.googleapis.com/products/v1beta/accounts/{ACCOUNT_ID}/products
برای فهرست کردن یک محصول برای یک حساب Merchant Center معین، میتوانید از روش google.shopping.merchant.accounts.v1beta.ListProductsRequest
استفاده کنید، همانطور که در نمونه زیر نشان داده شده است.
جاوا
public static void listProducts(Config config) throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the credentials retrieved above.
ProductsServiceSettings productsServiceSettings =
ProductsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Creates parent to identify the account from which to list all products.
String parent = getParent(config.getAccountId().toString());
// Calls the API and catches and prints any network failures/errors.
try (ProductsServiceClient productsServiceClient =
ProductsServiceClient.create(productsServiceSettings)) {
// The parent has the format: accounts/{account}
ListProductsRequest request = ListProductsRequest.newBuilder().setParent(parent).build();
System.out.println("Sending list products request:");
ListProductsPagedResponse response = productsServiceClient.listProducts(request);
int count = 0;
// Iterates over all rows in all pages and prints the datasource in each row.
// Automatically uses the `nextPageToken` if returned to fetch all pages of data.
for (Product product : response.iterateAll()) {
System.out.println(product); // The product includes the `productStatus` field
// That shows approval and disapproval information.
count++;
}
System.out.print("The following count of products were returned: ");
System.out.println(count);
} catch (Exception e) {
System.out.println("An error has occured: ");
System.out.println(e);
}
}