我只想更新订单的 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架构有问题吗?
您必须通过 get 请求下载所有订单信息。然后在发出 put 请求以更新值之前修改 current_state 字段。您不能只发送需要更新的字段。
在此处查看示例:Prestashop Web 服务数据修改
祝你好运
您可以在订单对象上调用setWsCurrentState()。该函数定义在 Order.php 类文件中。
此函数获取您要为订单设置的订单状态的ID。
补充正确的答案,事实上,为了更新 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)