【问题标题】:cURL inventory update to Shopify API not workingShopify API 的 cURL 库存更新不起作用
【发布时间】:2015-09-13 22:22:09
【问题描述】:

请查看我的 cURL 测试代码,如果您发现执行它没有更新我的产品变体库存的任何原因,请告诉我。只有一种产品具有其变体数据,没有单独的产品变体。所以它应该很简单,对吧?

cURL 已安装并且在我的盒子上运行良好,并且 API 密钥/令牌也已验证。

这是我的代码


//Set up access

$apiKey = "[my api key]";
$pwd = "[my pwd]";

$baseUrl = $apiKey . $pwd ."@sensible-herbs.myshopify.com/admin/";

//Set up test data  

  $variantId = '3744859331';
  $inventoryQty = '50';

//Set up JSON payload

$payload = array (            
   "variant" => array("id" => $variantId,
   " nventory_quantity" => $inventoryQty
   )               
);  

$payload = json_encode($payload, JSON_NUMERIC_CHECK);
echo 'JSON payload: ' .$payload  ."<p>";

$putUrl = $baseUrl ."variants/" ."$variantId".".json";
echo 'url: ' .$putUrl ."<hr>";

$session = curl_init(); 

curl_setopt($session, CURLOPT_URL, $putUrl);
curl_setopt($session, CURLOPT_CONNECTTIMEOUT, 30); //seconds to allow for connection
curl_setopt($session, CURLOPT_TIMEOUT, 30); //seconds to allow for cURL commands
curl_setopt($session, CURLOPT_HEADER, true); //include header info in return value ? 
curl_setopt($session, CURLOPT_RETURNTRANSFER, true); //return response as a string
curl_setopt($session, CURLOPT_PUT, 1); 
curl_setopt($session, CURLOPT_POSTFIELDS, $payload); 
curl_setopt($session, CURLOPT_HTTPHEADER, array('Accept: application/json', 'Content-Type: application/json'));

$data = curl_exec($session);

print_r(curl_getinfo($session));

curl_close($session);

echo $data; // session data  

我得到的回应是:

数组 ( [url] => https://[apikey+password]@sensible-herbs.myshopify.com/admin/variants/3744859331.json [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [ redirect_count] => 0 [total_time] => 0.156 [namelookup_time] => 0.078 [connect_time] => 0.156 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 [certinfo] => Array () [primary_ip] => 23.227.38.71 [primary_port] => 443 [local_ip] => 192.168.0.10 [local_port] => 50573 [redirect_url] => )

所以看起来它正在连接,但是负载没有被 PUT...或者我只是不明白 API / URL 要求是什么...我需要设置 APIKey 生成以外的设置...我希望我知道!

在此先感谢您的赞!

凯拉斯

【问题讨论】:

  • echo curl_error($session); 返回什么?
  • 感谢您的调试建议。我不确定检索有用信息的最佳方式。它说:SSL证书问题,验证CA证书是否正常。详细信息:错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败
  • 我添加了: curl_setopt($session, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($session, CURLOPT_SSL_VERIFYHOST, false);并消除了 SSL 错误
  • 我可以执行 GET 并获取我的 Product Variant 数据。但是 PUT 不会改变我的 Product Variant 库存数量。
  • 我也得到:{"errors":{"variant":"必需参数丢失或无效"}}

标签: php json api curl shopify


【解决方案1】:

您的有效负载数组中似乎有拼写错误,inventory_quantity 不是nventory_quantity

$payload = array (            
   "variant" => array(
       "id" => $variantId,
       "inventory_quantity" => $inventoryQty
   )               
); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多