无法从commercetools api中删除产品

时间:2017-03-14 05:29:08

标签: php curl http-delete commercetools

我正在尝试通过http请求从commercetools api中删除。

以下是我的代码:

$url = 'https://api.sphere.io/test/products/xxxx';
$params = json_encode(array('version'=>1));

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept: application/json'));
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: Bearer xxxx'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$res = curl_exec($curl);
$response =  json_decode($res);

print_r($response);

来自服务器的响应:

stdClass Object ( [statusCode] => 400 [message] => Missing version number [errors] => Array ( [0] => stdClass Object ( [code] => InvalidOperation [message] => Missing version number ) ) )

我在params中发送版本号,但仍然出错。请帮帮我

1 个答案:

答案 0 :(得分:2)

我的第一个建议是使用commercetools PHP SDK。找到https://github.com/commercetools/commercetools-php-sdk或使用Composer https://packagist.org/packages/commercetools/php-sdk

使用SDK删除产品如下所示:

<?php

namespace Commercetools\Core;

use Commercetools\Core\Request\Products\ProductDeleteRequest;

require __DIR__ . '/../vendor/autoload.php';


// create the api client config object
$config = Config::fromArray([
    'client_id' => 'XXX',
    'client_secret' => 'XXX',
    'scope' => 'xxxx'
]);

$request = ProductDeleteRequest::ofIdAndVersion('123456', 1);

$client = Client::ofConfig($config);

$response = $client->execute($request);
$deletedProduct = $request->mapFromResponse($response);

如果你真的想坚持直接与API交谈,你必须发送版本作为查询参数,如文档http://dev.commercetools.com/http-api-projects-products.html#delete-product-by-id中所述。因此,示例中的URL为:

$url = 'https://api.sphere.io/test/products/xxxx?version=1';