如何使用Python调用Shopware 6 API创建店铺商品?
Shopware 6 Python 调用Admin API新增商品实现方案
前置准备
- 登录Shopware 6后台,在「设置 > 系统 > 集成」页面新建集成应用,保存生成的
client_id(即Access Key ID)和client_secret(即Secret Access Key) - 确认你的店铺线上域名,Admin API的根路径固定为域名下的
/api
身份认证实现
Shopware 6 Admin API采用OAuth2客户端凭证模式做鉴权,第一步先调用认证接口换取访问令牌,后续所有业务接口都需要携带这个令牌访问。
认证接口路径为/api/oauth/token,要求用表单格式传参,不要传JSON格式,否则会报认证失败。参考实现代码:
import requests # 替换为你自己的店铺配置 SHOP_ROOT_URL = "https://你的店铺线上域名" CLIENT_ID = "集成应用的Access Key ID" CLIENT_SECRET = "集成应用的Secret Access Key" # 换取访问令牌 auth_api = f"{SHOP_ROOT_URL}/api/oauth/token" auth_params = { "grant_type": "client_credentials", "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET } auth_response = requests.post(auth_api, data=auth_params) auth_response.raise_for_status() # 请求失败直接抛出HTTP错误,方便排查 access_token = auth_response.json()["access_token"] # 全局通用请求头,后续所有业务接口复用即可 request_headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json", "Accept": "application/json" }
提交商品Payload发起POST请求
新增商品的接口路径为/api/product,请求方法为POST,将你整理好的商品结构作为JSON传入请求体,携带上面生成的通用请求头即可。
以下是包含最小必填字段的请求示例:
# 调用商品创建接口 create_product_api = f"{SHOP_ROOT_URL}/api/product" # 最小可用商品Payload,可根据业务需求扩展其他字段 product_data = { "name": "商品展示名称", "productNumber": "SKU_TEST_001", # 商品SKU/货号,全店唯一不可重复 "stock": 200, "taxId": "对应税率规则的ID", "price": [ { "currencyId": "对应结算货币的ID", "gross": 129.9, # 含税价 "net": 114.96, # 不含税价 "linked": False } ] } create_resp = requests.post( create_product_api, headers=request_headers, json=product_data ) create_resp.raise_for_status() print("商品创建成功,返回结果:", create_resp.json())
常见踩坑说明
- 商品接口对必填字段校验严格,高频漏填项为
taxId、currencyId、productNumber,缺项会返回400状态码,直接读取响应体的errors数组就能看到具体报错原因;如果不知道税率、货币对应的ID,可以先调用/api/tax、/api/currency接口拉取全量列表匹配。 - 访问令牌默认有效期为10分钟,做批量商品导入的长耗时任务时记得缓存令牌,临近过期再重新调用认证接口刷新即可,不需要每次请求都重新鉴权。
- 本地调试环境如果使用自签HTTPS证书,可以在requests请求中加
verify=False参数跳过证书校验,线上生产环境禁止加这个参数,避免安全风险。 - 商品关联的分类、主图/详情图、自定义字段、规格属性等扩展数据,直接按照官方定义的字段结构拼接到payload中即可,不需要调整请求格式或请求头。
内容的提问来源于stack exchange,提问作者dsadeq32423
相关产品推荐
相关产品推荐

