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

PrestaShop 1.7.8.7 REST API更新订单资源报错:修改资源需提供Id

解决PrestaShop 1.7.8.7 WebService更新订单shipping_number失败的问题

问题定位

你遇到的Undefined offset: 1和code 90: id is required when modifying a resource错误,核心原因是XML结构不符合PrestaShop WebService要求,同时可能遗漏了权限配置。

正确操作步骤

1. 确认WebService权限

先在PrestaShop后台的WebService配置中,找到orders资源,确保勾选PUT权限——没有这个权限所有更新请求都会被拦截。

2. 生成合规的请求XML

从GET请求/api/orders/1?display=full获取完整XML后,仅修改<shipping_number>的值,必须保留<id>字段,且XML结构必须遵循以下格式:

<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
    <order>
        <id><![CDATA[1]]></id> <!-- 必须保留,值需与URL中的订单ID一致 -->
        <!-- 保留其他原始字段,仅修改目标字段 -->
        <shipping_number><![CDATA[你的新运单号]]></shipping_number>
        <!-- 其他订单字段... -->
    </order>
</prestashop>

注意:不能用<orders>包裹<order>,也不能直接将<order>作为根节点,必须保留<prestashop>根节点。

3. Postman请求配置

  • 请求方法:PUT
  • 请求URL:/api/orders/1(必须明确指定订单ID)
  • 请求头:设置Content-Type: application/xml
  • 请求体:粘贴上述修改后的完整XML

常见误区避坑

  • 不要用POST/PATCH更新资源,PrestaShop WebService规定更新单个资源必须用PUT
  • 不能仅提交部分字段,必须包含<id>及其他必填字段(直接复用GET返回的XML、只修改目标字段是最稳妥的方式)
  • 不要修改<id>的值,该字段用于识别待更新订单,必须与URL中的ID完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:25:21