Magento 2 Rest API订单编辑

时间:2017-06-08 07:51:14

标签: rest magento2 guzzle

我试图在我提出要求后想出如何编辑订单。 无论是否导出订单,我都创建了自定义属性。

我首先获得状态未导出的所有订单,在我导出后,我想将自定义属性更改为导出。

编辑/更新订单的REST请求是什么?我不断收到如下错误消息:

{"message":"%fieldName is a required field.","parameters":
{"fieldName":"entity"}

这是我的代码:

    $json = array(
        "entity_id" => $id, 
        "extension_attributes" => array(
            "custom_export_attribute" => "exported",
            )
        );
    $webapi = new ApiClient('https://dev.local.nl', self::$username, self::$password); 
    $response = $webapi->getClient()->request('PUT', '/rest/V1/orders/create', [

        'headers'   => [                
            'Authorization'             => "Bearer " . $webapi->getToken(),
            'Content-Type'              => "application/json"
        ],
        'body'     => json_encode($json)

    ]);    
    return json_decode($response->getBody(), true);

我也尝试过:

 $webapi->getClient()->request('PUT', '/rest/V1/orders/'.$id,

1 个答案:

答案 0 :(得分:1)

要编辑/更新订单详细信息,Magento 2 /V1/orders接受POST请求方法。根据{{​​3}},它接受​​以下格式的请求正文(您可以在文档页面中找到整个JSON请求):

{
    "entity": {
        "entity_id": 0,
        "extension_attributes": {

        }
    }
}

因此,您只需将$json变量更新为:

$json = [
    "entity"=> [
        "entity_id" => $id,
        "extension_attributes" => [
            "custom_export_attribute" => "exported"
        ]
    ]
]

而不是使用POST请求方法而不是PUT来调用。在我的建议中,我更倾向于使用Magento 2 Dev Doc来创建新订单。