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

Shopware 6 Product API无法设置产品采购价及售价问题排查求助

问题分析与解决方案

嘿,我一眼就揪出你代码里的问题啦!这是个很容易踩的编码误区:

核心错误:重复编码价格数据

你单独对$price数组执行了json_encode(),然后把这个JSON字符串塞进了$product数组里。当你最后对整个$product数组做编码时,price字段就变成了带引号的字符串格式,但Shopware 6的API期望的是原生数组类型的价格数据——API根本识别不了字符串格式的价格,自然就不会给产品设置售价了。

修正后的代码

把单独编码$price的步骤删掉,直接把价格数组作为product的price值,最后只对整个产品数组做一次编码就好:

// 直接定义价格数组,不需要单独编码
$price = [ 
    "currencyId" => "b7d2554b0ce847cd82f3ac9bd1c0dfca", 
    "net" => $net, 
    "gross" => $gross, 
    "linked" => false 
];

// 产品数组直接使用price数组,而非编码后的字符串
$product = [ 
    "id" => str_replace("-","", $productId), 
    "productId" => str_replace("-","", $productId), 
    "name" => $name, 
    "taxId" => $taxId, 
    "productNumber" => $productNumber, 
    "minPurchase" => $minPurchase, 
    "price" => $price, // 这里直接用数组
    "purchasePrice" => $purchasePrice, 
    "stock" => $stock, 
    "images" => $images, 
    "attributes" => $attributes, // 注意拼写修正:是attributes不是atributes
    "categoryId" => "7997459a37f94a75a14d7cbd872a926f" 
];

// 最后只对整个产品数组做一次JSON编码
$productJson = json_encode($product);

额外提醒

  1. 如果你的产品需要支持多币种价格,price字段应该是数组的数组,比如:
"price" => [
    [
        "currencyId" => "b7d2554b0ce847cd82f3ac9bd1c0dfca",
        "net" => 10.00,
        "gross" => 12.00,
        "linked" => false
    ],
    [
        "currencyId" => "其他币种ID",
        "net" => 15.00,
        "gross" => 18.00,
        "linked" => false
    ]
]
  1. 你代码里的atributes是拼写错误,正确的字段名是attributes——这个小错误可能会导致属性数据无法被正确识别,记得修正哦。

内容的提问来源于stack exchange,提问作者Grimclaw Draven

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 20:07:37