2016-10-10 13 views
0

「必要なパラメータが見つからないか無効」の公式ShopifyのAPIの例以下は、私は、インベントリを更新するには、次のリクエスト作成しました:私はこの答えを見つけたフォーラムでShopify API更新インベントリ結果

[method] => PUT 

[url] => https://<withheld>:<withheld>@test-shop-422.myshopify.com/admin/variants/1234567890.json 

[headers] => Array (
    [0] => Accept: application/json 
    [1] => Content-Type: application/json 
    [2] => X-HTTP-Method-Override: PUT 
) 

[params] => {"variant":{"id":1234567890,"inventory_quantity":2,"old_inventory_quantity":1}} 

[response] => {"errors":{"variant":"Required parameter missing or invalid"}} 

をしかし、助けにならなかった:https://ecommerce.shopify.com/c/shopify-apis-and-technology/t/what-does-errors-variant-required-parameter-missing-or-invalid-mean-270461

私は間違って何をしていますか?

ありがとうございました。

編集:ここでは、最終的な要求CURLは付き合えだと生応答(< ...> - 差し控え):

Array 
(
    [CURLOPT_AUTOREFERER] => 1 
    [CURLOPT_CAINFO] => <...>/cacert.pem 
    [CURLOPT_CONNECTTIMEOUT] => 5 
    [CURLOPT_FOLLOWLOCATION] => 1 
    [CURLOPT_HEADER] => 1 
    [CURLOPT_HTTPHEADER] => Array 
     (
      [0] => Accept: application/json 
      [1] => Content-Type: application/json 
      [2] => X-HTTP-Method-Override: PUT 
      [3] => Expect: 
      [4] => Referer: <...>/process_queue 
      [5] => Content-Length: 47 
     ) 

    [CURLOPT_MAXREDIRS] => 10 
    [CURLOPT_POSTFIELDS] => {"variant":{"inventory_quantity_adjustment":1}} 
    [CURLOPT_PUT] => 1 
    [CURLOPT_RETURNTRANSFER] => 1 
    [CURLOPT_SSL_VERIFYHOST] => 2 
    [CURLOPT_SSL_VERIFYPEER] => 1 
    [CURLOPT_TIMEOUT] => 5 
    [CURLOPT_URL] => https://<...>:<...>@test-shop-422.myshopify.com/admin/variants/26020635016.json 
    [CURLOPT_USERAGENT] => Mozilla/5.0 
) 

生の応答:ここ

HTTP/1.1 400 Bad Request 
Server: nginx 
Date: Wed, 12 Oct 2016 01:23:05 GMT 
Content-Type: application/json; charset=utf-8 
Transfer-Encoding: chunked 
Connection: keep-alive 
X-Frame-Options: DENY 
X-ShopId: 9690230 
X-ShardId: 7 
X-Shopify-Shop-Api-Call-Limit: 1/40 
HTTP_X_SHOPIFY_SHOP_API_CALL_LIMIT: 1/40 
X-Stats-UserId: 0 
X-Stats-ApiClientId: 1444946 
X-Stats-ApiPermissionId: 31937062 
X-XSS-Protection: 1; mode=block; report=/xss-report/<...>?source%5Baction%5D=update&source%5Bcontroller%5D=admin%2Fproduct_variants&source%5Bsection%5D=admin 
X-Request-Id: <...> 
X-Dc: chi2 
X-Download-Options: noopen 
X-Permitted-Cross-Domain-Policies: none 
X-Content-Type-Options: nosniff 

{"errors":{"variant":"Required parameter missing or invalid"}} 
+0

あなたが使用している2つの在庫フィールドの代わりに 'inventory_quantity_adjustment'を試してください。 – HymnZ

+0

@HymnZ:ありがとう、助けなかった...生のオプションと応答を表示するように投稿を更新しました – Unirgy

答えて

2

はcURLを持つPHPの例です。

<?php 
$ch = curl_init("https://key:[email protected]/admin/variants/25930937097.json"); 
$variant = array('variant' => 
    array(
     'inventory_quantity' => 2, 
     'old_inventory_quantity' => 1 
    ) 
); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($variant)); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json")); 
$response = curl_exec($ch); 
print_r($response); 

まだ問題が解決しない場合は、コードを共有してもよろしいですか?

+0

ありがとう、これは私がやったやり方でした...私は投稿を更新して、オプティマイズとレスポンスを表示しました。 – Unirgy

+0

@Josh Brown私は私のように資格情報をコピーして変更するだけですが、応答やエラーではなく何も返さない –

0

CURLOPT_PUTまたはCURLOPT_POSTを使用している場合、カールはContent-Typeヘッダーをオーバーライドします。これらを削除し、CURLOPT_CUSTOMREQUESTを使用する必要があります。