ในแนวทางนี้ในการโต้ตอบกับ Merchant API คุณจะใช้ไลบรารีที่สร้างไว้ล่วงหน้า ซึ่งห่อหุ้มรายละเอียดระดับต่ำของการส่งคำขอและการจัดการ การตอบกลับ ซึ่งเป็นวิธีที่สะดวกกว่าและมักจะเป็นวิธีที่เหมาะสมกับภาษาในการ โต้ตอบกับ API โดยจะจัดการการตรวจสอบสิทธิ์ การซีเรียลไลซ์/ดีซีเรียลไลซ์คำขอและการตอบกลับ รวมถึงโค้ดมาตรฐานอื่นๆ
ขั้นตอนที่ 1 ตั้งค่าการตรวจสอบสิทธิ์และกำหนดค่าตัวอย่างโค้ด
โปรดดูวิธีการที่หัวข้อการตั้งค่าการตรวจสอบสิทธิ์และการกำหนดค่าตัวอย่าง ตัวอย่างสำหรับ Merchant API
ขั้นตอนที่ 2 ดาวน์โหลดและติดตั้งไลบรารีของไคลเอ็นต์และตัวอย่างโค้ด
ดูวิธีการดาวน์โหลดและติดตั้งไลบรารีของไคลเอ็นต์ รวมถึงการใช้ตัวอย่างโค้ดจาก GitHub ได้ที่ตัวอย่าง Python ของ Google Merchant API
ขั้นตอนที่ 3 ลงทะเบียนในฐานะนักพัฒนาซอฟต์แวร์
หากต้องการใช้ Merchant API คุณต้องลงทะเบียนข้อมูลติดต่อของนักพัฒนาแอป
การลงทะเบียนจะช่วยให้คุณทำสิ่งต่อไปนี้ได้
- สร้างผู้ติดต่อด้านเทคนิคสำหรับบัญชี Merchant Center โดยการกำหนด
API developer
บทบาทให้กับผู้ใช้ ซึ่งจะช่วยให้ Google ส่งข้อมูลอัปเดตที่สำคัญ เกี่ยวกับ API และฟีเจอร์ที่นักพัฒนาแอปใช้โดยเฉพาะ เช่น ประกาศการให้บริการและข้อมูลเกี่ยวกับฟีเจอร์ใหม่ๆ ซึ่งอาจ ไม่น่าสนใจสำหรับผู้ที่ไม่ใช่นักพัฒนาแอป - ช่วยให้คุณทำงานกับบัญชีผู้ขายหลายบัญชีได้โดยไม่ต้องลงทะเบียนหลายครั้ง
เมื่อลงทะเบียน รหัสโปรเจ็กต์ Google Cloud ที่ใช้เพื่อ
ตรวจสอบสิทธิ์ใน Merchant API จะเชื่อมโยงกับบัญชี Merchant Center
ซึ่งมีรายชื่อผู้ติดต่อด้านเทคนิค (
API developer
) วิธีนี้จะช่วยให้คุณได้รับข้อมูลอัปเดตที่สำคัญสำหรับบัญชีผู้ขายทั้งหมดที่คุณจัดการ ตราบใดที่การตรวจสอบสิทธิ์ดำเนินการกับโปรเจ็กต์ Google Cloud ที่ลงทะเบียนไว้
เมื่อลงทะเบียน โปรดดูข้อกำหนดเบื้องต้นและข้อจำกัดที่ระบุไว้โดยละเอียดในส่วนการลงทะเบียน
ดูตัวอย่างวิธีลงทะเบียนโปรเจ็กต์โดยใช้ไลบรารีของไคลเอ็นต์ได้ที่ ลงทะเบียนโปรเจ็กต์ Google Cloud โดยระบุอีเมลของนักพัฒนาแอปโดยใช้ตัวอย่าง Python
Python
# -*- coding: utf-8 -*-
# Copyright 2025 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""This example registers a GCP project with a developer email."""
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import DeveloperRegistrationServiceClient
from google.shopping.merchant_accounts_v1 import RegisterGcpRequest
def register_gcp(account_id: str, developer_email: str) -> None:
"""Registers the GCP project used to call the Merchant API with a developer email.
Args:
account_id: The ID of your Merchant Center account.
developer_email: The email address of the developer to register.
"""
# Get OAuth credentials.
credentials = generate_user_credentials.main()
# Create a client to the Developer Registration Service.
client = DeveloperRegistrationServiceClient(credentials=credentials)
# The name has the format: accounts/{account}/developerRegistration
name = f"accounts/{account_id}/developerRegistration"
# Create the request to register the GCP project.
request = RegisterGcpRequest(
name=name,
developer_email=developer_email,
)
# Make the API call and handle potential errors.
try:
print("Sending RegisterGcp request:")
response = client.register_gcp(request=request)
print("Registered GCP project successfully:")
print(response)
except RuntimeError as e:
print(f"An error occurred: {e}")
if __name__ == "__main__":
# Your Merchant Center account ID.
# This can be found in the Merchant Center UI.
_account_id = configuration.Configuration().read_merchant_info()
# The developer email to associate with the GCP project.
_developer_email = "YOUR_EMAIL_HERE"
register_gcp(_account_id, _developer_email)
ขั้นตอนที่ 4 จัดการรายชื่อติดต่อและสิทธิ์ของนักพัฒนาแอป
เมื่อคุณลงทะเบียน
- หากอีเมลเป็นของผู้ใช้ในบัญชี Merchant Center ผู้ใช้ดังกล่าวจะได้รับบทบาท
API_DEVELOPER
- หากอีเมลไม่ได้เป็นของผู้ใช้ที่มีอยู่ ระบบจะส่งคำเชิญไปยังอีเมลดังกล่าว
ผู้รับต้องยอมรับคำเชิญจึงจะได้รับการเพิ่มเป็นผู้ใช้ใหม่ที่มีบทบาทเป็น
API_DEVELOPER
หลังจากจดทะเบียนครั้งแรก เราขอแนะนำให้คุณเพิ่มนักพัฒนาแอปหลายคน และให้สิทธิ์เข้าถึงเพิ่มเติมแก่บุคคลเหล่านั้น
ขั้นตอนที่ 4ก ให้สิทธิ์เพิ่มเติม
คุณต้องมีบทบาทAPI_DEVELOPER
เพื่อรับการแจ้งเตือนที่สำคัญ แต่บทบาทนี้มีสิทธิ์น้อยที่สุดใน Merchant Center หากต้องการอนุญาตให้ผู้ใช้รายนี้ทำการเรียก API อื่นๆ หรือจัดการการตั้งค่าใน UI ของ Merchant Center คุณต้องให้บทบาทเพิ่มเติมแก่ผู้ใช้ เช่น STANDARD
หรือ ADMIN
ดูข้อมูลเพิ่มเติมได้ที่
ประเภท
การเข้าถึง
คุณอัปเดตสิทธิ์เข้าถึงของผู้ใช้ได้ด้วยเมธอด
accounts.users.patch
โค้ด
ตัวอย่างแสดงวิธีอัปเดตผู้ใช้เพื่อให้สิทธิ์บทบาท ADMIN
และ API_DEVELOPER
แก่ผู้ใช้
ซึ่งจะช่วยให้ผู้ใช้จัดการบัญชีได้อย่างเต็มที่ และยังหมายความว่าผู้ใช้จะได้รับการสื่อสารที่เกี่ยวข้องกับ API ด้วย
Python
# -*- coding: utf-8 -*-
# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""A module to update a user."""
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.protobuf import field_mask_pb2
from google.shopping.merchant_accounts_v1 import AccessRight
from google.shopping.merchant_accounts_v1 import UpdateUserRequest
from google.shopping.merchant_accounts_v1 import User
from google.shopping.merchant_accounts_v1 import UserServiceClient
FieldMask = field_mask_pb2.FieldMask
_ACCOUNT = configuration.Configuration().read_merchant_info()
def update_user(user_email, user_access_right):
"""Updates a user to make it an admin of the MC account."""
credentials = generate_user_credentials.main()
client = UserServiceClient(credentials=credentials)
# Create user name string
name = "accounts/" + _ACCOUNT + "/users/" + user_email
user = User(name=name, access_rights=[user_access_right])
field_mask = FieldMask(paths=["access_rights"])
try:
request = UpdateUserRequest(user=user, update_mask=field_mask)
print("Sending Update User request")
response = client.update_user(request=request)
print("Updated User Name below")
print(response.name)
except RuntimeError as e:
print(e)
if __name__ == "__main__":
# Modify this email to update the right user
email = "USER_MAIL_ACCOUNT"
access_right = AccessRight.ADMIN
update_user(email, access_right)
ขั้นตอนที่ 4b เพิ่มนักพัฒนาแอปสำรอง
คุณควรเพิ่มนักพัฒนาแอปสำรองอย่างน้อย 1 คนเพื่อป้องกันไม่ให้การเข้าถึง API หยุดชะงักหากผู้ติดต่อหลักของนักพัฒนาแอป ลาออกจากองค์กร
คุณเพิ่มผู้ใช้ด้วยเมธอด
accounts.users.create
หรืออัปเดตผู้ใช้ที่มีอยู่ด้วยเมธอด
accounts.users.patch
ก็ได้ เราขอแนะนำให้มอบบทบาท ADMIN
และ API_DEVELOPER
ให้กับผู้ใช้รายนี้
ขั้นตอนที่ 5 สร้างแหล่งข้อมูลผลิตภัณฑ์หลัก
คุณต้องมีแหล่งข้อมูลผลิตภัณฑ์หลักก่อนจึงจะแทรกผลิตภัณฑ์ได้ ดูโค้ดตัวอย่างที่สร้างแหล่งข้อมูลได้ที่สร้างแหล่งข้อมูลผลิตภัณฑ์หลักที่รองรับตัวอย่างหลายภาษาด้วย Python
Python
# -*- coding: utf-8 -*-
# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""This class demonstrates how to create a Primary product datasource all `feedLabel` and `contentLanguage` combinations.
This works only for API primary feeds.
"""
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_datasources_v1 import CreateDataSourceRequest
from google.shopping.merchant_datasources_v1 import DataSource
from google.shopping.merchant_datasources_v1 import DataSourcesServiceClient
from google.shopping.merchant_datasources_v1 import PrimaryProductDataSource
_ACCOUNT = configuration.Configuration().read_merchant_info()
_PARENT = f"accounts/{_ACCOUNT}"
def create_primary_product_data_source_multiple_languages():
"""Creates a `DataSource` resource."""
# Gets OAuth Credentials.
credentials = generate_user_credentials.main()
# Creates a client.
client = DataSourcesServiceClient(credentials=credentials)
# Creates a PrimaryProductDataSource.
primary_datasource = PrimaryProductDataSource()
primary_datasource.countries = ["GB"]
# Creates a DataSource and populates its attributes.
data_source = DataSource()
data_source.display_name = "Example Multiple Languages Primary DataSource"
data_source.primary_product_data_source = primary_datasource
# Creates the request.
request = CreateDataSourceRequest(parent=_PARENT, data_source=data_source)
# Makes the request and catches and prints any error messages.
try:
response = client.create_data_source(request=request)
print(f"DataSource successfully created: {response}")
except RuntimeError as e:
print("DataSource creation failed")
print(e)
if __name__ == "__main__":
create_primary_product_data_source_multiple_languages()
คุณดูแหล่งข้อมูลนี้ได้ใน UI ของ Merchant Center ดูข้อมูลเพิ่มเติมได้ที่วิธีค้นหาแท็บแหล่งข้อมูล
ขั้นตอนที่ 6 แทรกผลิตภัณฑ์
เมื่อสร้างแหล่งข้อมูลแล้ว ให้ลองแทรกผลิตภัณฑ์ลงในแหล่งข้อมูล ดูตัวอย่างโค้ดที่แสดงวิธีดำเนินการนี้ด้วยไลบรารีของไคลเอ็นต์ได้ที่ตัวอย่างการป้อนข้อมูลผลิตภัณฑ์ ด้วย Python
Python
# -*- coding: utf-8 -*-
# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""A module to insert a Product Input."""
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping import merchant_products_v1
from google.shopping.merchant_products_v1 import Availability
from google.shopping.merchant_products_v1 import Condition
from google.shopping.type import Price
_ACCOUNT = configuration.Configuration().read_merchant_info()
_PARENT = f"accounts/{_ACCOUNT}"
# You can only insert products into datasource types of Input "API" and
# "FILE", and of Type "Primary" or "Supplemental."
_DATA_SOURCE = "[INSERT_DATA_SOURCE_HERE]"
_DATA_SOURCE_NAME = f"accounts/{_ACCOUNT}/dataSources/{_DATA_SOURCE}"
def create_product_input():
"""Creates a `ProductInput` resource."""
# Creates a shipping setting
price = Price()
price.amount_micros = 33_450_000
price.currency_code = "GBP"
shipping_option_1 = merchant_products_v1.Shipping()
shipping_option_1.price = price
shipping_option_1.country = "GB"
shipping_option_1.service = "1st class post"
price2 = Price()
price2.amount_micros = 33_450_000
price2.currency_code = "EUR"
shipping_option_2 = merchant_products_v1.Shipping()
shipping_option_2.price = price2
shipping_option_2.country = "FR"
shipping_option_2.service = "2nd class post"
# Sets product attributes. Make sure to replace these values with your own.
attributes = merchant_products_v1.ProductAttributes()
attributes.title = "A Tale of Two Cities"
attributes.description = "A classic novel about the French Revolution"
attributes.link = "https://exampleWebsite.com/tale-of-two-cities.html"
attributes.image_link = "https://exampleWebsite.com/tale-of-two-cities.jpg"
attributes.price = price
attributes.availability = Availability.IN_STOCK
attributes.condition = Condition.NEW
attributes.google_product_category = "Media > Books"
attributes.gtins = ["9780007350896"]
attributes.shipping = [shipping_option_1, shipping_option_2]
return merchant_products_v1.ProductInput(
content_language="en",
feed_label="GB",
offer_id="sku123",
product_attributes=attributes,
)
def insert_product_input():
"""Inserts the specified `ProductInput` resource."""
# Gets OAuth Credentials.
credentials = generate_user_credentials.main()
# Creates a client.
client = merchant_products_v1.ProductInputsServiceClient(
credentials=credentials
)
# Creates the request.
request = merchant_products_v1.InsertProductInputRequest(
parent=_PARENT,
# If this product is already owned by another datasource, when
# re-inserting, the new datasource will take ownership of the product.
product_input=create_product_input(),
data_source=_DATA_SOURCE_NAME,
)
# Makes the request and catches and prints any error messages.
try:
response = client.insert_product_input(request=request)
# The last part of the product name will be the product ID assigned to a
# product by Google. Product ID has the format
# `contentLanguage~feedLabel~offerId`
print(f"Input successful: {response}")
except RuntimeError as e:
print("Input failed")
print(e)
# After the product is inserted, the product ID will be returned in the
# response. We recommend that you check the Merchant Center to ensure that
# the product is approved and visible to users before using the product ID
# in any downstream processes.
if __name__ == "__main__":
insert_product_input()
ขั้นตอนที่ 7 แสดงผลิตภัณฑ์
ดูโค้ดตัวอย่างที่แสดงผลิตภัณฑ์ในแหล่งข้อมูลได้ที่ตัวอย่างการแสดงผลิตภัณฑ์ ด้วย Python
Python
# -*- coding: utf-8 -*-
# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""A module to list Products."""
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping import merchant_products_v1
_ACCOUNT = configuration.Configuration().read_merchant_info()
_PARENT = f"accounts/{_ACCOUNT}"
def list_products():
"""Lists the `Product` resources for a given account."""
# Gets OAuth Credentials.
credentials = generate_user_credentials.main()
# Creates a client.
client = merchant_products_v1.ProductsServiceClient(
credentials=credentials
)
# Creates the request. Set the page size to the maximum value.
request = merchant_products_v1.ListProductsRequest(
parent=_PARENT, page_size=1000
)
# Makes the request and catches and prints any error messages.
try:
response = client.list_products(request=request)
for product in response:
print(product)
print("List request successful!")
except RuntimeError as e:
print("List request failed")
print(e)
if __name__ == "__main__":
list_products()