如何通过woocommerce REST API添加产品图像?

时间:2015-04-15 09:45:21

标签: php api curl woocommerce

我正在使用Woocommerce REST API,需要将商品添加到商店。

以前工作过。现在我有这个错误:

stdClass Object ( [errors] => Array ( 
  [0] => stdClass Object ( [code] => 
  woocommerce_api_invalid_remote_product_image 
  [message] => Error getting remote image 
  https://www.google.lt/images/srpr/logo11w.png ) ) )

以下是通过WooCommerce REST API添加产品的文档  http://woothemes.github.io/woocommerce-rest-api-docs/#create-a-product

这是我的代码:

$dataArray = array(
            'title' => 'xxxxxxxxxx',
            'description' => 'description1',
            'price' => '69',
            'sku' => 'sku2',
            'tags' => 'tag1, tag2, tag3',
            'color' => array('red', 'blue'),
            'size' => array('S', 'M'),
            'image' => 'https://www.google.lt/images/srpr/logo11w.png'
            );

public function addProduct($data)
{
    $wc_api = $this->_getClient();


    $newProductData = array(
        'product' => array(
            'title' => $data['title'],
            'type' => 'variable',
            'regular_price' => $data['price'],
            'description' => $data['description'],
            'sku' => $data['sku'],
            'tags' => [ $data['tags'] ],
            'images' => [ array('src' => $data['image'], 'position' => '0') ],
            'virtual' => true
        )
    );

    return $wc_api->create_product($newProductData);
}

我正在使用此客户端来调用REST API

https://github.com/kloon/WooCommerce-REST-API-Client-Library

EDITED: 如果我从wordpress获得图像,其中woocommerce托管,那么一切都很好。但是,如果我使用其他网站的链接,那么我会收到错误。

2 个答案:

答案 0 :(得分:2)

我有一个类似的问题,而且cURL在WordPress中产生的错误导致woocommerce_api_invalid_remote_product_image{"errors":{"http_request_failed":["SSLRead() return error -9806"]},"error_data":[]},这意味着,根据Asaph https://stackoverflow.com/a/26538127/266531的说法,

  

php是使用Apple的安全版cURL编译的   在Yosemite下运输和URL请求的目标不是   支持SSLv3(可能由于POODLE而被禁用)   漏洞)。

我的猜测是,您在使用SSL而不是cURL时遇到错误。

您是否尝试使用http链接,而不是感谢https

如果您可以调试服务器端,请查看第1700行左右class-wc-api-products.php内发生的情况。这是产生错误的原因。您可能遇到了SSL错误。

如果是相同类型的SSL问题,则可能的解决方案是

  1. 使用非安全图片链接(http代替https)或
  2. 按照Asaph的步骤,在https://stackoverflow.com/a/26538127/266531
  3. 的答案中使用OpenSSL而不是SecureSSL安装PHP

答案 1 :(得分:2)

在Woocommerce REST API liblary中您还可以设置选项以不验证SSL。

$options = array(
    'debug'           => true,
    'return_as_array' => false,
    'validate_url'    => false,
    'timeout'         => 60,
    'ssl_verify'      => false,
);