You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 07:12:27