使用 Web 服务更新 Prestashop 上的订单状态

问题描述 投票:0回答:3

我只想更新订单的 current_state,

<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
    <order>
        <id>1</id>
        <current_state>1</current_state>

    </order>
</prestashop>

但是当我使用 put 时,prestashop 要求我提供帖子的所有必填字段,

我尝试使用与看跌期权完全相同的信息,但当我进行看跌期权时,它会丢失总金额,

prestashop架构有问题吗?

web-services rest prestashop prestashop-1.6 prestashop-1.7
3个回答
1
投票

您必须通过 get 请求下载所有订单信息。然后在发出 put 请求以更新值之前修改 current_state 字段。您不能只发送需要更新的字段。

在此处查看示例:Prestashop Web 服务数据修改

祝你好运


0
投票

您可以在订单对象上调用setWsCurrentState()。该函数定义在 Order.php 类文件中。

此函数获取您要为订单设置的订单状态的ID。


0
投票

补充正确的答案,事实上,为了更新 current_state,您只能发送此值,而不是使用 put,您可以使用补丁。

因此您无需发送订单的全部正文。

url = f"{SHOP_URL}/api/orders/{order_id}?output_format=JSON"
auth_header = {
    'Authorization': 'Basic ' + get_token()
}
xml_body = f"""<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
    <order>
        <id>{order_id}</id>
        <current_state>6</current_state>
    </order>
</prestashop>"""
response = requests.patch(url, headers=auth_header, data=xml_body)
© www.soinside.com 2019 - 2024. All rights reserved.