Я использую PHP для доступа к API-интерфейсу shopify, я могу получить данные о продукте, однако найти его, когда пытаюсь обновить запись о продукте и количество его вариантов, не работает. Как ни странно, я получаю ответ json с подробной информацией о продукте, который я пытаюсь обновить, и он всегда указывает, что значение inventory_quantity и значение old_inventory_quantity совпадают, поэтому, если я отправляю новое количество или 1, а старое количество было равно 0, ответ указывает, что они оба 0 говорят мне, что ничего не обновляется. Мой закодированный json выглядит так при сбросе:
"{
"product":
{
"id":127417494,"variants":
{
"id":288267528,
"inventory_quantity":2
}
}
}"
и ответ я получаю:
" ["created_at"]=> string(25) "2013-03-18T16:47:45-07:00" ["handle"]=> string(23) "peacock-herl-small-pack" ["id"]=> int(127417488) ["product_type"]=> string(15) "Tying Materials" ["published_at"]=> string(25) "2013-03-18T16:47:00-07:00" ["published_scope"]=> string(6) "global" ["template_suffix"]=> string(0) "" ["title"]=> string(25) "Peacock Herl - Small Pack" ["updated_at"]=> string(25) "2014-12-09T18:15:07-08:00" ["vendor"]=> string(19) "Pacific Fly Fishers" ["tags"]=> string(8) "Feathers" ["variants"]=> array(1) { [0]=> array(22) { ["barcode"]=> NULL ["compare_at_price"]=> NULL ["created_at"]=> string(25) "2013-03-18T16:47:45-07:00" ["fulfillment_service"]=> string(6) "manual" ["grams"]=> int(45) ["id"]=> int(288267518) ["inventory_management"]=> string(7) "shopify" ["inventory_policy"]=> string(4) "deny" ["option1"]=> string(5) "Small" ["option2"]=> NULL ["option3"]=> NULL ["position"]=> int(1) ["price"]=> string(4) "3.50" ["product_id"]=> int(127417488) ["requires_shipping"]=> bool(true) ["sku"]=> string(12) "762820007750" ["taxable"]=> bool(true) ["title"]=> string(5) "Small" ["updated_at"]=> string(25) "2014-12-08T15:23:28-08:00" ["inventory_quantity"]=> int(5) ["old_inventory_quantity"]=> int(5) ["image_id"]=> NULL } } ["options"]=> array(1) { [0]=> array(4) { ["id"]=> int(152687222) ["name"]=> string(5) "Title" ["position"]=> int(1) ["product_id"]=> int(127417488) } } ["images"]=> array(1) { [0]=> array(7) { ["created_at"]=> string(25) "2014-12-08T15:23:23-08:00" ["id"]=> int(1077719361) ["position"]=> int(1) ["product_id"]=> int(127417488) ["updated_at"]=> string(25) "2014-12-08T15:23:25-08:00" ["src"]=> string(93) "https://cdn.shopify.com/s/files/1/0211/7110/products/peacock-herl-small-pack.jpg?v=1418081005"; ["variant_ids"]=> array(0) { } } } ["image"]=> array(7) { ["created_at"]=> string(25) "2014-12-08T15:23:23-08:00" ["id"]=> int(1077719361) ["position"]=> int(1) ["product_id"]=> int(127417488) ["updated_at"]=> string(25) "2014-12-08T15:23:25-08:00" ["src"]=> string(93) "https://cdn.shopify.com/s/files/1/0211/7110/products/peacock-herl-small-pack.jpg?v=1418081005"; ["variant_ids"]=> array(0) { } } } } array(1) { ["product"]=> array(16) { ["body_html"]=> string(169) "
Beautiful peacock sword that is often used for tails on patterns like Zug Bugs and Spruce Fly streamers. Also used in many atlantic salmon and steelhead patterns.
Я проверял идентификатор снова и снова, и он, кажется, достиг правильной конечной точки, но по какой-то причине он не будет принимать новое значение количества, я не знаю, пропускаю ли я обязательный параметр или что, но я в значительной степени на тупик с этим.
Если кому-то интересно, мой запрос cUrl выглядит следующим образом
if ($data != null) {
curl_setopt_array($ch, array(
CURLOPT_CUSTOMREQUEST => 'PUT', //sets method if specified
CURLOPT_RETURNTRANSFER => true, //Causes curl_exec() to return the response
CURLOPT_HEADER => false, //Suppress headers from returning in curl_exec()
CURLOPT_HEADERFUNCTION => array($this, 'header_callback'), //call header_callback upon receiving headers
CURLOPT_HTTPHEADER => array('Content-Type: application/json','Content-Length: ' . strlen($data)),
CURLOPT_POSTFIELDS => $data,
));
$this->response = curl_exec($ch);
// close curl
curl_close($ch);
// return json data
return json_decode($this->response, true);
}
Если вы пытаетесь обновить инвентарь в одиночку, то массив полезной нагрузки должен выглядеть следующим образом
$inventory = array (
"variant"=>array (
"id"=>{{'your_variant_id'}},
"inventory_quantity"=>{{'your_inventory_quantity'}}
)
);
Ваш URL должен выглядеть так
$url = "variants/".{{'your_variant_id'}}.".json";
Назовите вышеуказанный URL с PUT
метод наряду с $inventory
массив в качестве параметра.
У меня есть рабочая демонстрация, которая использует описанный выше метод для управления запасами.
Вы можете увидеть это демо на http://sarkutils.in/swpanel с demo:password
Других решений пока нет …